From 3ef35105c88c7ea44dfa52229b055deb7a45dcf3 Mon Sep 17 00:00:00 2001 From: threeandthreee Date: Tue, 29 Apr 2025 22:27:54 -0400 Subject: [PATCH 001/183] LADX: Remove copyrighted assets (#4935) --- LinksAwakeningClient.py | 26 +++++++------------------- data/sprites/ladx/Bowwow.bdiff | Bin 7354 -> 0 bytes data/sprites/ladx/Bunny.bdiff | Bin 3083 -> 0 bytes data/sprites/ladx/Luigi.bdiff | Bin 13112 -> 0 bytes data/sprites/ladx/Mario.bdiff | Bin 9025 -> 0 bytes data/sprites/ladx/Richard.bdiff | Bin 8207 -> 0 bytes data/sprites/ladx/Tarin.bdiff | Bin 8309 -> 0 bytes 7 files changed, 7 insertions(+), 19 deletions(-) delete mode 100644 data/sprites/ladx/Bowwow.bdiff delete mode 100644 data/sprites/ladx/Bunny.bdiff delete mode 100644 data/sprites/ladx/Luigi.bdiff delete mode 100644 data/sprites/ladx/Mario.bdiff delete mode 100644 data/sprites/ladx/Richard.bdiff delete mode 100644 data/sprites/ladx/Tarin.bdiff diff --git a/LinksAwakeningClient.py b/LinksAwakeningClient.py index 69f50938d2fb..16896540d664 100644 --- a/LinksAwakeningClient.py +++ b/LinksAwakeningClient.py @@ -52,22 +52,6 @@ class BadRetroArchResponse(GameboyException): pass -def magpie_logo(): - from kivy.uix.image import CoreImage - binary_data = """ -iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXN -SR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA -7DAcdvqGQAAADGSURBVDhPhVLBEcIwDHOYhjHCBuXHj2OTbAL8+ -MEGZIxOQ1CinOOk0Op0bmo7tlXXeR9FJMYDLOD9mwcLjQK7+hSZ -wgcWMZJOAGeGKtChNHFL0j+FZD3jSCuo0w7l03wDrWdg00C4/aW -eDEYNenuzPOfPspBnxf0kssE80vN0L8361j10P03DK4x6FHabuV -ear8fHme+b17rwSjbAXeUMLb+EVTV2QHm46MWQanmnydA98KsVS -XkV+qFpGQXrLhT/fqraQeQLuplpNH5g+WkAAAAASUVORK5CYII=""" - binary_data = base64.b64decode(binary_data) - data = io.BytesIO(binary_data) - return CoreImage(data, ext="png").texture - - class LAClientConstants: # Connector version VERSION = 0x01 @@ -530,7 +514,9 @@ def __init__(self, server_address: typing.Optional[str], password: typing.Option def run_gui(self) -> None: import webbrowser - from kvui import GameManager, ImageButton + from kvui import GameManager + from kivy.metrics import dp + from kivymd.uix.button import MDButton, MDButtonText class LADXManager(GameManager): logging_pairs = [ @@ -543,8 +529,10 @@ def build(self): b = super().build() if self.ctx.magpie_enabled: - button = ImageButton(texture=magpie_logo(), fit_mode="cover", image_size=(32, 32), size_hint_x=None, - on_press=lambda _: webbrowser.open('https://magpietracker.us/?enable_autotracker=1')) + button = MDButton(MDButtonText(text="Open Tracker"), style="filled", size=(dp(100), dp(70)), radius=5, + size_hint_x=None, size_hint_y=None, pos_hint={"center_y": 0.55}, + on_press=lambda _: webbrowser.open('https://magpietracker.us/?enable_autotracker=1')) + button.height = self.server_connect_bar.height self.connect_layout.add_widget(button) return b diff --git a/data/sprites/ladx/Bowwow.bdiff b/data/sprites/ladx/Bowwow.bdiff deleted file mode 100644 index bdfe9f42f23bf24c4ea8901ef9ba1dde5f4827a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7354 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 XNBPQyn4D6uElTZHxZ+2Vu diff --git a/data/sprites/ladx/Luigi.bdiff b/data/sprites/ladx/Luigi.bdiff deleted file mode 100644 index 1897a65d01463797e61e535ea26cb79882f42171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13112 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 diff --git a/data/sprites/ladx/Mario.bdiff b/data/sprites/ladx/Mario.bdiff deleted file mode 100644 index 389fa94ab12862aef4cb035ff2ae688704ed25bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9025 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 Date: Wed, 30 Apr 2025 03:57:35 +0100 Subject: [PATCH 002/183] SM: Fix FakeROM instances sharing the same data dictionary (#4912) FakeROM instances were being created with default arguments, which included a mutable default argument data dictionary, so all FakeROM instances would be writing to and reading the same dictionary, resulting in broken patch data in multiworlds with more than one Super Metroid world. --- worlds/sm/variaRandomizer/rom/rom.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/worlds/sm/variaRandomizer/rom/rom.py b/worlds/sm/variaRandomizer/rom/rom.py index f0f37b76a37e..05218ff52a58 100644 --- a/worlds/sm/variaRandomizer/rom/rom.py +++ b/worlds/sm/variaRandomizer/rom/rom.py @@ -89,9 +89,12 @@ def fillToNextBank(self): class FakeROM(ROM): # to have the same code for real ROM and the webservice - def __init__(self, data={}): + def __init__(self, data=None): super(FakeROM, self).__init__() - self.data = data + if data is None: + self.data = {} + else: + self.data = data self.ipsPatches = [] def write(self, bytes): From 611e1c2b1928ba3ffda7bbef2bae33c4ac1a056d Mon Sep 17 00:00:00 2001 From: PoryGone <98504756+PoryGone@users.noreply.github.com> Date: Wed, 30 Apr 2025 10:24:10 -0400 Subject: [PATCH 003/183] SMW: v2.1 Feature Update (#4652) ### Features: - Trap Link - When you receive a trap, you send a copy of it to every other player with Trap Link enabled - Ring Link - Any coin amounts gained and lost by a linked player will be instantly shared with all other active linked players Co-authored-by: TheLX5 --- worlds/smw/CHANGELOG.md | 9 ++ worlds/smw/Client.py | 225 +++++++++++++++++++++++++++++++++--- worlds/smw/Items.py | 46 ++++++++ worlds/smw/Names/TextBox.py | 25 ++++ worlds/smw/Options.py | 16 +++ worlds/smw/Rom.py | 6 +- worlds/smw/__init__.py | 13 +++ 7 files changed, 320 insertions(+), 20 deletions(-) diff --git a/worlds/smw/CHANGELOG.md b/worlds/smw/CHANGELOG.md index 7f62997adcef..f1e031197c9f 100644 --- a/worlds/smw/CHANGELOG.md +++ b/worlds/smw/CHANGELOG.md @@ -1,6 +1,15 @@ # Super Mario World - Changelog +## v2.1 + +### Features: +- Trap Link + - When you receive a trap, you send a copy of it to every other player with Trap Link enabled +- Ring Link + - Any coin amounts gained and lost by a linked player will be instantly shared with all other active linked players + + ## v2.0 ### Features: diff --git a/worlds/smw/Client.py b/worlds/smw/Client.py index 600e1bff8304..85524eb7ad41 100644 --- a/worlds/smw/Client.py +++ b/worlds/smw/Client.py @@ -1,9 +1,11 @@ import logging import time +from typing import Any -from NetUtils import ClientStatus, color +from NetUtils import ClientStatus, NetworkItem, color from worlds.AutoSNIClient import SNIClient -from .Names.TextBox import generate_received_text +from .Names.TextBox import generate_received_text, generate_received_trap_link_text +from .Items import trap_value_to_name, trap_name_to_value snes_logger = logging.getLogger("SNES") @@ -42,10 +44,13 @@ SMW_HIDDEN_1UP_ACTIVE_ADDR = ROM_START + 0x01BFA9 SMW_BONUS_BLOCK_ACTIVE_ADDR = ROM_START + 0x01BFAA SMW_BLOCKSANITY_ACTIVE_ADDR = ROM_START + 0x01BFAB +SMW_TRAP_LINK_ACTIVE_ADDR = ROM_START + 0x01BFB7 +SMW_RING_LINK_ACTIVE_ADDR = ROM_START + 0x01BFB8 SMW_GAME_STATE_ADDR = WRAM_START + 0x100 SMW_MARIO_STATE_ADDR = WRAM_START + 0x71 +SMW_COIN_COUNT_ADDR = WRAM_START + 0xDBF SMW_BOSS_STATE_ADDR = WRAM_START + 0xD9B SMW_ACTIVE_BOSS_ADDR = WRAM_START + 0x13FC SMW_CURRENT_LEVEL_ADDR = WRAM_START + 0x13BF @@ -76,6 +81,7 @@ class SMWSNIClient(SNIClient): game = "Super Mario World" patch_suffix = ".apsmw" + slot_data: dict[str, Any] | None async def deathlink_kill_player(self, ctx): from SNIClient import DeathState, snes_buffered_write, snes_flush_writes, snes_read @@ -111,6 +117,84 @@ async def deathlink_kill_player(self, ctx): ctx.last_death_link = time.time() + def on_package(self, ctx: SNIClient, cmd: str, args: dict[str, Any]) -> None: + super().on_package(ctx, cmd, args) + + if cmd == "Connected": + self.slot_data = args.get("slot_data", None) + + if cmd != "Bounced": + return + if "tags" not in args: + return + + if not hasattr(self, "instance_id"): + self.instance_id = time.time() + + source_name = args["data"]["source"] + if "TrapLink" in ctx.tags and "TrapLink" in args["tags"] and source_name != ctx.slot_info[ctx.slot].name: + trap_name: str = args["data"]["trap_name"] + if trap_name not in trap_name_to_value: + # We don't know how to handle this trap, ignore it + return + + trap_id: int = trap_name_to_value[trap_name] + + if "trap_weights" not in self.slot_data: + return + + if f"{trap_id}" not in self.slot_data["trap_weights"]: + return + + if self.slot_data["trap_weights"][f"{trap_id}"] == 0: + # The player disabled this trap type + return + + self.priority_trap = NetworkItem(trap_id, None, None) + self.priority_trap_message = generate_received_trap_link_text(trap_name, source_name) + self.priority_trap_message_str = f"Received linked {trap_name} from {source_name}" + elif "RingLink" in ctx.tags and "RingLink" in args["tags"] and source_name != self.instance_id: + if not hasattr(self, "pending_ring_link"): + self.pending_ring_link = 0 + self.pending_ring_link += args["data"]["amount"] + + async def send_trap_link(self, ctx: SNIClient, trap_name: str): + if "TrapLink" not in ctx.tags or ctx.slot == None: + return + + await ctx.send_msgs([{ + "cmd": "Bounce", "tags": ["TrapLink"], + "data": { + "time": time.time(), + "source": ctx.player_names[ctx.slot], + "trap_name": trap_name + } + }]) + snes_logger.info(f"Sent linked {trap_name}") + + async def send_ring_link(self, ctx: SNIClient, amount: int): + from SNIClient import DeathState, snes_buffered_write, snes_flush_writes, snes_read + + if "RingLink" not in ctx.tags or ctx.slot == None: + return + + game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1) + if game_state[0] != 0x14: + return + + if not hasattr(self, "instance_id"): + self.instance_id = time.time() + + await ctx.send_msgs([{ + "cmd": "Bounce", "tags": ["RingLink"], + "data": { + "time": time.time(), + "source": self.instance_id, + "amount": amount + } + }]) + + async def validate_rom(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read @@ -123,9 +207,11 @@ async def validate_rom(self, ctx): receive_option = await snes_read(ctx, SMW_RECEIVE_MSG_DATA, 0x1) send_option = await snes_read(ctx, SMW_SEND_MSG_DATA, 0x1) + trap_link = await snes_read(ctx, SMW_TRAP_LINK_ACTIVE_ADDR, 0x1) ctx.receive_option = receive_option[0] ctx.send_option = send_option[0] + ctx.trap_link = trap_link[0] ctx.allow_collect = True @@ -133,6 +219,15 @@ async def validate_rom(self, ctx): if death_link: await ctx.update_death_link(bool(death_link[0] & 0b1)) + if trap_link and bool(trap_link[0] & 0b1) and "TrapLink" not in ctx.tags: + ctx.tags.add("TrapLink") + await ctx.send_msgs([{"cmd": "ConnectUpdate", "tags": ctx.tags}]) + + ring_link = await snes_read(ctx, SMW_RING_LINK_ACTIVE_ADDR, 1) + if ring_link and bool(ring_link[0] & 0b1) and "RingLink" not in ctx.tags: + ctx.tags.add("RingLink") + await ctx.send_msgs([{"cmd": "ConnectUpdate", "tags": ctx.tags}]) + if ctx.rom != rom_name: ctx.current_sublevel_value = 0 @@ -142,12 +237,17 @@ async def validate_rom(self, ctx): def add_message_to_queue(self, new_message): - if not hasattr(self, "message_queue"): self.message_queue = [] self.message_queue.append(new_message) + def add_message_to_queue_front(self, new_message): + if not hasattr(self, "message_queue"): + self.message_queue = [] + + self.message_queue.insert(0, new_message) + async def handle_message_queue(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read @@ -206,7 +306,8 @@ def should_show_message(self, ctx, next_item): async def handle_trap_queue(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read - if not hasattr(self, "trap_queue") or len(self.trap_queue) == 0: + if (not hasattr(self, "trap_queue") or len(self.trap_queue) == 0) and\ + (not hasattr(self, "priority_trap") or self.priority_trap == 0): return game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1) @@ -221,7 +322,24 @@ async def handle_trap_queue(self, ctx): if pause_state[0] != 0x00: return - next_trap, message = self.trap_queue.pop(0) + + next_trap = None + message = bytearray() + message_str = "" + from_queue = False + + if getattr(self, "priority_trap", None) and self.priority_trap.item != 0: + next_trap = self.priority_trap + message = self.priority_trap_message + message_str = self.priority_trap_message_str + self.priority_trap = None + self.priority_trap_message = bytearray() + self.priority_trap_message_str = "" + elif hasattr(self, "trap_queue") and len(self.trap_queue) > 0: + from_queue = True + next_trap, message = self.trap_queue.pop(0) + else: + return from .Rom import trap_rom_data if next_trap.item in trap_rom_data: @@ -231,16 +349,22 @@ async def handle_trap_queue(self, ctx): # Timer Trap if trap_active[0] == 0 or (trap_active[0] == 1 and trap_active[1] == 0 and trap_active[2] == 0): # Trap already active - self.add_trap_to_queue(next_trap, message) + if from_queue: + self.add_trap_to_queue(next_trap, message) return else: + if len(message_str) > 0: + snes_logger.info(message_str) + if "TrapLink" in ctx.tags and from_queue: + await self.send_trap_link(ctx, trap_value_to_name[next_trap.item]) snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0], bytes([0x01])) snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0] + 1, bytes([0x00])) snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0] + 2, bytes([0x00])) else: if trap_active[0] > 0: # Trap already active - self.add_trap_to_queue(next_trap, message) + if from_queue: + self.add_trap_to_queue(next_trap, message) return else: if next_trap.item == 0xBC001D: @@ -248,12 +372,18 @@ async def handle_trap_queue(self, ctx): # Do not fire if the previous thwimp hasn't reached the player's Y pos active_thwimp = await snes_read(ctx, SMW_ACTIVE_THWIMP_ADDR, 0x1) if active_thwimp[0] != 0xFF: - self.add_trap_to_queue(next_trap, message) + if from_queue: + self.add_trap_to_queue(next_trap, message) return verify_game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1) if verify_game_state[0] == 0x14 and len(trap_rom_data[next_trap.item]) > 2: snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([trap_rom_data[next_trap.item][2]])) + if len(message_str) > 0: + snes_logger.info(message_str) + if "TrapLink" in ctx.tags and from_queue: + await self.send_trap_link(ctx, trap_value_to_name[next_trap.item]) + new_item_count = trap_rom_data[next_trap.item][1] snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0], bytes([new_item_count])) @@ -270,9 +400,75 @@ async def handle_trap_queue(self, ctx): return if self.should_show_message(ctx, next_trap): + self.add_message_to_queue_front(message) + elif next_trap.item == 0xBC0015: + if self.should_show_message(ctx, next_trap): + self.add_message_to_queue_front(message) + if len(message_str) > 0: + snes_logger.info(message_str) + if "TrapLink" in ctx.tags and from_queue: + await self.send_trap_link(ctx, trap_value_to_name[next_trap.item]) + + # Handle Literature Trap + from .Names.LiteratureTrap import lit_trap_text_list + import random + rand_trap = random.choice(lit_trap_text_list) + + for message in rand_trap: self.add_message_to_queue(message) + async def handle_ring_link(self, ctx): + from SNIClient import snes_buffered_write, snes_flush_writes, snes_read + + if "RingLink" not in ctx.tags: + return + + if not hasattr(self, "prev_coins"): + self.prev_coins = 0 + + curr_coins_byte = await snes_read(ctx, SMW_COIN_COUNT_ADDR, 0x1) + curr_coins = curr_coins_byte[0] + + if curr_coins < self.prev_coins: + # Coins rolled over from 1-Up + curr_coins += 100 + + coins_diff = curr_coins - self.prev_coins + if coins_diff > 0: + await self.send_ring_link(ctx, coins_diff) + self.prev_coins = curr_coins % 100 + + new_coins = curr_coins + if not hasattr(self, "pending_ring_link"): + self.pending_ring_link = 0 + + if self.pending_ring_link != 0: + new_coins += self.pending_ring_link + new_coins = max(new_coins, 0) + + new_1_ups = 0 + while new_coins >= 100: + new_1_ups += 1 + new_coins -= 100 + + if new_1_ups > 0: + curr_lives_inc_byte = await snes_read(ctx, WRAM_START + 0x18E4, 0x1) + curr_lives_inc = curr_lives_inc_byte[0] + new_lives_inc = curr_lives_inc + new_1_ups + snes_buffered_write(ctx, WRAM_START + 0x18E4, bytes([new_lives_inc])) + + snes_buffered_write(ctx, SMW_COIN_COUNT_ADDR, bytes([new_coins])) + if self.pending_ring_link > 0: + snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([0x01])) + else: + snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([0x2A])) + self.pending_ring_link = 0 + self.prev_coins = new_coins + + await snes_flush_writes(ctx) + + async def game_watcher(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read @@ -333,6 +529,7 @@ async def game_watcher(self, ctx): await self.handle_message_queue(ctx) await self.handle_trap_queue(ctx) + await self.handle_ring_link(ctx) new_checks = [] event_data = await snes_read(ctx, SMW_EVENT_ROM_DATA, 0x60) @@ -506,7 +703,7 @@ async def game_watcher(self, ctx): ctx.location_names.lookup_in_slot(item.location, item.player), recv_index, len(ctx.items_received))) if self.should_show_message(ctx, item): - if item.item != 0xBC0012 and item.item not in trap_rom_data: + if item.item != 0xBC0012 and item.item != 0xBC0015 and item.item not in trap_rom_data: # Don't send messages for Boss Tokens item_name = ctx.item_names.lookup_in_game(item.item) player_name = ctx.player_names[item.player] @@ -515,7 +712,7 @@ async def game_watcher(self, ctx): self.add_message_to_queue(receive_message) snes_buffered_write(ctx, SMW_RECV_PROGRESS_ADDR, bytes([recv_index&0xFF, (recv_index>>8)&0xFF])) - if item.item in trap_rom_data: + if item.item in trap_rom_data or item.item == 0xBC0015: item_name = ctx.item_names.lookup_in_game(item.item) player_name = ctx.player_names[item.player] @@ -572,14 +769,6 @@ async def game_watcher(self, ctx): else: # Extra Powerup? pass - elif item.item == 0xBC0015: - # Handle Literature Trap - from .Names.LiteratureTrap import lit_trap_text_list - import random - rand_trap = random.choice(lit_trap_text_list) - - for message in rand_trap: - self.add_message_to_queue(message) await snes_flush_writes(ctx) diff --git a/worlds/smw/Items.py b/worlds/smw/Items.py index eaf58b9b8e4e..e5f5c2722373 100644 --- a/worlds/smw/Items.py +++ b/worlds/smw/Items.py @@ -75,3 +75,49 @@ class SMWItem(Item): } lookup_id_to_name: typing.Dict[int, str] = {data.code: item_name for item_name, data in item_table.items() if data.code} + + +trap_value_to_name: typing.Dict[int, str] = { + 0xBC0013: ItemName.ice_trap, + 0xBC0014: ItemName.stun_trap, + 0xBC0015: ItemName.literature_trap, + 0xBC0016: ItemName.timer_trap, + 0xBC001C: ItemName.reverse_controls_trap, + 0xBC001D: ItemName.thwimp_trap, +} + +trap_name_to_value: typing.Dict[str, int] = { + # Our native Traps + ItemName.ice_trap: 0xBC0013, + ItemName.stun_trap: 0xBC0014, + ItemName.literature_trap: 0xBC0015, + ItemName.timer_trap: 0xBC0016, + ItemName.reverse_controls_trap: 0xBC001C, + ItemName.thwimp_trap: 0xBC001D, + + # Common other trap names + "Chaos Control Trap": 0xBC0014, # Stun Trap + "Confuse Trap": 0xBC001C, # Reverse Trap + "Exposition Trap": 0xBC0015, # Literature Trap + "Cutscene Trap": 0xBC0015, # Literature Trap + "Freeze Trap": 0xBC0014, # Stun Trap + "Frozen Trap": 0xBC0014, # Stun Trap + "Paralyze Trap": 0xBC0014, # Stun Trap + "Reversal Trap": 0xBC001C, # Reverse Trap + "Fuzzy Trap": 0xBC001C, # Reverse Trap + "Confound Trap": 0xBC001C, # Reverse Trap + "Confusion Trap": 0xBC001C, # Reverse Trap + "Police Trap": 0xBC001D, # Thwimp Trap + "Buyon Trap": 0xBC001D, # Thwimp Trap + "Gooey Bag": 0xBC001D, # Thwimp Trap + "TNT Barrel Trap": 0xBC001D, # Thwimp Trap + "Honey Trap": 0xBC0014, # Stun Trap + "Screen Flip Trap": 0xBC001C, # Reverse Trap + "Banana Trap": 0xBC0013, # Ice Trap + "Bomb": 0xBC001D, # Thwimp Trap + "Bonk Trap": 0xBC0014, # Stun Trap + "Ghost": 0xBC001D, # Thwimp Trap + "Fast Trap": 0xBC0016, # Timer Trap + "Nut Trap": 0xBC001D, # Thwimp Trap + "Army Trap": 0xBC001D, # Thwimp Trap +} diff --git a/worlds/smw/Names/TextBox.py b/worlds/smw/Names/TextBox.py index 2302a5f85fc9..fef04627b6e5 100644 --- a/worlds/smw/Names/TextBox.py +++ b/worlds/smw/Names/TextBox.py @@ -117,6 +117,31 @@ def generate_received_text(item_name: str, player_name: str): return out_array +def generate_received_trap_link_text(item_name: str, player_name: str): + out_array = bytearray() + + item_name = item_name[:18] + player_name = player_name[:18] + + item_buffer = max(0, math.floor((18 - len(item_name)) / 2)) + player_buffer = max(0, math.floor((18 - len(player_name)) / 2)) + + out_array += bytearray([0x9F, 0x9F]) + out_array += string_to_bytes(" Received linked") + out_array[-1] += 0x80 + out_array += bytearray([0x1F] * item_buffer) + out_array += string_to_bytes(item_name) + out_array[-1] += 0x80 + out_array += string_to_bytes(" from") + out_array[-1] += 0x80 + out_array += bytearray([0x1F] * player_buffer) + out_array += string_to_bytes(player_name) + out_array[-1] += 0x80 + out_array += bytearray([0x9F, 0x9F]) + + return out_array + + def generate_sent_text(item_name: str, player_name: str): out_array = bytearray() diff --git a/worlds/smw/Options.py b/worlds/smw/Options.py index 545b3c931b42..1dcfb16b85e2 100644 --- a/worlds/smw/Options.py +++ b/worlds/smw/Options.py @@ -398,6 +398,20 @@ class StartingLifeCount(Range): default = 5 +class RingLink(Toggle): + """ + Whether your in-level coin gain/loss is linked to other players + """ + display_name = "Ring Link" + + +class TrapLink(Toggle): + """ + Whether your received traps are linked to other players + """ + display_name = "Trap Link" + + smw_option_groups = [ OptionGroup("Goal Options", [ Goal, @@ -447,6 +461,8 @@ class StartingLifeCount(Range): @dataclass class SMWOptions(PerGameCommonOptions): death_link: DeathLink + ring_link: RingLink + trap_link: TrapLink goal: Goal bosses_required: BossesRequired max_yoshi_egg_cap: NumberOfYoshiEggs diff --git a/worlds/smw/Rom.py b/worlds/smw/Rom.py index ff3b5c31634d..9016e14def91 100644 --- a/worlds/smw/Rom.py +++ b/worlds/smw/Rom.py @@ -719,8 +719,8 @@ def handle_vertical_scroll(rom): 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, # Levels 0D0-0DF 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, # Levels 0E0-0EF 0x02, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, # Levels 0F0-0FF - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, # Levels 100-10F - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 110-11F + 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, # Levels 100-10F + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, # Levels 110-11F 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 120-12F 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 130-13F 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 140-14F @@ -3160,6 +3160,8 @@ def patch_rom(world: World, rom, player, active_level_dict): rom.write_byte(0x01BFA9, world.options.hidden_1up_checks.value) rom.write_byte(0x01BFAA, world.options.bonus_block_checks.value) rom.write_byte(0x01BFAB, world.options.blocksanity.value) + rom.write_byte(0x01BFB7, world.options.trap_link.value) + rom.write_byte(0x01BFB8, world.options.ring_link.value) from Utils import __version__ diff --git a/worlds/smw/__init__.py b/worlds/smw/__init__.py index 97fc84f003a0..56ca82abb25c 100644 --- a/worlds/smw/__init__.py +++ b/worlds/smw/__init__.py @@ -90,6 +90,7 @@ def fill_slot_data(self) -> dict: "blocksanity", ) slot_data["active_levels"] = self.active_level_dict + slot_data["trap_weights"] = self.output_trap_weights() return slot_data @@ -322,3 +323,15 @@ def get_filler_item_name(self) -> str: def set_rules(self): set_rules(self) + + def output_trap_weights(self) -> dict[int, int]: + trap_data = {} + + trap_data[0xBC0013] = self.options.ice_trap_weight.value + trap_data[0xBC0014] = self.options.stun_trap_weight.value + trap_data[0xBC0015] = self.options.literature_trap_weight.value + trap_data[0xBC0016] = self.options.timer_trap_weight.value + trap_data[0xBC001C] = self.options.reverse_trap_weight.value + trap_data[0xBC001D] = self.options.thwimp_trap_weight.value + + return trap_data From 227f0bce3d8c904a153d993da2da27b26b63aac6 Mon Sep 17 00:00:00 2001 From: Bryce Wilson Date: Wed, 30 Apr 2025 07:31:33 -0700 Subject: [PATCH 004/183] Pokemon Red/Blue: Convert to Procedure Patch (#4801) --- worlds/pokemon_rb/__init__.py | 16 +- worlds/pokemon_rb/pokemon.py | 21 +- worlds/pokemon_rb/rock_tunnel.py | 87 +++-- worlds/pokemon_rb/rom.py | 541 +++++++++++++++---------------- 4 files changed, 335 insertions(+), 330 deletions(-) diff --git a/worlds/pokemon_rb/__init__.py b/worlds/pokemon_rb/__init__.py index 644aa1ed9cab..6bf66a11064a 100644 --- a/worlds/pokemon_rb/__init__.py +++ b/worlds/pokemon_rb/__init__.py @@ -18,7 +18,7 @@ from .options import PokemonRBOptions from .rom_addresses import rom_addresses from .text import encode_text -from .rom import generate_output, get_base_rom_bytes, get_base_rom_path, RedDeltaPatch, BlueDeltaPatch +from .rom import generate_output, PokemonRedProcedurePatch, PokemonBlueProcedurePatch from .pokemon import process_pokemon_data, process_move_data, verify_hm_moves from .encounters import process_pokemon_locations, process_trainer_data from .rules import set_rules @@ -33,12 +33,12 @@ class RedRomFile(settings.UserFilePath): """File names of the Pokemon Red and Blue roms""" description = "Pokemon Red (UE) ROM File" copy_to = "Pokemon Red (UE) [S][!].gb" - md5s = [RedDeltaPatch.hash] + md5s = [PokemonRedProcedurePatch.hash] class BlueRomFile(settings.UserFilePath): description = "Pokemon Blue (UE) ROM File" copy_to = "Pokemon Blue (UE) [S][!].gb" - md5s = [BlueDeltaPatch.hash] + md5s = [PokemonBlueProcedurePatch.hash] red_rom_file: RedRomFile = RedRomFile(RedRomFile.copy_to) blue_rom_file: BlueRomFile = BlueRomFile(BlueRomFile.copy_to) @@ -113,16 +113,6 @@ def __init__(self, multiworld: MultiWorld, player: int): self.local_locs = [] self.pc_item = None - @classmethod - def stage_assert_generate(cls, multiworld: MultiWorld): - versions = set() - for player in multiworld.player_ids: - if multiworld.worlds[player].game == "Pokemon Red and Blue": - versions.add(multiworld.worlds[player].options.game_version.current_key) - for version in versions: - if not os.path.exists(get_base_rom_path(version)): - raise FileNotFoundError(get_base_rom_path(version)) - @classmethod def stage_generate_early(cls, multiworld: MultiWorld): diff --git a/worlds/pokemon_rb/pokemon.py b/worlds/pokemon_rb/pokemon.py index 32c0e36869da..e5d161a43310 100644 --- a/worlds/pokemon_rb/pokemon.py +++ b/worlds/pokemon_rb/pokemon.py @@ -1,9 +1,17 @@ from copy import deepcopy +import typing + +from worlds.Files import APTokenTypes + from . import poke_data, logic from .rom_addresses import rom_addresses +if typing.TYPE_CHECKING: + from . import PokemonRedBlueWorld + from .rom import PokemonRedProcedurePatch, PokemonBlueProcedurePatch + -def set_mon_palettes(world, random, data): +def set_mon_palettes(world: "PokemonRedBlueWorld", patch: "PokemonRedProcedurePatch | PokemonBlueProcedurePatch"): if world.options.randomize_pokemon_palettes == "vanilla": return pallet_map = { @@ -31,12 +39,9 @@ def set_mon_palettes(world, random, data): poke_data.evolves_from and poke_data.evolves_from[mon] != "Eevee"): pallet = palettes[-1] else: # completely_random or follow_evolutions and it is not an evolved form (except eeveelutions) - pallet = random.choice(list(pallet_map.values())) + pallet = world.random.choice(list(pallet_map.values())) palettes.append(pallet) - address = rom_addresses["Mon_Palettes"] - for pallet in palettes: - data[address] = pallet - address += 1 + patch.write_token(APTokenTypes.WRITE, rom_addresses["Mon_Palettes"], bytes(palettes)) def choose_forced_type(chances, random): @@ -253,9 +258,9 @@ def process_pokemon_data(self): mon_data[f"start move {i}"] = learnsets[mon].pop(0) if self.options.randomize_pokemon_catch_rates: - mon_data["catch rate"] = self.random.randint(self.options.minimum_catch_rate, 255) + mon_data["catch rate"] = self.random.randint(self.options.minimum_catch_rate.value, 255) else: - mon_data["catch rate"] = max(self.options.minimum_catch_rate, mon_data["catch rate"]) + mon_data["catch rate"] = max(self.options.minimum_catch_rate.value, mon_data["catch rate"]) def roll_tm_compat(roll_move): if self.local_move_data[roll_move]["type"] in [mon_data["type1"], mon_data["type2"]]: diff --git a/worlds/pokemon_rb/rock_tunnel.py b/worlds/pokemon_rb/rock_tunnel.py index 46b2be3040dc..83b59255c611 100644 --- a/worlds/pokemon_rb/rock_tunnel.py +++ b/worlds/pokemon_rb/rock_tunnel.py @@ -1,5 +1,55 @@ +import random +import typing + +from worlds.Files import APTokenTypes + from .rom_addresses import rom_addresses +if typing.TYPE_CHECKING: + from .rom import PokemonBlueProcedurePatch, PokemonRedProcedurePatch + + +layout1F = [ + [20, 22, 32, 34, 20, 25, 22, 32, 34, 20, 25, 25, 25, 22, 20, 25, 22, 2, 2, 2], + [24, 26, 40, 1, 24, 25, 26, 62, 1, 28, 29, 29, 29, 30, 28, 29, 30, 1, 40, 2], + [28, 30, 1, 1, 28, 29, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 23], + [23, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 31], + [31, 1, 1, 1, 1, 1, 31, 32, 34, 2, 1, 1, 2, 32, 34, 32, 34, 1, 1, 23], + [23, 1, 1, 23, 1, 1, 23, 1, 40, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31], + [31, 1, 1, 31, 1, 1, 31, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23], + [23, 1, 1, 23, 1, 1, 1, 1, 1, 2, 32, 34, 32, 34, 32, 34, 32, 34, 2, 31], + [31, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 23, 1, 1, 40, 23], + [23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 31, 1, 1, 1, 31], + [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 23, 1, 1, 1, 23], + [23, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 31, 1, 1, 1, 31, 1, 1, 1, 31], + [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 23], + [ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 31], + [20, 21, 21, 21, 22, 42, 1, 1, 1, 1, 20, 21, 22, 1, 1, 1, 1, 1, 1, 23], + [24, 25, 25, 25, 26, 1, 1, 1, 1, 1, 24, 25, 26, 1, 1, 1, 1, 1, 1, 31], + [24, 25, 25, 25, 26, 1, 1, 62, 1, 1, 24, 25, 26, 20, 21, 21, 21, 21, 21, 22], + [28, 29, 29, 29, 30, 78, 81, 82, 77, 78, 28, 29, 30, 28, 29, 29, 29, 29, 29, 30], +] +layout2F = [ + [23, 2, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34], + [31, 62, 1, 23, 1, 1, 23, 1, 1, 1, 1, 1, 23, 62, 1, 1, 1, 1, 1, 2], + [23, 1, 1, 31, 1, 1, 31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 23, 1, 1, 23, 1, 1, 23, 1, 1, 23, 1, 1, 23, 23, 1, 1, 31], + [23, 1, 1, 31, 1, 1, 31, 1, 1, 31, 2, 2, 31, 1, 1, 31, 31, 1, 1, 23], + [31, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 62, 23, 1, 1, 1, 1, 1, 1, 31], + [23, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 23, 1, 1, 1, 1, 1, 23, 32, 34, 32, 34, 32, 34, 1, 1, 1, 31], + [23, 1, 1, 31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 23, 1, 1, 2, 1, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31], + [23, 1, 1, 31, 1, 1, 2, 1, 1, 31, 1, 1, 1, 32, 34, 32, 34, 32, 34, 23], + [31, 2, 2, 2, 1, 1, 32, 34, 32, 34, 1, 1, 1, 23, 1, 1, 1, 1, 1, 31], + [23, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 1, 31, 1, 1, 62, 1, 1, 23], + [31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 31], + [23, 32, 34, 32, 34, 32, 34, 1, 1, 32, 34, 32, 34, 31, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31], + [ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23], + [32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 2, 31] +] + disallowed1F = [[2, 2], [3, 2], [1, 8], [2, 8], [7, 7], [8, 7], [10, 4], [11, 4], [11, 12], [11, 13], [16, 10], [17, 10], [18, 10], [16, 12], [17, 12], [18, 12]] disallowed2F = [[16, 2], [17, 2], [18, 2], [15, 5], [15, 6], [10, 10], [11, 10], [12, 10], [7, 14], [8, 14], [1, 15], @@ -7,29 +57,12 @@ [11, 1]] -def randomize_rock_tunnel(data, random): - +def randomize_rock_tunnel(patch: "PokemonRedProcedurePatch | PokemonBlueProcedurePatch", random: random.Random): seed = random.randint(0, 999999999999999999) random.seed(seed) - map1f = [] - map2f = [] - - address = rom_addresses["Map_Rock_Tunnel1F"] - for y in range(0, 18): - row = [] - for x in range(0, 20): - row.append(data[address]) - address += 1 - map1f.append(row) - - address = rom_addresses["Map_Rock_TunnelB1F"] - for y in range(0, 18): - row = [] - for x in range(0, 20): - row.append(data[address]) - address += 1 - map2f.append(row) + map1f = [row.copy() for row in layout1F] + map2f = [row.copy() for row in layout2F] current_map = map1f @@ -305,14 +338,6 @@ def check_addable_block(check_map, disallowed): current_map = map2f check_addable_block(map2f, disallowed2F) - address = rom_addresses["Map_Rock_Tunnel1F"] - for y in map1f: - for x in y: - data[address] = x - address += 1 - address = rom_addresses["Map_Rock_TunnelB1F"] - for y in map2f: - for x in y: - data[address] = x - address += 1 - return seed \ No newline at end of file + patch.write_token(APTokenTypes.WRITE, rom_addresses["Map_Rock_Tunnel1F"], bytes([b for row in map1f for b in row])) + patch.write_token(APTokenTypes.WRITE, rom_addresses["Map_Rock_TunnelB1F"], bytes([b for row in map2f for b in row])) + return seed diff --git a/worlds/pokemon_rb/rom.py b/worlds/pokemon_rb/rom.py index 5ebd204c9abc..e49da82cc4f6 100644 --- a/worlds/pokemon_rb/rom.py +++ b/worlds/pokemon_rb/rom.py @@ -1,21 +1,66 @@ import os -import hashlib -import Utils -import bsdiff4 import pkgutil -from worlds.Files import APDeltaPatch -from .text import encode_text +import typing + +import Utils +from worlds.Files import APProcedurePatch, APTokenMixin, APTokenTypes + +from . import poke_data from .items import item_table +from .text import encode_text from .pokemon import set_mon_palettes +from .regions import PokemonRBWarp, map_ids, town_map_coords from .rock_tunnel import randomize_rock_tunnel from .rom_addresses import rom_addresses -from .regions import PokemonRBWarp, map_ids, town_map_coords -from . import poke_data +if typing.TYPE_CHECKING: + from . import PokemonRedBlueWorld + + +class PokemonRedProcedurePatch(APProcedurePatch, APTokenMixin): + game = "Pokemon Red and Blue" + hash = "3d45c1ee9abd5738df46d2bdda8b57dc" + patch_file_ending = ".apred" + result_file_ending = ".gb" + + procedure = [ + ("apply_bsdiff4", ["base_patch.bsdiff4"]), + ("apply_tokens", ["token_data.bin"]), + ] + + @classmethod + def get_source_data(cls) -> bytes: + from . import PokemonRedBlueWorld + with open(PokemonRedBlueWorld.settings.red_rom_file, "rb") as infile: + base_rom_bytes = bytes(infile.read()) + + return base_rom_bytes + + +class PokemonBlueProcedurePatch(APProcedurePatch, APTokenMixin): + game = "Pokemon Red and Blue" + hash = "50927e843568814f7ed45ec4f944bd8b" + patch_file_ending = ".apblue" + result_file_ending = ".gb" + + procedure = [ + ("apply_bsdiff4", ["base_patch.bsdiff4"]), + ("apply_tokens", ["token_data.bin"]), + ] + + @classmethod + def get_source_data(cls) -> bytes: + from . import PokemonRedBlueWorld + with open(PokemonRedBlueWorld.settings.blue_rom_file, "rb") as infile: + base_rom_bytes = bytes(infile.read()) + + return base_rom_bytes -def write_quizzes(world, data, random): - def get_quiz(q, a): +def write_quizzes(world: "PokemonRedBlueWorld", patch: PokemonBlueProcedurePatch | PokemonRedProcedurePatch): + random = world.random + + def get_quiz(q: int, a: int): if q == 0: r = random.randint(0, 3) if r == 0: @@ -122,13 +167,13 @@ def get_quiz(q, a): elif q2 == 1: if a: state = random.choice( - ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', - 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', - 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', - 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Jersey', 'New Mexico', - 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', - 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', - 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']) + ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", + "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", + "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", + "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Jersey", "New Mexico", + "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", + "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", + "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]) else: state = "New Hampshire" return encode_text( @@ -209,7 +254,7 @@ def get_quiz(q, a): return encode_text(f"{type1} deals{eff}damage to{type2} type?") elif q == 14: fossil_level = world.multiworld.get_location("Fossil Level - Trainer Parties", - world.player).party_data[0]['level'] + world.player).party_data[0]["level"] if not a: fossil_level += random.choice((-5, 5)) return encode_text(f"Fossil #MONrevive at level{fossil_level}?") @@ -224,46 +269,49 @@ def get_quiz(q, a): return encode_text(f"According toMonash Uni.,{fodmap} {are_is}considered highin FODMAPs?") answers = [random.randint(0, 1) for _ in range(6)] - questions = random.sample((range(0, 16)), 6) - - question_texts = [] + question_texts: list[bytearray] = [] for i, question in enumerate(questions): question_texts.append(get_quiz(question, answers[i])) for i, quiz in enumerate(["A", "B", "C", "D", "E", "F"]): - data[rom_addresses[f"Quiz_Answer_{quiz}"]] = int(not answers[i]) << 4 | (i + 1) - write_bytes(data, question_texts[i], rom_addresses[f"Text_Quiz_{quiz}"]) + patch.write_token(APTokenTypes.WRITE, rom_addresses[f"Quiz_Answer_{quiz}"], bytes([int(not answers[i]) << 4 | (i + 1)])) + patch.write_token(APTokenTypes.WRITE, rom_addresses[f"Text_Quiz_{quiz}"], bytes(question_texts[i])) -def generate_output(world, output_directory: str): - random = world.random +def generate_output(world: "PokemonRedBlueWorld", output_directory: str): game_version = world.options.game_version.current_key - data = bytes(get_base_rom_bytes(game_version)) - base_patch = pkgutil.get_data(__name__, f'basepatch_{game_version}.bsdiff4') + patch_type = PokemonBlueProcedurePatch if game_version == "blue" else PokemonRedProcedurePatch + patch = patch_type(player=world.player, player_name=world.player_name) + patch.write_file("base_patch.bsdiff4", pkgutil.get_data(__name__, f"basepatch_{game_version}.bsdiff4")) - data = bytearray(bsdiff4.patch(data, base_patch)) + def write_bytes(address: int, data: typing.Sequence[int] | int): + if isinstance(data, int): + data = bytes([data]) + else: + data = bytes(data) - basemd5 = hashlib.md5() - basemd5.update(data) + patch.write_token(APTokenTypes.WRITE, address, data) pallet_connections = {entrance: world.multiworld.get_entrance(f"Pallet Town to {entrance}", - world.player).connected_region.name for - entrance in ["Player's House 1F", "Oak's Lab", - "Rival's House"]} + world.player).connected_region.name + for entrance in ["Player's House 1F", "Oak's Lab", "Rival's House"]} paths = None + if pallet_connections["Player's House 1F"] == "Oak's Lab": - paths = ((0x00, 4, 0x80, 5, 0x40, 1, 0xE0, 1, 0xFF), (0x40, 2, 0x20, 5, 0x80, 5, 0xFF)) + paths = (bytes([0x00, 4, 0x80, 5, 0x40, 1, 0xE0, 1, 0xFF]), bytes([0x40, 2, 0x20, 5, 0x80, 5, 0xFF])) elif pallet_connections["Rival's House"] == "Oak's Lab": - paths = ((0x00, 4, 0xC0, 3, 0x40, 1, 0xE0, 1, 0xFF), (0x40, 2, 0x10, 3, 0x80, 5, 0xFF)) + paths = (bytes([0x00, 4, 0xC0, 3, 0x40, 1, 0xE0, 1, 0xFF]), bytes([0x40, 2, 0x10, 3, 0x80, 5, 0xFF])) + if paths: - write_bytes(data, paths[0], rom_addresses["Path_Pallet_Oak"]) - write_bytes(data, paths[1], rom_addresses["Path_Pallet_Player"]) + write_bytes(rom_addresses["Path_Pallet_Oak"], paths[0]) + write_bytes(rom_addresses["Path_Pallet_Player"], paths[1]) + if pallet_connections["Rival's House"] == "Player's House 1F": - write_bytes(data, [0x2F, 0xC7, 0x06, 0x0D, 0x00, 0x01], rom_addresses["Pallet_Fly_Coords"]) + write_bytes(rom_addresses["Pallet_Fly_Coords"], [0x2F, 0xC7, 0x06, 0x0D, 0x00, 0x01]) elif pallet_connections["Oak's Lab"] == "Player's House 1F": - write_bytes(data, [0x5F, 0xC7, 0x0C, 0x0C, 0x00, 0x00], rom_addresses["Pallet_Fly_Coords"]) + write_bytes(rom_addresses["Pallet_Fly_Coords"], [0x5F, 0xC7, 0x0C, 0x0C, 0x00, 0x00]) for region in world.multiworld.get_regions(world.player): for entrance in region.exits: @@ -281,16 +329,18 @@ def generate_output(world, output_directory: str): while i > len(warp_to_ids) - 1: i -= len(warp_to_ids) connected_map_name = entrance.connected_region.name.split("-")[0] - data[address] = 0 if "Elevator" in connected_map_name else warp_to_ids[i] - data[address + 1] = map_ids[connected_map_name] + write_bytes(address, [ + 0 if "Elevator" in connected_map_name else warp_to_ids[i], + map_ids[connected_map_name] + ]) if world.options.door_shuffle == "simple": for (entrance, _, _, map_coords_entries, map_name, _) in town_map_coords.values(): destination = world.multiworld.get_entrance(entrance, world.player).connected_region.name (_, x, y, _, _, map_order_entry) = town_map_coords[destination] for map_coord_entry in map_coords_entries: - data[rom_addresses["Town_Map_Coords"] + (map_coord_entry * 4) + 1] = (y << 4) | x - data[rom_addresses["Town_Map_Order"] + map_order_entry] = map_ids[map_name] + write_bytes(rom_addresses["Town_Map_Coords"] + (map_coord_entry * 4) + 1, (y << 4) | x) + write_bytes(rom_addresses["Town_Map_Order"] + map_order_entry, map_ids[map_name]) if not world.options.key_items_only: for i, gym_leader in enumerate(("Pewter Gym - Brock TM", "Cerulean Gym - Misty TM", @@ -302,13 +352,13 @@ def generate_output(world, output_directory: str): try: tm = int(item_name[2:4]) move = poke_data.moves[world.local_tms[tm - 1]]["id"] - data[rom_addresses["Gym_Leader_Moves"] + (2 * i)] = move + write_bytes(rom_addresses["Gym_Leader_Moves"] + (2 * i), move) except KeyError: pass def set_trade_mon(address, loc): mon = world.multiworld.get_location(loc, world.player).item.name - data[rom_addresses[address]] = poke_data.pokemon_data[mon]["id"] + write_bytes(rom_addresses[address], poke_data.pokemon_data[mon]["id"]) world.trade_mons[address] = mon if game_version == "red": @@ -325,141 +375,139 @@ def set_trade_mon(address, loc): set_trade_mon("Trade_Doris", "Cerulean Cave 1F - Wild Pokemon - 9") set_trade_mon("Trade_Crinkles", "Route 12 - Wild Pokemon - 4") - data[rom_addresses['Fly_Location']] = world.fly_map_code - data[rom_addresses['Map_Fly_Location']] = world.town_map_fly_map_code + write_bytes(rom_addresses["Fly_Location"], world.fly_map_code) + write_bytes(rom_addresses["Map_Fly_Location"], world.town_map_fly_map_code) if world.options.fix_combat_bugs: - data[rom_addresses["Option_Fix_Combat_Bugs"]] = 1 - data[rom_addresses["Option_Fix_Combat_Bugs_Focus_Energy"]] = 0x28 # jr z - data[rom_addresses["Option_Fix_Combat_Bugs_HP_Drain_Dream_Eater"]] = 0x1A # ld a, (de) - data[rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"]] = 0xe6 # and a, direct - data[rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"] + 1] = 0b0011111 - data[rom_addresses["Option_Fix_Combat_Bugs_Struggle"]] = 0xe6 # and a, direct - data[rom_addresses["Option_Fix_Combat_Bugs_Struggle"] + 1] = 0x3f - data[rom_addresses["Option_Fix_Combat_Bugs_Dig_Fly"]] = 0b10001100 - data[rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"]] = 0x20 # jr nz, - data[rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"] + 1] = 5 # 5 bytes ahead - data[rom_addresses["Option_Fix_Combat_Bugs_Heal_Stat_Modifiers"]] = 1 + write_bytes(rom_addresses["Option_Fix_Combat_Bugs"], 1) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Focus_Energy"], 0x28) # jr z + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_HP_Drain_Dream_Eater"], 0x1A) # ld a, (de) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"], 0xe6) # and a, direct + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"] + 1, 0b0011111) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Struggle"], 0xe6) # and a, direct + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Struggle"] + 1, 0x3f) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Dig_Fly"], 0b10001100) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"], 0x20) # jr nz, + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"] + 1, 5) # 5 bytes ahead + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Heal_Stat_Modifiers"], 1) if world.options.poke_doll_skip == "in_logic": - data[rom_addresses["Option_Silph_Scope_Skip"]] = 0x00 # nop - data[rom_addresses["Option_Silph_Scope_Skip"] + 1] = 0x00 # nop - data[rom_addresses["Option_Silph_Scope_Skip"] + 2] = 0x00 # nop + write_bytes(rom_addresses["Option_Silph_Scope_Skip"], 0x00) # nop + write_bytes(rom_addresses["Option_Silph_Scope_Skip"] + 1, 0x00) # nop + write_bytes(rom_addresses["Option_Silph_Scope_Skip"] + 2, 0x00) # nop if world.options.bicycle_gate_skips == "patched": - data[rom_addresses["Option_Route_16_Gate_Fix"]] = 0x00 # nop - data[rom_addresses["Option_Route_16_Gate_Fix"] + 1] = 0x00 # nop - data[rom_addresses["Option_Route_18_Gate_Fix"]] = 0x00 # nop - data[rom_addresses["Option_Route_18_Gate_Fix"] + 1] = 0x00 # nop + write_bytes(rom_addresses["Option_Route_16_Gate_Fix"], 0x00) # nop + write_bytes(rom_addresses["Option_Route_16_Gate_Fix"] + 1, 0x00) # nop + write_bytes(rom_addresses["Option_Route_18_Gate_Fix"], 0x00) # nop + write_bytes(rom_addresses["Option_Route_18_Gate_Fix"] + 1, 0x00) # nop if world.options.door_shuffle: - data[rom_addresses["Entrance_Shuffle_Fuji_Warp"]] = 1 # prevent warping to Fuji's House from Pokemon Tower 7F + write_bytes(rom_addresses["Entrance_Shuffle_Fuji_Warp"], 1) # prevent warping to Fuji's House from Pokemon Tower 7F if world.options.all_elevators_locked: - data[rom_addresses["Option_Locked_Elevator_Celadon"]] = 0x20 # jr nz - data[rom_addresses["Option_Locked_Elevator_Silph"]] = 0x20 # jr nz + write_bytes(rom_addresses["Option_Locked_Elevator_Celadon"], 0x20) # jr nz + write_bytes(rom_addresses["Option_Locked_Elevator_Silph"], 0x20) # jr nz if world.options.tea: - data[rom_addresses["Option_Tea"]] = 1 - data[rom_addresses["Guard_Drink_List"]] = 0x54 - data[rom_addresses["Guard_Drink_List"] + 1] = 0 - data[rom_addresses["Guard_Drink_List"] + 2] = 0 - write_bytes(data, encode_text("Gee, I have theworst caffeineheadache though." - "Oh wait there,the road's closed."), - rom_addresses["Text_Saffron_Gate"]) + write_bytes(rom_addresses["Option_Tea"], 1) + write_bytes(rom_addresses["Guard_Drink_List"], 0x54) + write_bytes(rom_addresses["Guard_Drink_List"] + 1, 0) + write_bytes(rom_addresses["Guard_Drink_List"] + 2, 0) + write_bytes(rom_addresses["Text_Saffron_Gate"], + encode_text("Gee, I have theworst caffeineheadache though." + "Oh wait there,the road's closed.")) - data[rom_addresses["Tea_Key_Item_A"]] = 0x28 # jr .z - data[rom_addresses["Tea_Key_Item_B"]] = 0x28 # jr .z - data[rom_addresses["Tea_Key_Item_C"]] = 0x28 # jr .z + write_bytes(rom_addresses["Tea_Key_Item_A"], 0x28) # jr .z + write_bytes(rom_addresses["Tea_Key_Item_B"], 0x28) # jr .z + write_bytes(rom_addresses["Tea_Key_Item_C"], 0x28) # jr .z - data[rom_addresses["Fossils_Needed_For_Second_Item"]] = ( - world.options.second_fossil_check_condition.value) + write_bytes(rom_addresses["Fossils_Needed_For_Second_Item"], world.options.second_fossil_check_condition.value) - data[rom_addresses["Option_Lose_Money"]] = int(not world.options.lose_money_on_blackout.value) + write_bytes(rom_addresses["Option_Lose_Money"], int(not world.options.lose_money_on_blackout.value)) if world.options.extra_key_items: - data[rom_addresses['Option_Extra_Key_Items_A']] = 1 - data[rom_addresses['Option_Extra_Key_Items_B']] = 1 - data[rom_addresses['Option_Extra_Key_Items_C']] = 1 - data[rom_addresses['Option_Extra_Key_Items_D']] = 1 - data[rom_addresses["Option_Split_Card_Key"]] = world.options.split_card_key.value - data[rom_addresses["Option_Blind_Trainers"]] = round(world.options.blind_trainers.value * 2.55) - data[rom_addresses["Option_Cerulean_Cave_Badges"]] = world.options.cerulean_cave_badges_condition.value - data[rom_addresses["Option_Cerulean_Cave_Key_Items"]] = world.options.cerulean_cave_key_items_condition.total - write_bytes(data, encode_text(str(world.options.cerulean_cave_badges_condition.value)), rom_addresses["Text_Cerulean_Cave_Badges"]) - write_bytes(data, encode_text(str(world.options.cerulean_cave_key_items_condition.total) + " key items."), rom_addresses["Text_Cerulean_Cave_Key_Items"]) - data[rom_addresses['Option_Encounter_Minimum_Steps']] = world.options.minimum_steps_between_encounters.value - data[rom_addresses['Option_Route23_Badges']] = world.options.victory_road_condition.value - data[rom_addresses['Option_Victory_Road_Badges']] = world.options.route_22_gate_condition.value - data[rom_addresses['Option_Elite_Four_Pokedex']] = world.options.elite_four_pokedex_condition.total - data[rom_addresses['Option_Elite_Four_Key_Items']] = world.options.elite_four_key_items_condition.total - data[rom_addresses['Option_Elite_Four_Badges']] = world.options.elite_four_badges_condition.value - write_bytes(data, encode_text(str(world.options.elite_four_badges_condition.value)), rom_addresses["Text_Elite_Four_Badges"]) - write_bytes(data, encode_text(str(world.options.elite_four_key_items_condition.total) + " key items, and"), rom_addresses["Text_Elite_Four_Key_Items"]) - write_bytes(data, encode_text(str(world.options.elite_four_pokedex_condition.total) + " #MON"), rom_addresses["Text_Elite_Four_Pokedex"]) - write_bytes(data, encode_text(str(world.total_key_items), length=2), rom_addresses["Trainer_Screen_Total_Key_Items"]) - - data[rom_addresses['Option_Viridian_Gym_Badges']] = world.options.viridian_gym_condition.value - data[rom_addresses['Option_EXP_Modifier']] = world.options.exp_modifier.value + write_bytes(rom_addresses["Option_Extra_Key_Items_A"], 1) + write_bytes(rom_addresses["Option_Extra_Key_Items_B"], 1) + write_bytes(rom_addresses["Option_Extra_Key_Items_C"], 1) + write_bytes(rom_addresses["Option_Extra_Key_Items_D"], 1) + write_bytes(rom_addresses["Option_Split_Card_Key"], world.options.split_card_key.value) + write_bytes(rom_addresses["Option_Blind_Trainers"], round(world.options.blind_trainers.value * 2.55)) + write_bytes(rom_addresses["Option_Cerulean_Cave_Badges"], world.options.cerulean_cave_badges_condition.value) + write_bytes(rom_addresses["Option_Cerulean_Cave_Key_Items"], world.options.cerulean_cave_key_items_condition.total) + write_bytes(rom_addresses["Text_Cerulean_Cave_Badges"], encode_text(str(world.options.cerulean_cave_badges_condition.value))) + write_bytes(rom_addresses["Text_Cerulean_Cave_Key_Items"], encode_text(str(world.options.cerulean_cave_key_items_condition.total) + " key items.")) + write_bytes(rom_addresses["Option_Encounter_Minimum_Steps"], world.options.minimum_steps_between_encounters.value) + write_bytes(rom_addresses["Option_Route23_Badges"], world.options.victory_road_condition.value) + write_bytes(rom_addresses["Option_Victory_Road_Badges"], world.options.route_22_gate_condition.value) + write_bytes(rom_addresses["Option_Elite_Four_Pokedex"], world.options.elite_four_pokedex_condition.total) + write_bytes(rom_addresses["Option_Elite_Four_Key_Items"], world.options.elite_four_key_items_condition.total) + write_bytes(rom_addresses["Option_Elite_Four_Badges"], world.options.elite_four_badges_condition.value) + write_bytes(rom_addresses["Text_Elite_Four_Badges"], encode_text(str(world.options.elite_four_badges_condition.value))) + write_bytes(rom_addresses["Text_Elite_Four_Key_Items"], encode_text(str(world.options.elite_four_key_items_condition.total) + " key items, and")) + write_bytes(rom_addresses["Text_Elite_Four_Pokedex"], encode_text(str(world.options.elite_four_pokedex_condition.total) + " #MON")) + write_bytes(rom_addresses["Trainer_Screen_Total_Key_Items"], encode_text(str(world.total_key_items), length=2)) + + write_bytes(rom_addresses["Option_Viridian_Gym_Badges"], world.options.viridian_gym_condition.value) + write_bytes(rom_addresses["Option_EXP_Modifier"], world.options.exp_modifier.value) if not world.options.require_item_finder: - data[rom_addresses['Option_Itemfinder']] = 0 # nop + write_bytes(rom_addresses["Option_Itemfinder"], 0) # nop if world.options.extra_strength_boulders: for i in range(0, 3): - data[rom_addresses['Option_Boulders'] + (i * 3)] = 0x15 + write_bytes(rom_addresses["Option_Boulders"] + (i * 3), 0x15) if world.options.extra_key_items: for i in range(0, 4): - data[rom_addresses['Option_Rock_Tunnel_Extra_Items'] + (i * 3)] = 0x15 + write_bytes(rom_addresses["Option_Rock_Tunnel_Extra_Items"] + (i * 3), 0x15) if world.options.old_man == "open_viridian_city": - data[rom_addresses['Option_Old_Man']] = 0x11 - data[rom_addresses['Option_Old_Man_Lying']] = 0x15 - data[rom_addresses['Option_Route3_Guard_B']] = world.options.route_3_condition.value + write_bytes(rom_addresses["Option_Old_Man"], 0x11) + write_bytes(rom_addresses["Option_Old_Man_Lying"], 0x15) + write_bytes(rom_addresses["Option_Route3_Guard_B"], world.options.route_3_condition.value) if world.options.route_3_condition == "open": - data[rom_addresses['Option_Route3_Guard_A']] = 0x11 + write_bytes(rom_addresses["Option_Route3_Guard_A"], 0x11) if not world.options.robbed_house_officer: - data[rom_addresses['Option_Trashed_House_Guard_A']] = 0x15 - data[rom_addresses['Option_Trashed_House_Guard_B']] = 0x11 + write_bytes(rom_addresses["Option_Trashed_House_Guard_A"], 0x15) + write_bytes(rom_addresses["Option_Trashed_House_Guard_B"], 0x11) if world.options.require_pokedex: - data[rom_addresses["Require_Pokedex_A"]] = 1 - data[rom_addresses["Require_Pokedex_B"]] = 1 - data[rom_addresses["Require_Pokedex_C"]] = 1 + write_bytes(rom_addresses["Require_Pokedex_A"], 1) + write_bytes(rom_addresses["Require_Pokedex_B"], 1) + write_bytes(rom_addresses["Require_Pokedex_C"], 1) else: - data[rom_addresses["Require_Pokedex_D"]] = 0x18 # jr + write_bytes(rom_addresses["Require_Pokedex_D"], 0x18) # jr if world.options.dexsanity: - data[rom_addresses["Option_Dexsanity_A"]] = 1 - data[rom_addresses["Option_Dexsanity_B"]] = 1 + write_bytes(rom_addresses["Option_Dexsanity_A"], 1) + write_bytes(rom_addresses["Option_Dexsanity_B"], 1) if world.options.all_pokemon_seen: - data[rom_addresses["Option_Pokedex_Seen"]] = 1 + write_bytes(rom_addresses["Option_Pokedex_Seen"], 1) money = str(world.options.starting_money.value).zfill(6) - data[rom_addresses["Starting_Money_High"]] = int(money[:2], 16) - data[rom_addresses["Starting_Money_Middle"]] = int(money[2:4], 16) - data[rom_addresses["Starting_Money_Low"]] = int(money[4:], 16) - data[rom_addresses["Text_Badges_Needed_Viridian_Gym"]] = encode_text( - str(world.options.viridian_gym_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_A"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_B"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_C"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_D"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Badges_Needed"]] = encode_text( - str(world.options.elite_four_badges_condition.value))[0] - write_bytes(data, encode_text( - " ".join(world.multiworld.get_location("Route 4 Pokemon Center - Pokemon For Sale", world.player).item.name.upper().split()[1:])), - rom_addresses["Text_Magikarp_Salesman"]) + write_bytes(rom_addresses["Starting_Money_High"], int(money[:2], 16)) + write_bytes(rom_addresses["Starting_Money_Middle"], int(money[2:4], 16)) + write_bytes(rom_addresses["Starting_Money_Low"], int(money[4:], 16)) + write_bytes(rom_addresses["Text_Badges_Needed_Viridian_Gym"], + encode_text(str(world.options.viridian_gym_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_A"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_B"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_C"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_D"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Badges_Needed"], + encode_text(str(world.options.elite_four_badges_condition.value))[0]) + write_bytes(rom_addresses["Text_Magikarp_Salesman"], + encode_text(" ".join(world.multiworld.get_location("Route 4 Pokemon Center - Pokemon For Sale", world.player).item.name.upper().split()[1:]))) if world.options.badges_needed_for_hm_moves.value == 0: for hm_move in poke_data.hm_moves: - write_bytes(data, bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]), - rom_addresses["HM_" + hm_move + "_Badge_a"]) + write_bytes(rom_addresses["HM_" + hm_move + "_Badge_a"], [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) elif world.extra_badges: written_badges = {} + badge_codes = {"Boulder Badge": 0x47, "Cascade Badge": 0x4F, + "Thunder Badge": 0x57, "Rainbow Badge": 0x5F, + "Soul Badge": 0x67, "Marsh Badge": 0x6F, + "Volcano Badge": 0x77, "Earth Badge": 0x7F} for hm_move, badge in world.extra_badges.items(): - data[rom_addresses["HM_" + hm_move + "_Badge_b"]] = {"Boulder Badge": 0x47, "Cascade Badge": 0x4F, - "Thunder Badge": 0x57, "Rainbow Badge": 0x5F, - "Soul Badge": 0x67, "Marsh Badge": 0x6F, - "Volcano Badge": 0x77, "Earth Badge": 0x7F}[badge] + write_bytes(rom_addresses["HM_" + hm_move + "_Badge_b"], badge_codes[badge]) move_text = hm_move if badge not in ["Marsh Badge", "Volcano Badge", "Earth Badge"]: move_text = ", " + move_text @@ -467,62 +515,58 @@ def set_trade_mon(address, loc): if badge in written_badges: rom_address += len(written_badges[badge]) move_text = ", " + move_text - write_bytes(data, encode_text(move_text.upper()), rom_address) + write_bytes(rom_address, encode_text(move_text.upper())) written_badges[badge] = move_text for badge in ["Marsh Badge", "Volcano Badge", "Earth Badge"]: if badge not in written_badges: - write_bytes(data, encode_text("Nothing"), rom_addresses["Badge_Text_" + badge.replace(" ", "_")]) + write_bytes(rom_addresses["Badge_Text_" + badge.replace(" ", "_")], encode_text("Nothing")) type_loc = rom_addresses["Type_Chart"] for matchup in world.type_chart: if matchup[2] != 10: # don't needlessly divide damage by 10 and multiply by 10 - data[type_loc] = poke_data.type_ids[matchup[0]] - data[type_loc + 1] = poke_data.type_ids[matchup[1]] - data[type_loc + 2] = matchup[2] + write_bytes(type_loc, [poke_data.type_ids[matchup[0]], poke_data.type_ids[matchup[1]], matchup[2]]) type_loc += 3 - data[type_loc] = 0xFF - data[type_loc + 1] = 0xFF - data[type_loc + 2] = 0xFF + write_bytes(type_loc, b"\xFF\xFF\xFF") if world.options.normalize_encounter_chances.value: chances = [25, 51, 77, 103, 129, 155, 180, 205, 230, 255] for i, chance in enumerate(chances): - data[rom_addresses['Encounter_Chances'] + (i * 2)] = chance + write_bytes(rom_addresses["Encounter_Chances"] + (i * 2), chance) for mon, mon_data in world.local_poke_data.items(): if mon == "Mew": address = rom_addresses["Base_Stats_Mew"] else: address = rom_addresses["Base_Stats"] + (28 * (mon_data["dex"] - 1)) - data[address + 1] = world.local_poke_data[mon]["hp"] - data[address + 2] = world.local_poke_data[mon]["atk"] - data[address + 3] = world.local_poke_data[mon]["def"] - data[address + 4] = world.local_poke_data[mon]["spd"] - data[address + 5] = world.local_poke_data[mon]["spc"] - data[address + 6] = poke_data.type_ids[world.local_poke_data[mon]["type1"]] - data[address + 7] = poke_data.type_ids[world.local_poke_data[mon]["type2"]] - data[address + 8] = world.local_poke_data[mon]["catch rate"] - data[address + 15] = poke_data.moves[world.local_poke_data[mon]["start move 1"]]["id"] - data[address + 16] = poke_data.moves[world.local_poke_data[mon]["start move 2"]]["id"] - data[address + 17] = poke_data.moves[world.local_poke_data[mon]["start move 3"]]["id"] - data[address + 18] = poke_data.moves[world.local_poke_data[mon]["start move 4"]]["id"] - write_bytes(data, world.local_poke_data[mon]["tms"], address + 20) + write_bytes(address + 1, world.local_poke_data[mon]["hp"]) + write_bytes(address + 2, world.local_poke_data[mon]["atk"]) + write_bytes(address + 3, world.local_poke_data[mon]["def"]) + write_bytes(address + 4, world.local_poke_data[mon]["spd"]) + write_bytes(address + 5, world.local_poke_data[mon]["spc"]) + write_bytes(address + 6, poke_data.type_ids[world.local_poke_data[mon]["type1"]]) + write_bytes(address + 7, poke_data.type_ids[world.local_poke_data[mon]["type2"]]) + write_bytes(address + 8, world.local_poke_data[mon]["catch rate"]) + write_bytes(address + 15, poke_data.moves[world.local_poke_data[mon]["start move 1"]]["id"]) + write_bytes(address + 16, poke_data.moves[world.local_poke_data[mon]["start move 2"]]["id"]) + write_bytes(address + 17, poke_data.moves[world.local_poke_data[mon]["start move 3"]]["id"]) + write_bytes(address + 18, poke_data.moves[world.local_poke_data[mon]["start move 4"]]["id"]) + write_bytes(address + 20, world.local_poke_data[mon]["tms"]) if mon in world.learnsets and world.learnsets[mon]: address = rom_addresses["Learnset_" + mon.replace(" ", "")] for i, move in enumerate(world.learnsets[mon]): - data[(address + 1) + i * 2] = poke_data.moves[move]["id"] + write_bytes((address + 1) + i * 2, poke_data.moves[move]["id"]) - data[rom_addresses["Option_Aide_Rt2"]] = world.options.oaks_aide_rt_2.value - data[rom_addresses["Option_Aide_Rt11"]] = world.options.oaks_aide_rt_11.value - data[rom_addresses["Option_Aide_Rt15"]] = world.options.oaks_aide_rt_15.value + write_bytes(rom_addresses["Option_Aide_Rt2"], world.options.oaks_aide_rt_2.value) + write_bytes(rom_addresses["Option_Aide_Rt11"], world.options.oaks_aide_rt_11.value) + write_bytes(rom_addresses["Option_Aide_Rt15"], world.options.oaks_aide_rt_15.value) if world.options.safari_zone_normal_battles.value == 1: - data[rom_addresses["Option_Safari_Zone_Battle_Type"]] = 255 + write_bytes(rom_addresses["Option_Safari_Zone_Battle_Type"], 255) if world.options.reusable_tms.value: - data[rom_addresses["Option_Reusable_TMs"]] = 0xC9 + write_bytes(rom_addresses["Option_Reusable_TMs"], 0xC9) - data[rom_addresses["Option_Always_Half_STAB"]] = int(not world.options.same_type_attack_bonus.value) + write_bytes(rom_addresses["Option_Always_Half_STAB"], int(not world.options.same_type_attack_bonus.value)) if world.options.better_shops: inventory = ["Poke Ball", "Great Ball", "Ultra Ball"] @@ -531,43 +575,45 @@ def set_trade_mon(address, loc): inventory += ["Potion", "Super Potion", "Hyper Potion", "Max Potion", "Full Restore", "Revive", "Antidote", "Awakening", "Burn Heal", "Ice Heal", "Paralyze Heal", "Full Heal", "Repel", "Super Repel", "Max Repel", "Escape Rope"] - shop_data = bytearray([0xFE, len(inventory)]) - shop_data += bytearray([item_table[item].id - 172000000 for item in inventory]) + shop_data = [0xFE, len(inventory)] + shop_data += [item_table[item].id - 172000000 for item in inventory] shop_data.append(0xFF) for shop in range(1, 11): - write_bytes(data, shop_data, rom_addresses[f"Shop{shop}"]) + write_bytes(rom_addresses[f"Shop{shop}"], shop_data) if world.options.stonesanity: - write_bytes(data, bytearray([0xFE, 1, item_table["Poke Doll"].id - 172000000, 0xFF]), rom_addresses[f"Shop_Stones"]) + write_bytes(rom_addresses["Shop_Stones"], [0xFE, 1, item_table["Poke Doll"].id - 172000000, 0xFF]) price = str(world.options.master_ball_price.value).zfill(6) - price = bytearray([int(price[:2], 16), int(price[2:4], 16), int(price[4:], 16)]) - write_bytes(data, price, rom_addresses["Price_Master_Ball"]) # Money values in Red and Blue are weird + price = [int(price[:2], 16), int(price[2:4], 16), int(price[4:], 16)] + write_bytes(rom_addresses["Price_Master_Ball"], price) # Money values in Red and Blue are weird - for item in reversed(world.multiworld.precollected_items[world.player]): - if data[rom_addresses["Start_Inventory"] + item.code - 172000000] < 255: - data[rom_addresses["Start_Inventory"] + item.code - 172000000] += 1 + from collections import Counter + start_inventory = Counter(item.code for item in reversed(world.multiworld.precollected_items[world.player])) + for item, value in start_inventory.items(): + write_bytes(rom_addresses["Start_Inventory"] + item - 172000000, min(value, 255)) - set_mon_palettes(world, random, data) + set_mon_palettes(world, patch) for move_data in world.local_move_data.values(): if move_data["id"] == 0: continue address = rom_addresses["Move_Data"] + ((move_data["id"] - 1) * 6) - write_bytes(data, bytearray([move_data["id"], move_data["effect"], move_data["power"], - poke_data.type_ids[move_data["type"]], round(move_data["accuracy"] * 2.55), move_data["pp"]]), address) + write_bytes(address, [move_data["id"], move_data["effect"], move_data["power"], + poke_data.type_ids[move_data["type"]], round(move_data["accuracy"] * 2.55), + move_data["pp"]]) - TM_IDs = bytearray([poke_data.moves[move]["id"] for move in world.local_tms]) - write_bytes(data, TM_IDs, rom_addresses["TM_Moves"]) + TM_IDs = [poke_data.moves[move]["id"] for move in world.local_tms] + write_bytes(rom_addresses["TM_Moves"], TM_IDs) if world.options.randomize_rock_tunnel: - seed = randomize_rock_tunnel(data, random) - write_bytes(data, encode_text(f"SEED: {seed}"), rom_addresses["Text_Rock_Tunnel_Sign"]) + seed = randomize_rock_tunnel(patch, world.random) + write_bytes(rom_addresses["Text_Rock_Tunnel_Sign"], encode_text(f"SEED: {seed}")) mons = [mon["id"] for mon in poke_data.pokemon_data.values()] - random.shuffle(mons) - data[rom_addresses['Title_Mon_First']] = mons.pop() + world.random.shuffle(mons) + write_bytes(rom_addresses["Title_Mon_First"], mons.pop()) for mon in range(0, 16): - data[rom_addresses['Title_Mons'] + mon] = mons.pop() + write_bytes(rom_addresses["Title_Mons"] + mon, mons.pop()) if world.options.game_version.value: mons.sort(key=lambda mon: 0 if mon == world.multiworld.get_location("Oak's Lab - Starter 1", world.player).item.name else 1 if mon == world.multiworld.get_location("Oak's Lab - Starter 2", world.player).item.name else @@ -576,34 +622,34 @@ def set_trade_mon(address, loc): mons.sort(key=lambda mon: 0 if mon == world.multiworld.get_location("Oak's Lab - Starter 2", world.player).item.name else 1 if mon == world.multiworld.get_location("Oak's Lab - Starter 1", world.player).item.name else 2 if mon == world.multiworld.get_location("Oak's Lab - Starter 3", world.player).item.name else 3) - write_bytes(data, encode_text(world.multiworld.seed_name[-20:], 20, True), rom_addresses['Title_Seed']) + write_bytes(rom_addresses["Title_Seed"], encode_text(world.multiworld.seed_name[-20:], 20, True)) slot_name = world.multiworld.player_name[world.player] slot_name.replace("@", " ") slot_name.replace("<", " ") slot_name.replace(">", " ") - write_bytes(data, encode_text(slot_name, 16, True, True), rom_addresses['Title_Slot_Name']) + write_bytes(rom_addresses["Title_Slot_Name"], encode_text(slot_name, 16, True, True)) if world.trainer_name == "choose_in_game": - data[rom_addresses["Skip_Player_Name"]] = 0 + write_bytes(rom_addresses["Skip_Player_Name"], 0) else: - write_bytes(data, world.trainer_name, rom_addresses['Player_Name']) + write_bytes(rom_addresses["Player_Name"], world.trainer_name) if world.rival_name == "choose_in_game": - data[rom_addresses["Skip_Rival_Name"]] = 0 + write_bytes(rom_addresses["Skip_Rival_Name"], 0) else: - write_bytes(data, world.rival_name, rom_addresses['Rival_Name']) + write_bytes(rom_addresses["Rival_Name"], world.rival_name) - data[0xFF00] = 2 # client compatibility version - rom_name = bytearray(f'AP{Utils.__version__.replace(".", "")[0:3]}_{world.player}_{world.multiworld.seed:11}\0', - 'utf8')[:21] + write_bytes(0xFF00, 2) # client compatibility version + rom_name = bytearray(f"AP{Utils.__version__.replace('.', '')[0:3]}_{world.player}_{world.multiworld.seed:11}\0", + "utf8")[:21] rom_name.extend([0] * (21 - len(rom_name))) - write_bytes(data, rom_name, 0xFFC6) - write_bytes(data, world.multiworld.seed_name.encode(), 0xFFDB) - write_bytes(data, world.multiworld.player_name[world.player].encode(), 0xFFF0) + write_bytes(0xFFC6, rom_name) + write_bytes(0xFFDB, world.multiworld.seed_name.encode()) + write_bytes(0xFFF0, world.multiworld.player_name[world.player].encode()) world.finished_level_scaling.wait() - write_quizzes(world, data, random) + write_quizzes(world, patch) for location in world.multiworld.get_locations(world.player): if location.party_data: @@ -617,18 +663,18 @@ def set_trade_mon(address, loc): levels = party["level"] for address, party in zip(addresses, parties): if isinstance(levels, int): - data[address] = levels + write_bytes(address, levels) address += 1 for mon in party: - data[address] = poke_data.pokemon_data[mon]["id"] + write_bytes(address, poke_data.pokemon_data[mon]["id"]) address += 1 else: address += 1 for level, mon in zip(levels, party): - data[address] = level - data[address + 1] = poke_data.pokemon_data[mon]["id"] + write_bytes(address, [level, poke_data.pokemon_data[mon]["id"]]) address += 2 - assert data[address] == 0 or location.name == "Fossil Level - Trainer Parties" + # This assert can't be done with procedure patch tokens. + # assert data[address] == 0 or location.name == "Fossil Level - Trainer Parties" continue elif location.rom_address is None: continue @@ -639,85 +685,24 @@ def set_trade_mon(address, loc): rom_address = [rom_address] for address in rom_address: if location.item.name in poke_data.pokemon_data.keys(): - data[address] = poke_data.pokemon_data[location.item.name]["id"] + write_bytes(address, poke_data.pokemon_data[location.item.name]["id"]) elif " ".join(location.item.name.split()[1:]) in poke_data.pokemon_data.keys(): - data[address] = poke_data.pokemon_data[" ".join(location.item.name.split()[1:])]["id"] + write_bytes(address, poke_data.pokemon_data[" ".join(location.item.name.split()[1:])]["id"]) else: item_id = world.item_name_to_id[location.item.name] - 172000000 if item_id > 255: item_id -= 256 - data[address] = item_id + write_bytes(address, item_id) if location.level: - data[location.level_address] = location.level + write_bytes(location.level_address, location.level) else: rom_address = location.rom_address if not isinstance(rom_address, list): rom_address = [rom_address] for address in rom_address: - data[address] = 0x2C # AP Item - - outfilepname = f'_P{world.player}' - outfilepname += f"_{world.multiworld.get_file_safe_player_name(world.player).replace(' ', '_')}" \ - if world.multiworld.player_name[world.player] != 'Player%d' % world.player else '' - rompath = os.path.join(output_directory, f'AP_{world.multiworld.seed_name}{outfilepname}.gb') - with open(rompath, 'wb') as outfile: - outfile.write(data) - if world.options.game_version.current_key == "red": - patch = RedDeltaPatch(os.path.splitext(rompath)[0] + RedDeltaPatch.patch_file_ending, player=world.player, - player_name=world.multiworld.player_name[world.player], patched_path=rompath) - else: - patch = BlueDeltaPatch(os.path.splitext(rompath)[0] + BlueDeltaPatch.patch_file_ending, player=world.player, - player_name=world.multiworld.player_name[world.player], patched_path=rompath) - - patch.write() - os.unlink(rompath) - - -def write_bytes(data, byte_array, address): - for byte in byte_array: - data[address] = byte - address += 1 - - -def get_base_rom_bytes(game_version: str, hash: str="") -> bytes: - file_name = get_base_rom_path(game_version) - with open(file_name, "rb") as file: - base_rom_bytes = bytes(file.read()) - if hash: - basemd5 = hashlib.md5() - basemd5.update(base_rom_bytes) - if hash != basemd5.hexdigest(): - raise Exception(f"Supplied Base Rom does not match known MD5 for Pokémon {game_version.title()} UE " - "release. Get the correct game and version, then dump it") - return base_rom_bytes - + write_bytes(address, 0x2C) # AP Item -def get_base_rom_path(game_version: str) -> str: - options = Utils.get_options() - file_name = options["pokemon_rb_options"][f"{game_version}_rom_file"] - if not os.path.exists(file_name): - file_name = Utils.user_path(file_name) - return file_name - - -class BlueDeltaPatch(APDeltaPatch): - patch_file_ending = ".apblue" - hash = "50927e843568814f7ed45ec4f944bd8b" - game_version = "blue" - game = "Pokemon Red and Blue" - result_file_ending = ".gb" - @classmethod - def get_source_data(cls) -> bytes: - return get_base_rom_bytes(cls.game_version, cls.hash) - - -class RedDeltaPatch(APDeltaPatch): - patch_file_ending = ".apred" - hash = "3d45c1ee9abd5738df46d2bdda8b57dc" - game_version = "red" - game = "Pokemon Red and Blue" - result_file_ending = ".gb" - @classmethod - def get_source_data(cls) -> bytes: - return get_base_rom_bytes(cls.game_version, cls.hash) + patch.write_file("token_data.bin", patch.get_token_binary()) + out_file_name = world.multiworld.get_out_file_name_base(world.player) + patch.write(os.path.join(output_directory, f"{out_file_name}{patch.patch_file_ending}")) From c46ee7c4209f064e9aa90bc8e6eb141f4a438b6c Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Wed, 30 Apr 2025 15:57:46 -0400 Subject: [PATCH 005/183] TUNIC: Lock pre-placed filler to make the game play nicer with prog balancing (#4917) --- worlds/tunic/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/tunic/__init__.py b/worlds/tunic/__init__.py index 9d97e5711bf7..aa6c8cdfb95f 100644 --- a/worlds/tunic/__init__.py +++ b/worlds/tunic/__init__.py @@ -486,10 +486,10 @@ def stage_pre_fill(cls, multiworld: MultiWorld) -> None: multiworld.random.shuffle(non_grass_fill_locations) for filler_item in grass_fill: - multiworld.push_item(grass_fill_locations.pop(), filler_item, collect=False) + grass_fill_locations.pop().place_locked_item(filler_item) for filler_item in non_grass_fill: - multiworld.push_item(non_grass_fill_locations.pop(), filler_item, collect=False) + non_grass_fill_locations.pop().place_locked_item(filler_item) def create_regions(self) -> None: self.tunic_portal_pairs = {} From 6beaacb9058f645dbb3f4cc77702cf02c17e7e83 Mon Sep 17 00:00:00 2001 From: qwint Date: Fri, 2 May 2025 08:46:34 -0500 Subject: [PATCH 006/183] Generate: Better yaml parsing error messaging (#4927) Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> --- Generate.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Generate.py b/Generate.py index 5b5219841d66..867a5b6c7a61 100644 --- a/Generate.py +++ b/Generate.py @@ -252,7 +252,20 @@ def read_weights_yamls(path) -> Tuple[Any, ...]: except Exception as e: raise Exception(f"Failed to read weights ({path})") from e - return tuple(parse_yamls(yaml)) + from yaml.error import MarkedYAMLError + try: + return tuple(parse_yamls(yaml)) + except MarkedYAMLError as ex: + if ex.problem_mark: + lines = yaml.splitlines() + if ex.context_mark: + relevant_lines = "\n".join(lines[ex.context_mark.line:ex.problem_mark.line+1]) + else: + relevant_lines = lines[ex.problem_mark.line] + error_line = " " * ex.problem_mark.column + "^" + raise Exception(f"{ex.context} {ex.problem} on line {ex.problem_mark.line}:" + f"\n{relevant_lines}\n{error_line}") + raise ex def interpret_on_off(value) -> bool: From 1031fc49237b27f0ab18540fe64a826dc5823e62 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Fri, 2 May 2025 15:59:27 +0200 Subject: [PATCH 007/183] Factorio: remove FactorioClient executable (#4928) --- FactorioClient.py | 12 ------------ worlds/factorio/__init__.py | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 FactorioClient.py diff --git a/FactorioClient.py b/FactorioClient.py deleted file mode 100644 index 070ca503269f..000000000000 --- a/FactorioClient.py +++ /dev/null @@ -1,12 +0,0 @@ -from __future__ import annotations - -import ModuleUpdate -ModuleUpdate.update() - -from worlds.factorio.Client import check_stdin, launch -import Utils - -if __name__ == "__main__": - Utils.init_logging("FactorioClient", exception_logger="Client") - check_stdin() - launch() diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index 87e36555a58b..ddebc7e3fdf5 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -27,7 +27,7 @@ def launch_client(): launch_component(launch, name="FactorioClient") -components.append(Component("Factorio Client", "FactorioClient", func=launch_client, component_type=Type.CLIENT)) +components.append(Component("Factorio Client", func=launch_client, component_type=Type.CLIENT)) class FactorioSettings(settings.Group): From 2455f1158ffff2bc919532374580f79a6f7b4aa9 Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Fri, 2 May 2025 11:39:58 -0500 Subject: [PATCH 008/183] Options: Cleanup CommonOptions.as_dict (#4921) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- Options.py | 61 +++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/Options.py b/Options.py index 6a6bbe5e7794..bea3804d1ee5 100644 --- a/Options.py +++ b/Options.py @@ -1292,42 +1292,47 @@ class CommonOptions(metaclass=OptionsMetaProperty): progression_balancing: ProgressionBalancing accessibility: Accessibility - def as_dict(self, - *option_names: str, - casing: typing.Literal["snake", "camel", "pascal", "kebab"] = "snake", - toggles_as_bools: bool = False) -> typing.Dict[str, typing.Any]: + def as_dict( + self, + *option_names: str, + casing: typing.Literal["snake", "camel", "pascal", "kebab"] = "snake", + toggles_as_bools: bool = False, + ) -> dict[str, typing.Any]: """ Returns a dictionary of [str, Option.value] - :param option_names: names of the options to return - :param casing: case of the keys to return. Supports `snake`, `camel`, `pascal`, `kebab` - :param toggles_as_bools: whether toggle options should be output as bools instead of strings + :param option_names: Names of the options to get the values of. + :param casing: Casing of the keys to return. Supports `snake`, `camel`, `pascal`, `kebab`. + :param toggles_as_bools: Whether toggle options should be returned as bools instead of ints. + + :return: A dictionary of each option name to the value of its Option. If the option is an OptionSet, the value + will be returned as a sorted list. """ assert option_names, "options.as_dict() was used without any option names." option_results = {} for option_name in option_names: - if option_name in type(self).type_hints: - if casing == "snake": - display_name = option_name - elif casing == "camel": - split_name = [name.title() for name in option_name.split("_")] - split_name[0] = split_name[0].lower() - display_name = "".join(split_name) - elif casing == "pascal": - display_name = "".join([name.title() for name in option_name.split("_")]) - elif casing == "kebab": - display_name = option_name.replace("_", "-") - else: - raise ValueError(f"{casing} is invalid casing for as_dict. " - "Valid names are 'snake', 'camel', 'pascal', 'kebab'.") - value = getattr(self, option_name).value - if isinstance(value, set): - value = sorted(value) - elif toggles_as_bools and issubclass(type(self).type_hints[option_name], Toggle): - value = bool(value) - option_results[display_name] = value - else: + if option_name not in type(self).type_hints: raise ValueError(f"{option_name} not found in {tuple(type(self).type_hints)}") + + if casing == "snake": + display_name = option_name + elif casing == "camel": + split_name = [name.title() for name in option_name.split("_")] + split_name[0] = split_name[0].lower() + display_name = "".join(split_name) + elif casing == "pascal": + display_name = "".join([name.title() for name in option_name.split("_")]) + elif casing == "kebab": + display_name = option_name.replace("_", "-") + else: + raise ValueError(f"{casing} is invalid casing for as_dict. " + "Valid names are 'snake', 'camel', 'pascal', 'kebab'.") + value = getattr(self, option_name).value + if isinstance(value, set): + value = sorted(value) + elif toggles_as_bools and issubclass(type(self).type_hints[option_name], Toggle): + value = bool(value) + option_results[display_name] = value return option_results From da0207f5cb419baa1f7b05c448bead91dbaa0bd4 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Fri, 2 May 2025 23:39:14 +0200 Subject: [PATCH 009/183] Factorio: implement custom filler items (#4945) --- worlds/AutoWorld.py | 2 +- worlds/factorio/__init__.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/worlds/AutoWorld.py b/worlds/AutoWorld.py index 67455a1a218e..f0004a9f1b5b 100644 --- a/worlds/AutoWorld.py +++ b/worlds/AutoWorld.py @@ -485,7 +485,7 @@ def create_item(self, name: str) -> "Item": def get_filler_item_name(self) -> str: """Called when the item pool needs to be filled with additional items to match location count.""" logging.warning(f"World {self} is generating a filler item without custom filler pool.") - return self.multiworld.random.choice(tuple(self.item_name_to_id.keys())) + return self.random.choice(tuple(self.item_name_to_id.keys())) @classmethod def create_group(cls, multiworld: "MultiWorld", new_player_id: int, players: Set[int]) -> World: diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index ddebc7e3fdf5..0e96e7f89bcb 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -115,6 +115,7 @@ class Factorio(World): settings: typing.ClassVar[FactorioSettings] trap_names: tuple[str] = ("Evolution", "Attack", "Teleport", "Grenade", "Cluster Grenade", "Artillery", "Atomic Rocket", "Atomic Cliff Remover", "Inventory Spill") + want_progressives: dict[str, bool] = collections.defaultdict(lambda: False) def __init__(self, world, player: int): super(Factorio, self).__init__(world, player) @@ -133,6 +134,8 @@ def generate_early(self) -> None: self.options.max_tech_cost.value, self.options.min_tech_cost.value self.tech_mix = self.options.tech_cost_mix.value self.skip_silo = self.options.silo.value == Silo.option_spawn + self.want_progressives = collections.defaultdict( + lambda: self.options.progressive.want_progressives(self.random)) def create_regions(self): player = self.player @@ -201,9 +204,6 @@ def create_items(self) -> None: range(getattr(self.options, f"{trap_name.lower().replace(' ', '_')}_traps"))) - want_progressives = collections.defaultdict(lambda: self.options.progressive. - want_progressives(self.random)) - cost_sorted_locations = sorted(self.science_locations, key=lambda location: location.name) special_index = {"automation": 0, "logistics": 1, @@ -218,7 +218,7 @@ def create_items(self) -> None: for tech_name in base_tech_table: if tech_name not in self.removed_technologies: progressive_item_name = tech_to_progressive_lookup.get(tech_name, tech_name) - want_progressive = want_progressives[progressive_item_name] + want_progressive = self.want_progressives[progressive_item_name] item_name = progressive_item_name if want_progressive else tech_name tech_item = self.create_item(item_name) index = special_index.get(tech_name, None) @@ -233,6 +233,12 @@ def create_items(self) -> None: loc.place_locked_item(tech_item) loc.revealed = True + def get_filler_item_name(self) -> str: + tech_name: str = self.random.choice(tuple(tech_table)) + progressive_item_name: str = tech_to_progressive_lookup.get(tech_name, tech_name) + want_progressive: bool = self.want_progressives[progressive_item_name] + return progressive_item_name if want_progressive else tech_name + def set_rules(self): player = self.player shapes = get_shapes(self) From 68c350b4c060bab81190ffede5f1f1649a949aa1 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Fri, 2 May 2025 23:39:52 +0200 Subject: [PATCH 010/183] CommonClient: rip out old global name lookup (#4941) --- CommonClient.py | 15 --------------- test/programs/test_common_client.py | 11 ----------- 2 files changed, 26 deletions(-) diff --git a/CommonClient.py b/CommonClient.py index b622fb939bec..5179110061fd 100644 --- a/CommonClient.py +++ b/CommonClient.py @@ -196,25 +196,11 @@ def __init__(self, ctx: CommonContext, lookup_type: typing.Literal["item", "loca self.lookup_type: typing.Literal["item", "location"] = lookup_type self._unknown_item: typing.Callable[[int], str] = lambda key: f"Unknown {lookup_type} (ID: {key})" self._archipelago_lookup: typing.Dict[int, str] = {} - self._flat_store: typing.Dict[int, str] = Utils.KeyedDefaultDict(self._unknown_item) self._game_store: typing.Dict[str, typing.ChainMap[int, str]] = collections.defaultdict( lambda: collections.ChainMap(self._archipelago_lookup, Utils.KeyedDefaultDict(self._unknown_item))) - self.warned: bool = False # noinspection PyTypeChecker def __getitem__(self, key: str) -> typing.Mapping[int, str]: - # TODO: In a future version (0.6.0?) this should be simplified by removing implicit id lookups support. - if isinstance(key, int): - if not self.warned: - # Use warnings instead of logger to avoid deprecation message from appearing on user side. - self.warned = True - warnings.warn(f"Implicit name lookup by id only is deprecated and only supported to maintain " - f"backwards compatibility for now. If multiple games share the same id for a " - f"{self.lookup_type}, name could be incorrect. Please use " - f"`{self.lookup_type}_names.lookup_in_game()` or " - f"`{self.lookup_type}_names.lookup_in_slot()` instead.") - return self._flat_store[key] # type: ignore - return self._game_store[key] def __len__(self) -> int: @@ -254,7 +240,6 @@ def update_game(self, game: str, name_to_id_lookup_table: typing.Dict[str, int]) id_to_name_lookup_table = Utils.KeyedDefaultDict(self._unknown_item) id_to_name_lookup_table.update({code: name for name, code in name_to_id_lookup_table.items()}) self._game_store[game] = collections.ChainMap(self._archipelago_lookup, id_to_name_lookup_table) - self._flat_store.update(id_to_name_lookup_table) # Only needed for legacy lookup method. if game == "Archipelago": # Keep track of the Archipelago data package separately so if it gets updated in a custom datapackage, # it updates in all chain maps automatically. diff --git a/test/programs/test_common_client.py b/test/programs/test_common_client.py index 9936240d17b9..eeeba9d44ce1 100644 --- a/test/programs/test_common_client.py +++ b/test/programs/test_common_client.py @@ -47,17 +47,6 @@ async def test_archipelago_datapackage_lookups_exist(self): assert "Archipelago" in self.ctx.item_names, "Archipelago item names entry does not exist" assert "Archipelago" in self.ctx.location_names, "Archipelago location names entry does not exist" - async def test_implicit_name_lookups(self): - # Items - assert self.ctx.item_names[2**54 + 1] == "Test Item 1 - Safe" - assert self.ctx.item_names[2**54 + 3] == f"Unknown item (ID: {2**54+3})" - assert self.ctx.item_names[-1] == "Nothing" - - # Locations - assert self.ctx.location_names[2**54 + 1] == "Test Location 1 - Safe" - assert self.ctx.location_names[2**54 + 3] == f"Unknown location (ID: {2**54+3})" - assert self.ctx.location_names[-1] == "Cheat Console" - async def test_explicit_name_lookups(self): # Items assert self.ctx.item_names["__TestGame1"][2**54+1] == "Test Item 1 - Safe" From f4690e296d4fdc8e817e6e89f99f425b487ac9bb Mon Sep 17 00:00:00 2001 From: qwint Date: Fri, 2 May 2025 18:31:40 -0500 Subject: [PATCH 011/183] CommonClient: remove Datapackage Version handling (#4487) Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> --- CommonClient.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/CommonClient.py b/CommonClient.py index 5179110061fd..94c558bf8aec 100644 --- a/CommonClient.py +++ b/CommonClient.py @@ -341,7 +341,6 @@ def __init__(self, server_address: typing.Optional[str] = None, password: typing self.item_names = self.NameLookupDict(self, "item") self.location_names = self.NameLookupDict(self, "location") - self.versions = {} self.checksums = {} self.jsontotextparser = JSONtoTextParser(self) @@ -556,7 +555,6 @@ def update_hint(self, location: int, finding_player: int, status: typing.Optiona # DataPackage async def prepare_data_package(self, relevant_games: typing.Set[str], - remote_date_package_versions: typing.Dict[str, int], remote_data_package_checksums: typing.Dict[str, str]): """Validate that all data is present for the current multiworld. Download, assimilate and cache missing data from the server.""" @@ -565,33 +563,26 @@ async def prepare_data_package(self, relevant_games: typing.Set[str], needed_updates: typing.Set[str] = set() for game in relevant_games: - if game not in remote_date_package_versions and game not in remote_data_package_checksums: + if game not in remote_data_package_checksums: continue - remote_version: int = remote_date_package_versions.get(game, 0) remote_checksum: typing.Optional[str] = remote_data_package_checksums.get(game) - if remote_version == 0 and not remote_checksum: # custom data package and no checksum for this game + if not remote_checksum: # custom data package and no checksum for this game needed_updates.add(game) continue - cached_version: int = self.versions.get(game, 0) cached_checksum: typing.Optional[str] = self.checksums.get(game) # no action required if cached version is new enough - if (not remote_checksum and (remote_version > cached_version or remote_version == 0)) \ - or remote_checksum != cached_checksum: - local_version: int = network_data_package["games"].get(game, {}).get("version", 0) + if remote_checksum != cached_checksum: local_checksum: typing.Optional[str] = network_data_package["games"].get(game, {}).get("checksum") - if ((remote_checksum or remote_version <= local_version and remote_version != 0) - and remote_checksum == local_checksum): + if remote_checksum == local_checksum: self.update_game(network_data_package["games"][game], game) else: cached_game = Utils.load_data_package_for_checksum(game, remote_checksum) - cache_version: int = cached_game.get("version", 0) cache_checksum: typing.Optional[str] = cached_game.get("checksum") # download remote version if cache is not new enough - if (not remote_checksum and (remote_version > cache_version or remote_version == 0)) \ - or remote_checksum != cache_checksum: + if remote_checksum != cache_checksum: needed_updates.add(game) else: self.update_game(cached_game, game) @@ -601,7 +592,6 @@ async def prepare_data_package(self, relevant_games: typing.Set[str], def update_game(self, game_package: dict, game: str): self.item_names.update_game(game, game_package["item_name_to_id"]) self.location_names.update_game(game, game_package["location_name_to_id"]) - self.versions[game] = game_package.get("version", 0) self.checksums[game] = game_package.get("checksum") def update_data_package(self, data_package: dict): @@ -872,9 +862,8 @@ async def process_server_cmd(ctx: CommonContext, args: dict): logger.info(' %s (Player %d)' % (network_player.alias, network_player.slot)) # update data package - data_package_versions = args.get("datapackage_versions", {}) data_package_checksums = args.get("datapackage_checksums", {}) - await ctx.prepare_data_package(set(args["games"]), data_package_versions, data_package_checksums) + await ctx.prepare_data_package(set(args["games"]), data_package_checksums) await ctx.server_auth(args['password']) From 83ed3c8b5056590739995cf0bc4ab16d3d266462 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sat, 3 May 2025 11:53:52 +0200 Subject: [PATCH 012/183] Core: always embed Archipelago (#4880) --- Main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Main.py b/Main.py index 6f6a09619d17..5d9e1bc2110e 100644 --- a/Main.py +++ b/Main.py @@ -301,6 +301,7 @@ def precollect_hint(location: Location, auto_status: HintStatus): game_world.game: worlds.network_data_package["games"][game_world.game] for game_world in multiworld.worlds.values() } + data_package["Archipelago"] = worlds.network_data_package["games"]["Archipelago"] checks_in_area: Dict[int, Dict[str, Union[int, List[int]]]] = {} From 9425f5b772126a7d8e4bc61132084596c0de39d1 Mon Sep 17 00:00:00 2001 From: Tim Mahan <60069210+Bicoloursnake@users.noreply.github.com> Date: Sat, 3 May 2025 08:42:52 -0400 Subject: [PATCH 013/183] Docs: Direct Mac users to Launcher.py (#4767) --- worlds/generic/docs/mac_en.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/worlds/generic/docs/mac_en.md b/worlds/generic/docs/mac_en.md index 76b1ee4a3827..38fd3cd9404a 100644 --- a/worlds/generic/docs/mac_en.md +++ b/worlds/generic/docs/mac_en.md @@ -20,9 +20,11 @@ It is generally recommended that you use a virtual environment to run python bas 3. Run the command `source venv/bin/activate` to activate the virtual environment. 4. If you want to exit the virtual environment, run the command `deactivate`. ## Steps to Run the Clients -1. If your game doesn't have a patch file, run the command `python3 SNIClient.py`, changing the filename with the file of the client you want to run. -2. If your game does have a patch file, move the base rom to the Archipelago directory and run the command `python3 SNIClient.py 'patchfile'` with the filename extension for the patch file (apsm, aplttp, apsmz3, etc.) included and changing the filename with the file of the client you want to run. -3. Your client should now be running and rom created (where applicable). +1. Run the command `python3 Launcher.py`. +2. If your game doesn't have a patch file, just click the desired client in the right side column. +3. If your game does have a patch file, click the 'Open Patch' button and navigate to your patch file (the filename extension will look something like apsm, aplttp, apsmz3, etc.). +4. If the patching process needs a rom, but cannot find it, it will ask you to navigate to your legally obtained rom. +5. Your client should now be running and rom created (where applicable). ## Additional Steps for SNES Games 1. If using RetroArch, the instructions to set up your emulator [here in the Link to the Past setup guide](https://archipelago.gg/tutorial/A%20Link%20to%20the%20Past/multiworld/en) also work on the macOS version of RetroArch. 2. Double click on the SNI tar.gz download to extract the files to an SNI directory. If it isn't already, rename this directory to SNI to make some steps easier. From 1885dab06692e08a4d412c2e343811bb26e57f24 Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Sat, 3 May 2025 20:06:16 -0400 Subject: [PATCH 014/183] TWW: Documentation Cleanup (#4942) --- worlds/tww/Options.py | 2 ++ worlds/tww/docs/en_The Wind Waker.md | 27 +++++++++++-------- worlds/tww/docs/setup_en.md | 39 ++++++++++++++++------------ 3 files changed, 41 insertions(+), 27 deletions(-) diff --git a/worlds/tww/Options.py b/worlds/tww/Options.py index d37de3acf490..ad9c8b3937a5 100644 --- a/worlds/tww/Options.py +++ b/worlds/tww/Options.py @@ -19,6 +19,8 @@ class Dungeons(DefaultOnToggle): """ This controls whether dungeon locations are randomized. + + This means the items found in dungeons will be randomized, not that the entrances to dungeons will be randomized. """ display_name = "Dungeons" diff --git a/worlds/tww/docs/en_The Wind Waker.md b/worlds/tww/docs/en_The Wind Waker.md index 4d6e999cf9ce..0158366b3f08 100644 --- a/worlds/tww/docs/en_The Wind Waker.md +++ b/worlds/tww/docs/en_The Wind Waker.md @@ -19,17 +19,18 @@ a yellow Rupee, which includes a message that the location is not randomized. ## What is the goal of The Wind Waker? Reach and defeat Ganondorf atop Ganon's Tower. This will require all eight shards of the Triforce of Courage, the -fully-powered Master Sword (unless it's swordless mode), Light Arrows, and any other items necessary to reach Ganondorf. +fully-powered Master Sword (unless it's swords optional or swordless mode), Light Arrows, and any other items necessary +to reach Ganondorf. ## What does another world's item look like in TWW? Items belonging to other non-TWW worlds are represented by Father's Letter (the letter Medli gives you to give to Komali), an unused item in the randomizer. -## When the player receives an item, what happens? +## What happens when the player receives an item? -When the player receives an item, it will automatically be added to Link's inventory. Unlike many other Zelda -randomizers, Link **will not** hold the item above his head. +When the player receives an item, it will automatically be added to Link's inventory. Link **will not** hold the item +above his head like many other Zelda randomizers. ## I need help! What do I do? @@ -37,16 +38,20 @@ Refer to the [FAQ](https://lagolunatic.github.io/wwrando/faq/) first. Then, try [setup guide](/tutorial/The%20Wind%20Waker/setup/en). If you are still stuck, please ask in the Wind Waker channel in the Archipelago server. +## I opened the game in Dolphin, but I don't have any of my starting items! + +You must connect to the multiworld room to receive any items, including your starting inventory. + ## Known issues - Randomized freestanding rupees, spoils, and bait will also be given to the player picking up the item. The item will be sent properly, but the collecting player will receive an extra copy. -- Demo items (items which are held over Link's head) which are **not** randomized, such as rupees from salvages from - random light rings or rewards from minigames, will not work. +- Demo items (items held over Link's head) that are **not** randomized, such as rupees from salvages from random light + rings or rewards from minigames, will not work. - Item get messages for progressive items received on locations that send earlier than intended will be incorrect. This does not affect gameplay. - The Heart Piece count in item get messages will be off by one. This does not affect gameplay. -- It has been reported that item links can be buggy. Nothing game-breaking, but do be aware of it. +- It has been reported that item links can be buggy. It is nothing game-breaking, but do be aware of it. Feel free to report any other issues or suggest improvements in the Wind Waker channel in the Archipelago server! @@ -76,14 +81,14 @@ A few presets are available on the [player options page](../player-options) for The preset features 3 required bosses and hard obscurity difficulty, and while the list of enabled progression options may seem intimidating, the preset also excludes several locations. - **Miniblins 2025**: These are (as close to as possible) the settings used in the WWR Racing Server's - [2025 Season of Minblins](https://docs.google.com/document/d/19vT68eU6PepD2BD2ZjR9ikElfqs8pXfqQucZ-TcscV8). This + [2025 Season of Miniblins](https://docs.google.com/document/d/19vT68eU6PepD2BD2ZjR9ikElfqs8pXfqQucZ-TcscV8). This preset is great if you're new to Wind Waker! There aren't too many locations in the world, and you only need to complete two dungeons. You also start with many convenience items, such as double magic, a capacity upgrade for your bow and bombs, and six hearts. - **Mixed Pools**: These are the settings used in the WWR Racing Server's [Mixed Pools Co-op Tournament](https://docs.google.com/document/d/1YGPTtEgP978TIi0PUAD792OtZbE2jBQpI8XCAy63qpg). This - preset features full entrance rando and includes many locations behind a randomized entrance. There are also a bunch - of overworld locations, as these settings were intended to be played in a two-person co-op team. The preset also has 6 + preset features full entrance rando and includes most locations behind a randomized entrance. There are also many + overworld locations, as these settings were intended to be played in a two-person co-op team. The preset also has 6 required bosses, but since entrance pools are randomized, the bosses could be found anywhere! Check your Sea Chart to find out which island the bosses are on. @@ -106,7 +111,7 @@ This randomizer would not be possible without the help from: - CrainWWR: (multiworld and Dolphin memory assistance, additional programming) - Cyb3R: (reference for `TWWClient`) - DeamonHunter: (additional programming) -- Dev5ter: (initial TWW AP implmentation) +- Dev5ter: (initial TWW AP implementation) - Gamma / SageOfMirrors: (additional programming) - LagoLunatic: (base randomizer, additional assistance) - Lunix: (Linux support, additional programming) diff --git a/worlds/tww/docs/setup_en.md b/worlds/tww/docs/setup_en.md index fa22b48bf89e..eea2d9892038 100644 --- a/worlds/tww/docs/setup_en.md +++ b/worlds/tww/docs/setup_en.md @@ -5,11 +5,13 @@ If you're playing The Wind Waker, you must follow a few simple steps to get star ## Requirements -You'll need the following components to be able to play with The Wind Waker: +You'll need the following components to be able to play The Wind Waker: * Install [Dolphin Emulator](https://dolphin-emu.org/download/). **We recommend using the latest release.** - * For Linux users, you can use the flatpak package + * Linux users can use the flatpak package [available on Flathub](https://flathub.org/apps/org.DolphinEmu.dolphin-emu). -* The 2.5.0 version of the [TWW AP Randomizer Build](https://github.com/tanjo3/wwrando/releases/tag/ap_2.5.0). +* The latest version of the [TWW AP Randomizer Build](https://github.com/tanjo3/wwrando/releases?q=tag%3Aap_2). + * Please note that this build is **different** from the one the standalone randomizer uses. This build is + specifically for Archipelago. * A The Wind Waker ISO (North American version), probably named "Legend of Zelda, The - The Wind Waker (USA).iso". Optionally, you can also download: @@ -26,17 +28,17 @@ world. Once you're happy with your settings, provide the room host with your YAM ## Connecting to a Room -The multiworld host will provide you a link to download your `aptww` file or a zip file containing everyone's files. The -`aptww` file should be named `P#__XXXXX.aptww`, where `#` is your player ID, `` is your player name, and +The multiworld host will provide you a link to download your APTWW file or a zip file containing everyone's files. The +APTWW file should be named `P#__XXXXX.aptww`, where `#` is your player ID, `` is your player name, and `XXXXX` is the room ID. The host should also provide you with the room's server name and port number. -Once you do, follow these steps to connect to the room: +Once you're ready, follow these steps to connect to the room: 1. Run the TWW AP Randomizer Build. If this is the first time you've opened the randomizer, you'll need to specify the path to your The Wind Waker ISO and the output folder for the randomized ISO. These will be saved for the next time you open the program. 2. Modify any cosmetic convenience tweaks and player customization options as desired. -3. For the APTWW file, browse and locate the path to your `aptww` file. -4. Click `Randomize` at the bottom-right. This randomizes the ISO and puts it in the output folder you specified. The +3. For the APTWW file, browse and locate the path to your APTWW file. +4. Click `Randomize` at the bottom right. This randomizes the ISO and puts it in the output folder you specified. The file will be named `TWW AP_YYYYY_P# ().iso`, where `YYYYY` is the seed name, `#` is your player ID, and `` is your player (slot) name. Verify that the values are correct for the multiworld. 5. Open Dolphin and use it to open the randomized ISO. @@ -47,7 +49,7 @@ text client. If Dolphin is not already open, or you have yet to start a new file on the website, this will be `archipelago.gg:`, where `` is the port number. If a game is hosted from the `ArchipelagoServer.exe` (without `.exe` on Linux), the port number will default to `38281` but may be changed in the `host.yaml`. -8. If you've opened a ROM corresponding to the multiworld to which you are connected, it should authenticate your slot +8. If you've opened an ISO corresponding to the multiworld to which you are connected, it should authenticate your slot name automatically when you start a new save file. ## Troubleshooting @@ -55,13 +57,18 @@ name automatically when you start a new save file. * Ensure you are running the same version of Archipelago on which the multiworld was generated. * Ensure `tww.apworld` is not in your Archipelago installation's `custom_worlds` folder. * Ensure you are using the correct randomizer build for the version of Archipelago you are using. The build should -provide an error message directing you to the correct version. You can also look at the release notes of TWW AP builds -[here](https://github.com/tanjo3/wwrando/releases) to see which versions of Archipelago each build is compatible with. + provide an error message directing you to the correct version. You can also look at the release notes of TWW AP builds + [here](https://github.com/tanjo3/wwrando/releases?q=tag%3Aap_2) to see which versions of Archipelago each build is + compatible with. +* Do not run the Archipelago Launcher or Dolphin as an administrator on Windows. * If you encounter issues with authenticating, ensure that the randomized ROM is open in Dolphin and corresponds to the -multiworld to which you are connecting. + multiworld to which you are connecting. * Ensure that you do not have any Dolphin cheats or codes enabled. Some cheats or codes can unexpectedly interfere with -emulation and make troubleshooting errors difficult. -* If you get an error message, ensure that `Enable Emulated Memory Size Override` in Dolphin (under `Options` > -`Configuration` > `Advanced`) is **disabled**. + emulation and make troubleshooting errors difficult. +* Ensure that `Enable Emulated Memory Size Override` in Dolphin (under `Options` > `Configuration` > `Advanced`) is + **disabled**. +* If the client cannot connect to Dolphin, ensure Dolphin is on the same drive as Archipelago. Having Dolphin on an + external drive has reportedly caused connection issues. +* Ensure the `Fallback Region` in Dolphin (under `Options` > `Configuration` > `General`) is set to `NTSC-U`. * If you run with a custom GC boot menu, you'll need to skip it by going to `Options` > `Configuration` > `GameCube` -and checking `Skip Main Menu`. + and checking `Skip Main Menu`. From fa2d7797f440a5d1a97a16358d25d024785e9355 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sun, 4 May 2025 15:59:41 +0200 Subject: [PATCH 015/183] Core: update certifi (#4954) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ba3c3d84b4b8..951db610d311 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ schema>=0.7.7 kivy>=2.3.1 bsdiff4>=1.2.6 platformdirs>=4.3.6 -certifi>=2025.1.31 +certifi>=2025.4.26 cython>=3.0.12 cymem>=2.0.11 orjson>=3.10.15 From 68e37b8f9a9d31767ac7bd141b443e03c57b87cb Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sun, 4 May 2025 16:22:48 +0200 Subject: [PATCH 016/183] Factorio: client cleanup and prevent process bomb (#4882) Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> --- worlds/factorio/Client.py | 42 +++++++++++++++++++------------------ worlds/factorio/__init__.py | 25 +--------------------- worlds/factorio/settings.py | 26 +++++++++++++++++++++++ 3 files changed, 49 insertions(+), 44 deletions(-) create mode 100644 worlds/factorio/settings.py diff --git a/worlds/factorio/Client.py b/worlds/factorio/Client.py index 7aeb30cb2da4..199cb29b86c0 100644 --- a/worlds/factorio/Client.py +++ b/worlds/factorio/Client.py @@ -9,7 +9,6 @@ import re import string import subprocess - import sys import time import typing @@ -17,15 +16,16 @@ import factorio_rcon -import Utils from CommonClient import ClientCommandProcessor, CommonContext, logger, server_loop, gui_enabled, get_base_parser from MultiServer import mark_raw from NetUtils import ClientStatus, NetworkItem, JSONtoTextParser, JSONMessagePart -from Utils import async_start, get_file_safe_name +from Utils import async_start, get_file_safe_name, is_windows, Version, format_SI_prefix, get_text_between +from .settings import FactorioSettings +from settings import get_settings def check_stdin() -> None: - if Utils.is_windows and sys.stdin: + if is_windows and sys.stdin: print("WARNING: Console input is not routed reliably on Windows, use the GUI instead.") @@ -67,7 +67,7 @@ class FactorioContext(CommonContext): items_handling = 0b111 # full remote # updated by spinup server - mod_version: Utils.Version = Utils.Version(0, 0, 0) + mod_version: Version = Version(0, 0, 0) def __init__(self, server_address, password, filter_item_sends: bool, bridge_chat_out: bool): super(FactorioContext, self).__init__(server_address, password) @@ -133,7 +133,7 @@ def energy_link_status(self) -> str: elif self.current_energy_link_value is None: return "Standby" else: - return f"{Utils.format_SI_prefix(self.current_energy_link_value)}J" + return f"{format_SI_prefix(self.current_energy_link_value)}J" def on_deathlink(self, data: dict): if self.rcon_client: @@ -155,10 +155,10 @@ def on_package(self, cmd: str, args: dict): if self.energy_link_increment and args.get("last_deplete", -1) == self.last_deplete: # it's our deplete request gained = int(args["original_value"] - args["value"]) - gained_text = Utils.format_SI_prefix(gained) + "J" + gained_text = format_SI_prefix(gained) + "J" if gained: logger.debug(f"EnergyLink: Received {gained_text}. " - f"{Utils.format_SI_prefix(args['value'])}J remaining.") + f"{format_SI_prefix(args['value'])}J remaining.") self.rcon_client.send_command(f"/ap-energylink {gained}") def on_user_say(self, text: str) -> typing.Optional[str]: @@ -278,7 +278,7 @@ async def game_watcher(ctx: FactorioContext): }])) ctx.rcon_client.send_command( f"/ap-energylink -{value}") - logger.debug(f"EnergyLink: Sent {Utils.format_SI_prefix(value)}J") + logger.debug(f"EnergyLink: Sent {format_SI_prefix(value)}J") await asyncio.sleep(0.1) @@ -439,9 +439,9 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: factorio_server_logger.info(msg) if "Loading mod AP-" in msg and msg.endswith("(data.lua)"): parts = msg.split() - ctx.mod_version = Utils.Version(*(int(number) for number in parts[-2].split("."))) + ctx.mod_version = Version(*(int(number) for number in parts[-2].split("."))) elif "Write data path: " in msg: - ctx.write_data_path = Utils.get_text_between(msg, "Write data path: ", " [") + ctx.write_data_path = get_text_between(msg, "Write data path: ", " [") if "AppData" in ctx.write_data_path: logger.warning("It appears your mods are loaded from Appdata, " "this can lead to problems with multiple Factorio instances. " @@ -521,10 +521,16 @@ def _handle_color(self, node: JSONMessagePart): rcon_password = args.rcon_password if args.rcon_password else ''.join( random.choice(string.ascii_letters) for x in range(32)) factorio_server_logger = logging.getLogger("FactorioServer") -options = Utils.get_settings() -executable = options["factorio_options"]["executable"] +settings: FactorioSettings = get_settings().factorio_options +if os.path.samefile(settings.executable, sys.executable): + selected_executable = settings.executable + settings.executable = FactorioSettings.executable # reset to default + raise Exception(f"FactorioClient was set to run itself {selected_executable}, aborting process bomb.") + +executable = settings.executable + server_settings = args.server_settings if args.server_settings \ - else options["factorio_options"].get("server_settings", None) + else getattr(settings, "server_settings", None) server_args = ("--rcon-port", rcon_port, "--rcon-password", rcon_password) @@ -535,12 +541,8 @@ def launch(): if server_settings: server_settings = os.path.abspath(server_settings) - if not isinstance(options["factorio_options"]["filter_item_sends"], bool): - logging.warning(f"Warning: Option filter_item_sends should be a bool.") - initial_filter_item_sends = bool(options["factorio_options"]["filter_item_sends"]) - if not isinstance(options["factorio_options"]["bridge_chat_out"], bool): - logging.warning(f"Warning: Option bridge_chat_out should be a bool.") - initial_bridge_chat_out = bool(options["factorio_options"]["bridge_chat_out"]) + initial_filter_item_sends = bool(settings.filter_item_sends) + initial_bridge_chat_out = bool(settings.bridge_chat_out) if not os.path.exists(os.path.dirname(executable)): raise FileNotFoundError(f"Path {os.path.dirname(executable)} does not exist or could not be accessed.") diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index 0e96e7f89bcb..bfa6ceb894e0 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -5,7 +5,6 @@ import typing import Utils -import settings from BaseClasses import Region, Location, Item, Tutorial, ItemClassification from worlds.AutoWorld import World, WebWorld from worlds.LauncherComponents import Component, components, Type, launch as launch_component @@ -20,6 +19,7 @@ progressive_technology_table, common_tech_table, tech_to_progressive_lookup, progressive_tech_table, \ get_science_pack_pools, Recipe, recipes, technology_table, tech_table, factorio_base_id, useless_technologies, \ fluids, stacking_items, valid_ingredients, progressive_rows +from .settings import FactorioSettings def launch_client(): @@ -30,29 +30,6 @@ def launch_client(): components.append(Component("Factorio Client", func=launch_client, component_type=Type.CLIENT)) -class FactorioSettings(settings.Group): - class Executable(settings.UserFilePath): - is_exe = True - - class ServerSettings(settings.OptionalUserFilePath): - """ - by default, no settings are loaded if this file does not exist. \ -If this file does exist, then it will be used. - server_settings: "factorio\\\\data\\\\server-settings.json" - """ - - class FilterItemSends(settings.Bool): - """Whether to filter item send messages displayed in-game to only those that involve you.""" - - class BridgeChatOut(settings.Bool): - """Whether to send chat messages from players on the Factorio server to Archipelago.""" - - executable: Executable = Executable("factorio/bin/x64/factorio") - server_settings: typing.Optional[FactorioSettings.ServerSettings] = None - filter_item_sends: typing.Union[FilterItemSends, bool] = False - bridge_chat_out: typing.Union[BridgeChatOut, bool] = True - - class FactorioWeb(WebWorld): tutorials = [Tutorial( "Multiworld Setup Guide", diff --git a/worlds/factorio/settings.py b/worlds/factorio/settings.py new file mode 100644 index 000000000000..a2296e7395a0 --- /dev/null +++ b/worlds/factorio/settings.py @@ -0,0 +1,26 @@ +import typing + +import settings + + +class FactorioSettings(settings.Group): + class Executable(settings.UserFilePath): + is_exe = True + + class ServerSettings(settings.OptionalUserFilePath): + """ + by default, no settings are loaded if this file does not exist. \ +If this file does exist, then it will be used. + server_settings: "factorio\\\\data\\\\server-settings.json" + """ + + class FilterItemSends(settings.Bool): + """Whether to filter item send messages displayed in-game to only those that involve you.""" + + class BridgeChatOut(settings.Bool): + """Whether to send chat messages from players on the Factorio server to Archipelago.""" + + executable: Executable = Executable("factorio/bin/x64/factorio") + server_settings: typing.Optional[ServerSettings] = None + filter_item_sends: typing.Union[FilterItemSends, bool] = False + bridge_chat_out: typing.Union[BridgeChatOut, bool] = True From b2d2c8e5964ae22e8731bc1b8d3f364bbeb166ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Sun, 4 May 2025 10:28:38 -0400 Subject: [PATCH 017/183] Stardew Valley: Add void mayo requirement for Goblin Problem quest (#4933) This adds the requirement of a void mayo for the Goblin Problem quest. There are also some small adjustments to related rules - Fishing a void mayo is only considered an option during the Goblin Problem quest, as the odds of finding one after the quest drops drastically. - Entrance to the witch hut now requires the goblin problem quest, not just a void mayo. - Fishing rules are all moved to `fishing_logic.py`. - `can_fish_at` no longer check that you have any of the fishing regions and the region you actually want to fish in. - created `can_fish_anywhere` and `can_crab_pot_anywhere` to better illustrate when any fish satisfies the rule. --- worlds/stardew_valley/logic/festival_logic.py | 4 +- worlds/stardew_valley/logic/fishing_logic.py | 55 +++++++++++++++++-- worlds/stardew_valley/logic/goal_logic.py | 2 +- worlds/stardew_valley/logic/logic.py | 38 ++++++------- worlds/stardew_valley/logic/quest_logic.py | 6 +- worlds/stardew_valley/logic/skill_logic.py | 43 +-------------- .../logic/special_order_logic.py | 2 +- .../stardew_valley/mods/logic/skills_logic.py | 4 +- worlds/stardew_valley/rules.py | 8 +-- 9 files changed, 85 insertions(+), 77 deletions(-) diff --git a/worlds/stardew_valley/logic/festival_logic.py b/worlds/stardew_valley/logic/festival_logic.py index b48668964d71..72efffe83a2c 100644 --- a/worlds/stardew_valley/logic/festival_logic.py +++ b/worlds/stardew_valley/logic/festival_logic.py @@ -154,7 +154,7 @@ def can_succeed_grange_display(self) -> StardewRule: # Salads at the bar are good enough cooking_rule = self.logic.money.can_spend_at(Region.saloon, 220) - fish_rule = self.logic.skill.can_fish(difficulty=50) + fish_rule = self.logic.fishing.can_fish_anywhere(50) # Hazelnut always available since the grange display is in fall forage_rule = self.logic.region.can_reach_any((Region.forest, Region.backwoods)) @@ -179,7 +179,7 @@ def can_succeed_grange_display(self) -> StardewRule: return animal_rule & artisan_rule & cooking_rule & fish_rule & forage_rule & fruit_rule & mineral_rule & vegetable_rule def can_win_fishing_competition(self) -> StardewRule: - return self.logic.skill.can_fish(difficulty=60) + return self.logic.fishing.can_fish(60) def has_all_rarecrows(self) -> StardewRule: rules = [] diff --git a/worlds/stardew_valley/logic/fishing_logic.py b/worlds/stardew_valley/logic/fishing_logic.py index 85a9b1204076..c8f9e0a34080 100644 --- a/worlds/stardew_valley/logic/fishing_logic.py +++ b/worlds/stardew_valley/logic/fishing_logic.py @@ -1,3 +1,5 @@ +from functools import cached_property + from Utils import cache_self1 from .base_logic import BaseLogicMixin, BaseLogic from ..data import fish_data @@ -12,6 +14,8 @@ from ..strings.region_names import Region from ..strings.skill_names import Skill +fishing_regions = (Region.beach, Region.town, Region.forest, Region.mountain, Region.island_south, Region.island_west) + class FishingLogicMixin(BaseLogicMixin): def __init__(self, *args, **kwargs): @@ -20,17 +24,35 @@ def __init__(self, *args, **kwargs): class FishingLogic(BaseLogic): + @cache_self1 + def can_fish_anywhere(self, difficulty: int = 0) -> StardewRule: + return self.logic.fishing.can_fish(difficulty) & self.logic.region.can_reach_any(fishing_regions) + def can_fish_in_freshwater(self) -> StardewRule: - return self.logic.skill.can_fish() & self.logic.region.can_reach_any((Region.forest, Region.town, Region.mountain)) + return self.logic.fishing.can_fish() & self.logic.region.can_reach_any((Region.forest, Region.town, Region.mountain)) + @cached_property def has_max_fishing(self) -> StardewRule: return self.logic.tool.has_fishing_rod(4) & self.logic.skill.has_level(Skill.fishing, 10) + @cached_property def can_fish_chests(self) -> StardewRule: return self.logic.tool.has_fishing_rod(4) & self.logic.skill.has_level(Skill.fishing, 6) + @cache_self1 def can_fish_at(self, region: str) -> StardewRule: - return self.logic.skill.can_fish() & self.logic.region.can_reach(region) + return self.logic.fishing.can_fish() & self.logic.region.can_reach(region) + + @cache_self1 + def can_fish(self, difficulty: int = 0) -> StardewRule: + skill_required = min(10, max(0, int((difficulty / 10) - 1))) + if difficulty <= 40: + skill_required = 0 + + skill_rule = self.logic.skill.has_level(Skill.fishing, skill_required) + # Training rod only works with fish < 50. Fiberglass does not help you to catch higher difficulty fish, so it's skipped in logic. + number_fishing_rod_required = 1 if difficulty < 50 else (2 if difficulty < 80 else 4) + return self.logic.tool.has_fishing_rod(number_fishing_rod_required) & skill_rule @cache_self1 def can_catch_fish(self, fish: FishItem) -> StardewRule: @@ -39,14 +61,17 @@ def can_catch_fish(self, fish: FishItem) -> StardewRule: quest_rule = self.logic.fishing.can_start_extended_family_quest() region_rule = self.logic.region.can_reach_any(fish.locations) season_rule = self.logic.season.has_any(fish.seasons) + if fish.difficulty == -1: - difficulty_rule = self.logic.skill.can_crab_pot + difficulty_rule = self.logic.fishing.can_crab_pot else: - difficulty_rule = self.logic.skill.can_fish(difficulty=(120 if fish.legendary else fish.difficulty)) + difficulty_rule = self.logic.fishing.can_fish(120 if fish.legendary else fish.difficulty) + if fish.name == SVEFish.kittyfish: item_rule = self.logic.received(SVEQuestItem.kittyfish_spell) else: item_rule = True_() + return quest_rule & region_rule & season_rule & difficulty_rule & item_rule def can_catch_fish_for_fishsanity(self, fish: FishItem) -> StardewRule: @@ -78,7 +103,7 @@ def can_use_tackle(self, tackle: str) -> StardewRule: return self.logic.tool.has_fishing_rod(4) & self.logic.has(tackle) def can_catch_every_fish(self) -> StardewRule: - rules = [self.has_max_fishing()] + rules = [self.has_max_fishing] rules.extend( self.logic.fishing.can_catch_fish(fish) @@ -89,3 +114,23 @@ def can_catch_every_fish(self) -> StardewRule: def has_specific_bait(self, fish: FishItem) -> StardewRule: return self.can_catch_fish(fish) & self.logic.has(Machine.bait_maker) + + @cached_property + def can_crab_pot_anywhere(self) -> StardewRule: + return self.logic.fishing.can_fish() & self.logic.region.can_reach_any(fishing_regions) + + @cache_self1 + def can_crab_pot_at(self, region: str) -> StardewRule: + return self.logic.fishing.can_crab_pot & self.logic.region.can_reach(region) + + @cached_property + def can_crab_pot(self) -> StardewRule: + crab_pot_rule = self.logic.has(Fishing.bait) + + # We can't use the same rule if skills are vanilla, because fishing levels are required to crab pot, which is required to get fishing levels... + if self.content.features.skill_progression.is_progressive: + crab_pot_rule = crab_pot_rule & self.logic.has(Machine.crab_pot) + else: + crab_pot_rule = crab_pot_rule & self.logic.skill.can_get_fishing_xp + + return crab_pot_rule diff --git a/worlds/stardew_valley/logic/goal_logic.py b/worlds/stardew_valley/logic/goal_logic.py index 6dbb5f898765..7995ea2e0ddc 100644 --- a/worlds/stardew_valley/logic/goal_logic.py +++ b/worlds/stardew_valley/logic/goal_logic.py @@ -60,7 +60,7 @@ def can_complete_master_angler(self) -> StardewRule: if not self.content.features.fishsanity.is_enabled: return self.logic.fishing.can_catch_every_fish() - rules = [self.logic.fishing.has_max_fishing()] + rules = [self.logic.fishing.has_max_fishing] rules.extend( self.logic.fishing.can_catch_fish_for_fishsanity(fish) diff --git a/worlds/stardew_valley/logic/logic.py b/worlds/stardew_valley/logic/logic.py index 3848e393d2ce..716dd06571aa 100644 --- a/worlds/stardew_valley/logic/logic.py +++ b/worlds/stardew_valley/logic/logic.py @@ -130,9 +130,9 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC # @formatter:off self.registry.item_rules.update({ "Energy Tonic": self.money.can_spend_at(Region.hospital, 1000), - WaterChest.fishing_chest: self.fishing.can_fish_chests(), - WaterChest.golden_fishing_chest: self.fishing.can_fish_chests() & self.skill.has_mastery(Skill.fishing), - WaterChest.treasure: self.fishing.can_fish_chests(), + WaterChest.fishing_chest: self.fishing.can_fish_chests, + WaterChest.golden_fishing_chest: self.fishing.can_fish_chests & self.skill.has_mastery(Skill.fishing), + WaterChest.treasure: self.fishing.can_fish_chests, Ring.hot_java_ring: self.region.can_reach(Region.volcano_floor_10), "Galaxy Soul": self.money.can_trade_at(Region.qi_walnut_room, Currency.qi_gem, 40), "JotPK Big Buff": self.arcade.has_jotpk_power_level(7), @@ -164,7 +164,7 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC AnimalProduct.large_milk: self.animal.has_happy_animal(Animal.cow), AnimalProduct.milk: self.animal.has_animal(Animal.cow), AnimalProduct.rabbit_foot: self.animal.has_happy_animal(Animal.rabbit), - AnimalProduct.roe: self.skill.can_fish() & self.building.has_building(Building.fish_pond), + AnimalProduct.roe: self.fishing.can_fish_anywhere() & self.building.has_building(Building.fish_pond), AnimalProduct.squid_ink: self.mine.can_mine_in_the_mines_floor_81_120() | (self.building.has_building(Building.fish_pond) & self.has(Fish.squid)), AnimalProduct.sturgeon_roe: self.has(Fish.sturgeon) & self.building.has_building(Building.fish_pond), AnimalProduct.truffle: self.animal.has_animal(Animal.pig) & self.season.has_any_not_winter(), @@ -198,7 +198,7 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC ArtisanGood.targeted_bait: self.artisan.has_targeted_bait(), ArtisanGood.stardrop_tea: self.has(WaterChest.golden_fishing_chest), ArtisanGood.truffle_oil: self.has(AnimalProduct.truffle) & self.has(Machine.oil_maker), - ArtisanGood.void_mayonnaise: (self.skill.can_fish(Region.witch_swamp)) | (self.artisan.can_mayonnaise(AnimalProduct.void_egg)), + ArtisanGood.void_mayonnaise: self.artisan.can_mayonnaise(AnimalProduct.void_egg), Beverage.pina_colada: self.money.can_spend_at(Region.island_resort, 600), Beverage.triple_shot_espresso: self.has("Hot Java Ring"), Consumable.butterfly_powder: self.money.can_spend_at(Region.sewer, 20000), @@ -217,15 +217,15 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC Fertilizer.quality: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), Fertilizer.tree: self.skill.has_level(Skill.foraging, 7) & self.has(Material.fiber) & self.has(Material.stone), Fish.any: self.logic.or_(*(self.fishing.can_catch_fish(fish) for fish in content.fishes.values())), - Fish.crab: self.skill.can_crab_pot_at(Region.beach), - Fish.crayfish: self.skill.can_crab_pot_at(Region.town), - Fish.lobster: self.skill.can_crab_pot_at(Region.beach), + Fish.crab: self.fishing.can_crab_pot_at(Region.beach), + Fish.crayfish: self.fishing.can_crab_pot_at(Region.town), + Fish.lobster: self.fishing.can_crab_pot_at(Region.beach), Fish.mussel: self.tool.can_forage(Generic.any, Region.beach) or self.has(Fish.mussel_node), Fish.mussel_node: self.region.can_reach(Region.island_west), Fish.oyster: self.tool.can_forage(Generic.any, Region.beach), - Fish.periwinkle: self.skill.can_crab_pot_at(Region.town), - Fish.shrimp: self.skill.can_crab_pot_at(Region.beach), - Fish.snail: self.skill.can_crab_pot_at(Region.town), + Fish.periwinkle: self.fishing.can_crab_pot_at(Region.town), + Fish.shrimp: self.fishing.can_crab_pot_at(Region.beach), + Fish.snail: self.fishing.can_crab_pot_at(Region.town), Fishing.curiosity_lure: self.monster.can_kill(self.monster.all_monsters_by_name[Monster.mummy]), Fishing.lead_bobber: self.skill.has_level(Skill.fishing, 6) & self.money.can_spend_at(Region.fish_shop, 200), Forageable.hay: self.building.has_building(Building.silo) & self.tool.has_tool(Tool.scythe), # @@ -235,7 +235,7 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC Fossil.fossilized_leg: self.region.can_reach(Region.dig_site) & self.tool.has_tool(Tool.pickaxe), Fossil.fossilized_ribs: self.region.can_reach(Region.island_south) & self.tool.has_tool(Tool.hoe), Fossil.fossilized_skull: self.action.can_open_geode(Geode.golden_coconut), - Fossil.fossilized_spine: self.skill.can_fish(Region.dig_site), + Fossil.fossilized_spine: self.fishing.can_fish_at(Region.dig_site), Fossil.fossilized_tail: self.action.can_pan_at(Region.dig_site, ToolMaterial.copper), Fossil.mummified_bat: self.region.can_reach(Region.volcano_floor_10), Fossil.mummified_frog: self.region.can_reach(Region.island_east) & self.tool.has_tool(Tool.scythe), @@ -296,12 +296,12 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC RetainingSoil.quality: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), SpeedGro.basic: self.money.can_spend_at(Region.pierre_store, 100), SpeedGro.deluxe: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), - Trash.broken_cd: self.skill.can_crab_pot, - Trash.broken_glasses: self.skill.can_crab_pot, - Trash.driftwood: self.skill.can_crab_pot, + Trash.broken_cd: self.fishing.can_crab_pot_anywhere, + Trash.broken_glasses: self.fishing.can_crab_pot_anywhere, + Trash.driftwood: self.fishing.can_crab_pot_anywhere, Trash.joja_cola: self.money.can_spend_at(Region.saloon, 75), - Trash.soggy_newspaper: self.skill.can_crab_pot, - Trash.trash: self.skill.can_crab_pot, + Trash.soggy_newspaper: self.fishing.can_crab_pot_anywhere, + Trash.trash: self.fishing.can_crab_pot_anywhere, TreeSeed.acorn: self.skill.has_level(Skill.foraging, 1) & self.ability.can_chop_trees(), TreeSeed.mahogany: self.region.can_reach(Region.secret_woods) & self.tool.has_tool(Tool.axe, ToolMaterial.iron) & self.skill.has_level(Skill.foraging, 1), TreeSeed.maple: self.skill.has_level(Skill.foraging, 1) & self.ability.can_chop_trees(), @@ -314,8 +314,8 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC WaterItem.cave_jelly: self.fishing.can_fish_at(Region.mines_floor_100) & self.tool.has_fishing_rod(2), WaterItem.river_jelly: self.fishing.can_fish_at(Region.town) & self.tool.has_fishing_rod(2), WaterItem.sea_jelly: self.fishing.can_fish_at(Region.beach) & self.tool.has_fishing_rod(2), - WaterItem.seaweed: self.skill.can_fish(Region.tide_pools), - WaterItem.white_algae: self.skill.can_fish(Region.mines_floor_20), + WaterItem.seaweed: self.fishing.can_fish_at(Region.tide_pools), + WaterItem.white_algae: self.fishing.can_fish_at(Region.mines_floor_20), WildSeeds.grass_starter: self.money.can_spend_at(Region.pierre_store, 100), }) # @formatter:on diff --git a/worlds/stardew_valley/logic/quest_logic.py b/worlds/stardew_valley/logic/quest_logic.py index e48324680d9f..5bc3f86eae74 100644 --- a/worlds/stardew_valley/logic/quest_logic.py +++ b/worlds/stardew_valley/logic/quest_logic.py @@ -39,7 +39,7 @@ def initialize_rules(self): Quest.raising_animals: self.logic.quest.can_complete_quest(Quest.getting_started) & self.logic.building.has_building(Building.coop), Quest.feeding_animals: self.logic.quest.can_complete_quest(Quest.getting_started) & self.logic.building.has_building(Building.silo), Quest.advancement: self.logic.quest.can_complete_quest(Quest.getting_started) & self.logic.has(Craftable.scarecrow), - Quest.archaeology: self.logic.tool.has_tool(Tool.hoe) | self.logic.mine.can_mine_in_the_mines_floor_1_40() | self.logic.skill.can_fish(), + Quest.archaeology: self.logic.tool.has_tool(Tool.hoe) | self.logic.mine.can_mine_in_the_mines_floor_1_40() | self.logic.fishing.can_fish_chests, Quest.rat_problem: self.logic.region.can_reach_all((Region.town, Region.community_center)), Quest.meet_the_wizard: self.logic.quest.can_complete_quest(Quest.rat_problem), Quest.forging_ahead: self.logic.has(Ore.copper) & self.logic.has(Machine.furnace), @@ -86,7 +86,9 @@ def initialize_rules(self): Quest.catch_a_lingcod: self.logic.season.has(Season.winter) & self.logic.has(Fish.lingcod) & self.logic.relationship.can_meet(NPC.willy), Quest.dark_talisman: self.logic.region.can_reach(Region.railroad) & self.logic.wallet.has_rusty_key() & self.logic.relationship.can_meet( NPC.krobus), - Quest.goblin_problem: self.logic.region.can_reach(Region.witch_swamp), + Quest.goblin_problem: self.logic.region.can_reach(Region.witch_swamp) + # Void mayo can be fished at 5% chance in the witch swamp while the quest is active. It drops a lot after the quest. + & (self.logic.has(ArtisanGood.void_mayonnaise) | self.logic.fishing.can_fish()), Quest.magic_ink: self.logic.relationship.can_meet(NPC.wizard), Quest.the_pirates_wife: self.logic.relationship.can_meet(NPC.kent) & self.logic.relationship.can_meet(NPC.gus) & self.logic.relationship.can_meet(NPC.sandy) & self.logic.relationship.can_meet(NPC.george) & diff --git a/worlds/stardew_valley/logic/skill_logic.py b/worlds/stardew_valley/logic/skill_logic.py index e02b180f6a41..7582e5240f2f 100644 --- a/worlds/stardew_valley/logic/skill_logic.py +++ b/worlds/stardew_valley/logic/skill_logic.py @@ -1,13 +1,10 @@ from functools import cached_property -from typing import Union, Tuple from Utils import cache_self1 from .base_logic import BaseLogicMixin, BaseLogic from ..data.harvest import HarvestCropSource from ..mods.logic.mod_skills_levels import get_mod_skill_levels from ..stardew_rule import StardewRule, true_, True_, False_ -from ..strings.craftable_names import Fishing -from ..strings.machine_names import Machine from ..strings.performance_names import Performance from ..strings.quality_names import ForageQuality from ..strings.region_names import Region @@ -15,7 +12,6 @@ from ..strings.tool_names import ToolMaterial, Tool from ..strings.wallet_item_names import Wallet -fishing_regions = (Region.beach, Region.town, Region.forest, Region.mountain, Region.island_south, Region.island_west) vanilla_skill_items = ("Farming Level", "Mining Level", "Foraging Level", "Fishing Level", "Combat Level") @@ -138,44 +134,9 @@ def can_get_combat_xp(self) -> StardewRule: @cached_property def can_get_fishing_xp(self) -> StardewRule: if self.content.features.skill_progression.is_progressive: - return self.logic.skill.can_fish() | self.logic.skill.can_crab_pot + return self.logic.fishing.can_fish_anywhere() | self.logic.fishing.can_crab_pot - return self.logic.skill.can_fish() - - # Should be cached - def can_fish(self, regions: Union[str, Tuple[str, ...]] = None, difficulty: int = 0) -> StardewRule: - if isinstance(regions, str): - regions = regions, - - if regions is None or len(regions) == 0: - regions = fishing_regions - - skill_required = min(10, max(0, int((difficulty / 10) - 1))) - if difficulty <= 40: - skill_required = 0 - - skill_rule = self.logic.skill.has_level(Skill.fishing, skill_required) - region_rule = self.logic.region.can_reach_any(regions) - # Training rod only works with fish < 50. Fiberglass does not help you to catch higher difficulty fish, so it's skipped in logic. - number_fishing_rod_required = 1 if difficulty < 50 else (2 if difficulty < 80 else 4) - return self.logic.tool.has_fishing_rod(number_fishing_rod_required) & skill_rule & region_rule - - @cache_self1 - def can_crab_pot_at(self, region: str) -> StardewRule: - return self.logic.skill.can_crab_pot & self.logic.region.can_reach(region) - - @cached_property - def can_crab_pot(self) -> StardewRule: - crab_pot_rule = self.logic.has(Fishing.bait) - - # We can't use the same rule if skills are vanilla, because fishing levels are required to crab pot, which is required to get fishing levels... - if self.content.features.skill_progression.is_progressive: - crab_pot_rule = crab_pot_rule & self.logic.has(Machine.crab_pot) - else: - crab_pot_rule = crab_pot_rule & self.logic.skill.can_get_fishing_xp - - water_region_rules = self.logic.region.can_reach_any(fishing_regions) - return crab_pot_rule & water_region_rules + return self.logic.fishing.can_fish_anywhere() def can_forage_quality(self, quality: str) -> StardewRule: if quality == ForageQuality.basic: diff --git a/worlds/stardew_valley/logic/special_order_logic.py b/worlds/stardew_valley/logic/special_order_logic.py index a81f715c4866..73276ce97f38 100644 --- a/worlds/stardew_valley/logic/special_order_logic.py +++ b/worlds/stardew_valley/logic/special_order_logic.py @@ -42,7 +42,7 @@ def initialize_rules(self): SpecialOrder.fragments_of_the_past: self.logic.monster.can_kill(Monster.skeleton), SpecialOrder.gus_famous_omelet: self.logic.has(AnimalProduct.any_egg), SpecialOrder.crop_order: self.logic.ability.can_farm_perfectly() & self.logic.shipping.can_use_shipping_bin, - SpecialOrder.community_cleanup: self.logic.skill.can_crab_pot, + SpecialOrder.community_cleanup: self.logic.fishing.can_crab_pot_anywhere, SpecialOrder.the_strong_stuff: self.logic.has(ArtisanGood.specific_juice(Vegetable.potato)), SpecialOrder.pierres_prime_produce: self.logic.ability.can_farm_perfectly(), SpecialOrder.robins_project: self.logic.relationship.can_meet(NPC.robin) & self.logic.ability.can_chop_perfectly() & diff --git a/worlds/stardew_valley/mods/logic/skills_logic.py b/worlds/stardew_valley/mods/logic/skills_logic.py index b1f10d08b97e..d57e6c59313a 100644 --- a/worlds/stardew_valley/mods/logic/skills_logic.py +++ b/worlds/stardew_valley/mods/logic/skills_logic.py @@ -44,9 +44,9 @@ def can_earn_mod_skill_level(self, skill: str, level: int) -> StardewRule: def can_earn_luck_skill_level(self, level: int) -> StardewRule: if level >= 6: - return self.logic.fishing.can_fish_chests() | self.logic.action.can_open_geode(Geode.magma) + return self.logic.fishing.can_fish_chests | self.logic.action.can_open_geode(Geode.magma) if level >= 3: - return self.logic.fishing.can_fish_chests() | self.logic.action.can_open_geode(Geode.geode) + return self.logic.fishing.can_fish_chests | self.logic.action.can_open_geode(Geode.geode) return True_() # You can literally wake up and or get them by opening starting chests. def can_earn_magic_skill_level(self, level: int) -> StardewRule: diff --git a/worlds/stardew_valley/rules.py b/worlds/stardew_valley/rules.py index 4257f856c83d..51f69a1af853 100644 --- a/worlds/stardew_valley/rules.py +++ b/worlds/stardew_valley/rules.py @@ -214,7 +214,7 @@ def set_entrance_rules(logic: StardewLogic, multiworld, player, world_options: S set_entrance_rule(multiworld, player, Entrance.mountain_to_railroad, logic.received("Railroad Boulder Removed")) set_entrance_rule(multiworld, player, Entrance.enter_witch_warp_cave, logic.quest.has_dark_talisman() | (logic.mod.magic.can_blink())) - set_entrance_rule(multiworld, player, Entrance.enter_witch_hut, (logic.has(ArtisanGood.void_mayonnaise) | logic.mod.magic.can_blink())) + set_entrance_rule(multiworld, player, Entrance.enter_witch_hut, (logic.quest.can_complete_quest(Quest.goblin_problem) | logic.mod.magic.can_blink())) set_entrance_rule(multiworld, player, Entrance.enter_mutant_bug_lair, (logic.wallet.has_rusty_key() & logic.region.can_reach(Region.railroad) & logic.relationship.can_meet( NPC.krobus)) | logic.mod.magic.can_blink()) @@ -923,9 +923,9 @@ def set_magic_spell_rules(logic: StardewLogic, multiworld: MultiWorld, player: i set_rule(multiworld.get_location("Analyze: Fireball", player), logic.has("Fire Quartz")) set_rule(multiworld.get_location("Analyze: Frostbolt", player), - logic.region.can_reach(Region.mines_floor_60) & logic.skill.can_fish(difficulty=85)) + logic.region.can_reach(Region.mines_floor_60) & logic.fishing.can_fish(85)) set_rule(multiworld.get_location("Analyze All Elemental School Locations", player), - logic.has("Fire Quartz") & logic.region.can_reach(Region.mines_floor_60) & logic.skill.can_fish(difficulty=85)) + logic.has("Fire Quartz") & logic.region.can_reach(Region.mines_floor_60) & logic.fishing.can_fish(85)) # set_rule(multiworld.get_location("Analyze: Lantern", player),) set_rule(multiworld.get_location("Analyze: Tendrils", player), logic.region.can_reach(Region.farm)) @@ -948,7 +948,7 @@ def set_magic_spell_rules(logic: StardewLogic, multiworld: MultiWorld, player: i & (logic.tool.has_tool("Axe", "Basic") | logic.tool.has_tool("Pickaxe", "Basic")) & logic.has("Coffee") & logic.has("Life Elixir") & logic.ability.can_mine_perfectly() & logic.has("Earth Crystal") & - logic.has("Fire Quartz") & logic.skill.can_fish(difficulty=85) & + logic.has("Fire Quartz") & logic.fishing.can_fish(85) & logic.region.can_reach(Region.witch_hut) & logic.region.can_reach(Region.mines_floor_100) & logic.region.can_reach(Region.farm) & logic.time.has_lived_months(12))) From b217372fea536d3af83c92ee19be2e694debcc7c Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Mon, 5 May 2025 19:18:20 -0400 Subject: [PATCH 018/183] Core: Make Perfect Fuzzy Match Prioritize Casing (#4956) --- Utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Utils.py b/Utils.py index 46a0d106ef85..a3a529d754d6 100644 --- a/Utils.py +++ b/Utils.py @@ -635,6 +635,8 @@ def get_fuzzy_results(input_word: str, word_list: typing.Collection[str], limit: import jellyfish def get_fuzzy_ratio(word1: str, word2: str) -> float: + if word1 == word2: + return 1.01 return (1 - jellyfish.damerau_levenshtein_distance(word1.lower(), word2.lower()) / max(len(word1), len(word2))) @@ -655,8 +657,10 @@ def get_intended_text(input_text: str, possible_answers) -> typing.Tuple[str, bo picks = get_fuzzy_results(input_text, possible_answers, limit=2) if len(picks) > 1: dif = picks[0][1] - picks[1][1] - if picks[0][1] == 100: + if picks[0][1] == 101: return picks[0][0], True, "Perfect Match" + elif picks[0][1] == 100: + return picks[0][0], True, "Case Insensitive Perfect Match" elif picks[0][1] < 75: return picks[0][0], False, f"Didn't find something that closely matches '{input_text}', " \ f"did you mean '{picks[0][0]}'? ({picks[0][1]}% sure)" From b898b9d9e6e01e87f2a5f83fcc97e29be934ef58 Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Tue, 6 May 2025 11:32:30 -0500 Subject: [PATCH 019/183] The Messenger: fix indentation in setup guide (#4959) * The Messenger: fix indentation in setup guide * just delete the save backup section tbh --- worlds/messenger/docs/setup_en.md | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/worlds/messenger/docs/setup_en.md b/worlds/messenger/docs/setup_en.md index 64b706c2643a..8813e2238174 100644 --- a/worlds/messenger/docs/setup_en.md +++ b/worlds/messenger/docs/setup_en.md @@ -23,21 +23,12 @@ These steps can also be followed to launch the game and check for mod updates af ### Manual Installation 1. Download and install Courier Mod Loader using the instructions on the release page - * [Latest release is currently 0.7.1](https://github.com/Brokemia/Courier/releases) + * [Latest release is currently 0.7.1](https://github.com/Brokemia/Courier/releases) 2. Download and install the randomizer mod - 1. Download the latest TheMessengerRandomizerAP.zip from -[The Messenger Randomizer Mod AP releases page](https://github.com/alwaysintreble/TheMessengerRandomizerModAP/releases) - 2. Extract the zip file to `TheMessenger/Mods/` of your game's install location - * You cannot have both the non-AP randomizer and the AP randomizer installed at the same time - 3. Optionally, Backup your save game - * On Windows - 1. Press `Windows Key + R` to open run - 2. Type `%appdata%` to access AppData - 3. Navigate to `AppData/locallow/SabotageStudios/The Messenger` - 4. Rename `SaveGame.txt` to any name of your choice - * On Linux - 1. Navigate to `steamapps/compatdata/764790/pfx/drive_c/users/steamuser/AppData/LocalLow/Sabotage Studio/The Messenger` - 2. Rename `SaveGame.txt` to any name of your choice + 1. Download the latest TheMessengerRandomizerAP.zip from + [The Messenger Randomizer Mod AP releases page](https://github.com/alwaysintreble/TheMessengerRandomizerModAP/releases) + 2. Extract the zip file to `TheMessenger/Mods/` of your game's install location + * You cannot have both the non-AP randomizer and the AP randomizer installed at the same time ## Joining a MultiWorld Game @@ -57,15 +48,15 @@ These steps can also be followed to launch the game and check for mod updates af 1. Launch the game 2. Navigate to `Options > Archipelago Options` 3. Enter connection info using the relevant option buttons - * **The game is limited to alphanumerical characters, `.`, and `-`.** - * This defaults to `archipelago.gg` and does not need to be manually changed if connecting to a game hosted on the - website. - * If using a name that cannot be entered in the in game menus, there is a config file (APConfig.toml) in the game - directory. When using this, all connection information must be entered in the file. + * **The game is limited to alphanumerical characters, `.`, and `-`.** + * This defaults to `archipelago.gg` and does not need to be manually changed if connecting to a game hosted on the + website. + * If using a name that cannot be entered in the in game menus, there is a config file (APConfig.toml) in the game + directory. When using this, all connection information must be entered in the file. 4. Select the `Connect to Archipelago` button 5. Navigate to save file selection 6. Start a new game - * If you're already connected, deleting an existing save will not disconnect you and is completely safe. + * If you're already connected, deleting an existing save will not disconnect you and is completely safe. ## Continuing a MultiWorld Game From 7bbe62019ad4cad1b8623eed051d058f5ae3cf5c Mon Sep 17 00:00:00 2001 From: Seldom <38388947+Seldom-SE@users.noreply.github.com> Date: Tue, 6 May 2025 09:32:55 -0700 Subject: [PATCH 020/183] Terraria: Fix inaccessible Leading Landlord achievement when getfixedboi is enabled #4958 --- worlds/terraria/Rules.dsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/terraria/Rules.dsv b/worlds/terraria/Rules.dsv index 9ae82d747243..6bc1183e598d 100644 --- a/worlds/terraria/Rules.dsv +++ b/worlds/terraria/Rules.dsv @@ -151,7 +151,7 @@ Magma Stone; // Evil Smashing, Poppet!; Achievement; Arms Dealer; Npc; -Leading Landlord; Achievement; Nurse & Arms Dealer; // The logic is way more complex, but that doesn't affect anything +Leading Landlord; Achievement | Not Getfixedboi; Nurse & Arms Dealer; // The logic is way more complex, but that doesn't affect anything Completely Awesome; Achievement; Arms Dealer; Illegal Gun Parts; ; Arms Dealer | Flamethrower; From a3aac3d7370383d0044fa4e21897a585a9f106a2 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Tue, 6 May 2025 12:33:21 -0400 Subject: [PATCH 021/183] TUNIC: Entrance rando Direction Pairs + Decoupled (#3761) * Fix merge conflict * Fix formatting, fix rule for heir access after merge * Writing combat logic helpers * More helpers! * More logic! * Rename has_stick to has_melee, some fixes per Medic's review * Clamp max power from sword upgrades * Wrote the rest of the helpers * Remove unused import * Apply item classifications * Create the combat logic option * Item classification varies based on option * Add the shop sword logic stuff in * Add the rules for the boss-only option * Fix tiny issues * Some early Overworld combat logic * Fill out swamp combat logic * Add note * Bump up Boss Scav and Heir * More revisions to combat logic * Some changes, currently broken * New system for power, kinda jank probably * Revisions to new system, needs more balancing * Cap attack upgrades * Uncap mp power since it's directly related to damage output * Voidlings * Put together a table showing the vanilla-expected stats for each area * Added some info on potion counts * Made new helper functions * Make has_required_stats * Make has_combat_reqs * Update er_rules for new combat reqs * Fix all the broken things ever * Remove outdated todo * Make temp option for testing logic * More flexible choices for combat items * Hard require sword for bosses * Temporarily default combat logic to on * Finish writing overworld combat logic * East Forest combat logic done * Remove a few easy ones * Finish beneath the well * Dark Tomb combat logic * West Garden combat logic * make unit tests checkmark again * Weird west garden dagger house edge case * Try block for that weird west garden edge case * Add quarry combat logic * Update to filter out unreachable regions outside of ER * Fortress Grave Path logic, and a couple fixes to the west garden logic * Fortress east shortcut logic, and rewriting the try except blocks to use finally * Refactor to use a new function cause wow there was a lot of repeated code * Add combat logic to the other two sets of fortress fuses * Add combat rules to beneath the vault * Fix missing cathedral -> elevator connection * Combat logic for cathedral to elevator * Add cathedral main region, rename cathedral -> cathedral entry * Setup cathedral combat logic * Adjust locations' regions for ER * Add laurels zip logic to the chest in the spike room in cathedral * Add combat logic to frog's domain * Move frog's domain locations to regions for combat logic * Add new frog's domain regions for combat logic * Update region name for frog's domain * Fix typo * Add more regions for lower zig * Move around lower zig regions for combat logic * Lower Zig combat logic * Upper zig combat logic * Fix typo * Fix typos * Fix missing world. * Update combat logic description * Add todo * Add todo * Don't make zig skip if er or fixed shop is off * Make it so zig skip is only made with fewer shops and er * Temporarily default combat logic on * Update test to explicitly disable combat logic * Update test_access.py * Slight wording changes * Fix bugs, refactor quarry regions so you can access chests in lower quarry with ice grapples * Run through checks you can do with magic dagger * Run through checks you can do with magic dagger * Add rule for entering town portal of having equipment to deal with enemies * Add rule for atoll near the 6 crabs surrounding a poor defenseless baby slorm * Update the rule for the chest near the 6 crabs surrounding a slorm to also possibly require laurels * Revamp combat logic function to work properly without melee * Add laurels rules to combat logic chests * Modify beneath the vault bridge rule to need a lantern if combat logic is on * Put in money logic * Dagger or combat for swamp big skeleton chest * Remove the 100 moneys from logic * Modify lower zig ls drop region destinations * Remove completed todo * Reword combat logic option description, remove test option * Add combat logic to slot data * Merge Silent's missing slot data bugfix PR #3628 * Remove test combat option * Update combat logic description * Fix secret gathering place issue * Fix secret gathering place issue * Fix lower zig ls rule * Fix accidentally removed librarian rule * Remove redundant rule * Update gauntlet rule to hard-require a sword * Add test for a problematic connection * Adjust combat logic to deal with weird edge cases so it doesn't take stuff out of logic that was previously in logic * Fix create_item classification * Update some comments * Update per exempt's suggestion * Add combat logic to the well boss fight, reorder the combat logic stuff a little to better section them off * Add EntranceLayout option * Add back LogicRules as an invisible option, to not break old yamls * Fix a bug with seed group, continue changing fixed shop to entrance layout * Fix missed fixed shop -> entrance layout spot * Fix bug in seed groups with fixed shop on and off * Add entrance layout to the UT regen stuff * Put direction. in, will add them later * Remove unused elevation from portal class * Got like half of them in * Finish adding all of the directions * Add combat rule for zig front to back * Update per Medic's suggestion * Update ladder storage without items option description * Mess with state with collect and remove to save like 2 seconds (never again) * Save even more time, still never going to do this again on anything else * Add option check for collect and remove * Add directions to shop portals * Update direction in Portal with default * Move Direction above Portal * Add decoupled option, mess with plando connection stuff * Merge, implement verify plando directions * Condense the stuff in change and remove to less lines (thanks medic) * Remove unused thing * Swap to using logicmixin instead of prog_items (thanks Vi) * Fix consistency in stat counters * Add back something that was needed * Fix mistake when adding back * Making the fix better (thanks medic) * Make it actually return false if it gets to the backup lists and fails them * Fix stuff after merge * Add outlet regions, create new regions as needed for them * Put together part of decoupled and direction pairs * make direction pairs work * Make decoupled work * Make fixed shop work again * Fix a few minor bugs * Fix a few minor bugs * Fix plando * god i love programming * Reorder portal list * Update portal sorter for variable shops * Add missing parameter * Some cleanup of prints and functions * Fix typo * it's aliiiiiive * Make seed groups not sync decoupled * Add test with full-shop plando * Fix bug with vanilla portals * Handle plando connections and direction pair errors * Update plando checking for decoupled * Fix typo * Fix exception text to be shorter * Add some more comments * Add todo note * Remove unused safety thing * Remove extra plando connections definition in options * Make seed groups in decoupled with overlapping but not fully overlapped plando connections interact nicely without messing with what the entrances look like in the spoiler log * Fix weird edge case that is technically user error * Add note to fixed shop * Fix parsing shop names in UT * Remove debug print * Actually make UT work * multiworld. to world. * Fix typo from merge * Make it so the shops show up in the entrance hints * Fix bug in ladder storage rules * Remove blank line * # Conflicts: # worlds/tunic/__init__.py # worlds/tunic/er_data.py # worlds/tunic/er_rules.py # worlds/tunic/er_scripts.py # worlds/tunic/rules.py # worlds/tunic/test/test_access.py * Fix issues after merge * Update plando connections stuff in docs * Fix library mistake * has_stick -> has_melee * has_stick -> has_melee * Add a failsafe for direction pairing * Fix playthrough crash bug * Remove init from logicmixin * Updates per code review (thanks hesto) * has_stick to has_melee in newer update * has_stick to has_melee in newer update * # Conflicts: # worlds/tunic/__init__.py # worlds/tunic/combat_logic.py # worlds/tunic/er_data.py # worlds/tunic/er_rules.py # worlds/tunic/er_scripts.py * Cleanup more stuff after merge * Revert "Cleanup more stuff after merge" This reverts commit a6ee9a93da8f2fcc4413de6df6927b246017889d. * Revert "# Conflicts:" This reverts commit c74ccd74a45b6ad6b9abe6e339d115a0c98baf30. * Cleanup more stuff after merge * Swap to .get for decoupled so it works with older games probably maybe * Fix after merge * Fix typo * Fix UT support with fixed shop option * Backport plando connections fix * Fix issue with fixed shop + decoupled * Make the error not duplicate the while loop condition * Fix rule for quarry back to monastery * Fix more stuff after merge * Make it not output anything if you set plando connections but not ER * Add obvious note to plando connections description * Fix after merge * add comment to commented out connection --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/tunic/__init__.py | 133 ++++--- worlds/tunic/combat_logic.py | 1 + worlds/tunic/docs/en_TUNIC.md | 2 +- worlds/tunic/er_data.py | 533 ++++++++++++------------- worlds/tunic/er_rules.py | 21 +- worlds/tunic/er_scripts.py | 642 ++++++++++++++++++++++--------- worlds/tunic/options.py | 73 +++- worlds/tunic/rules.py | 5 +- worlds/tunic/test/test_access.py | 262 ++++++++++++- 9 files changed, 1153 insertions(+), 519 deletions(-) diff --git a/worlds/tunic/__init__.py b/worlds/tunic/__init__.py index aa6c8cdfb95f..7027ab1a6427 100644 --- a/worlds/tunic/__init__.py +++ b/worlds/tunic/__init__.py @@ -7,12 +7,12 @@ from .rules import set_location_rules, set_region_rules, randomize_ability_unlocks, gold_hexagon from .er_rules import set_er_location_rules from .regions import tunic_regions -from .er_scripts import create_er_regions +from .er_scripts import create_er_regions, verify_plando_directions from .grass import grass_location_table, grass_location_name_to_id, grass_location_name_groups, excluded_grass_locations from .er_data import portal_mapping, RegionInfo, tunic_er_regions from .options import (TunicOptions, EntranceRando, tunic_option_groups, tunic_option_presets, TunicPlandoConnections, LaurelsLocation, LogicRules, LaurelsZips, IceGrappling, LadderStorage, check_options, - get_hexagons_in_pool, HexagonQuestAbilityUnlockType) + get_hexagons_in_pool, HexagonQuestAbilityUnlockType, EntranceLayout) from .breakables import breakable_location_name_to_id, breakable_location_groups, breakable_location_table from .combat_logic import area_data, CombatState from worlds.AutoWorld import WebWorld, World @@ -61,8 +61,9 @@ class SeedGroup(TypedDict): ice_grappling: int # ice_grappling value ladder_storage: int # ls value laurels_at_10_fairies: bool # laurels location value - fixed_shop: bool # fixed shop value - plando: TunicPlandoConnections # consolidated plando connections for the seed group + entrance_layout: int # entrance layout value + has_decoupled_enabled: bool # for checking that players don't have conflicting options + plando: List[PlandoConnection] # consolidated plando connections for the seed group class TunicWorld(World): @@ -95,7 +96,7 @@ class TunicWorld(World): tunic_portal_pairs: Dict[str, str] er_portal_hints: Dict[int, str] seed_groups: Dict[str, SeedGroup] = {} - shop_num: int = 1 # need to make it so that you can walk out of shops, but also that they aren't all connected + used_shop_numbers: Set[int] er_regions: Dict[str, RegionInfo] # absolutely needed so outlet regions work # for the local_fill option @@ -122,24 +123,35 @@ def generate_early(self) -> None: check_options(self) - if self.options.logic_rules >= LogicRules.option_no_major_glitches: - self.options.laurels_zips.value = LaurelsZips.option_true - self.options.ice_grappling.value = IceGrappling.option_medium - if self.options.logic_rules.value == LogicRules.option_unrestricted: - self.options.ladder_storage.value = LadderStorage.option_medium - self.er_regions = tunic_er_regions.copy() + if self.options.plando_connections and not self.options.entrance_rando: + self.options.plando_connections.value = () if self.options.plando_connections: + def replace_connection(old_cxn: PlandoConnection, new_cxn: PlandoConnection, index: int) -> None: + self.options.plando_connections.value.remove(old_cxn) + self.options.plando_connections.value.insert(index, new_cxn) + for index, cxn in enumerate(self.options.plando_connections): - # making shops second to simplify other things later - if cxn.entrance.startswith("Shop"): - replacement = PlandoConnection(cxn.exit, "Shop Portal", "both") - self.options.plando_connections.value.remove(cxn) - self.options.plando_connections.value.insert(index, replacement) - elif cxn.exit.startswith("Shop"): - replacement = PlandoConnection(cxn.entrance, "Shop Portal", "both") - self.options.plando_connections.value.remove(cxn) - self.options.plando_connections.value.insert(index, replacement) + replacement = None + if self.options.decoupled: + # flip any that are pointing to exit to point to entrance so that I don't have to deal with it + if cxn.direction == "exit": + replacement = PlandoConnection(cxn.exit, cxn.entrance, "entrance", cxn.percentage) + # if decoupled is on and you plando'd an entrance to itself but left the direction as both + if cxn.direction == "both" and cxn.entrance == cxn.exit: + replacement = PlandoConnection(cxn.entrance, cxn.exit, "entrance") + # if decoupled is off, just convert these to both + elif cxn.direction != "both": + replacement = PlandoConnection(cxn.entrance, cxn.exit, "both", cxn.percentage) + + if replacement: + replace_connection(cxn, replacement, index) + + if (self.options.entrance_layout == EntranceLayout.option_direction_pairs + and not verify_plando_directions(cxn)): + raise OptionError(f"TUNIC: Player {self.player_name} has invalid plando connections. " + f"They have Direction Pairs enabled and the connection " + f"{cxn.entrance} --> {cxn.exit} does not abide by this option.") # Universal tracker stuff, shouldn't do anything in standard gen if hasattr(self.multiworld, "re_gen_passthrough"): @@ -160,16 +172,16 @@ def generate_early(self) -> None: self.options.hexagon_quest_ability_type.value = self.passthrough.get("hexagon_quest_ability_type", 0) self.options.entrance_rando.value = self.passthrough["entrance_rando"] self.options.shuffle_ladders.value = self.passthrough["shuffle_ladders"] + self.options.entrance_layout.value = EntranceLayout.option_standard + if ("ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].keys() + or "ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].values()): + self.options.entrance_layout.value = EntranceLayout.option_fixed_shop + self.options.decoupled = self.passthrough.get("decoupled", 0) + self.options.laurels_location.value = LaurelsLocation.option_anywhere self.options.grass_randomizer.value = self.passthrough.get("grass_randomizer", 0) self.options.breakable_shuffle.value = self.passthrough.get("breakable_shuffle", 0) self.options.laurels_location.value = self.options.laurels_location.option_anywhere - self.options.combat_logic.value = self.passthrough["combat_logic"] - - self.options.fixed_shop.value = self.options.fixed_shop.option_false - if ("ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].keys() - or "ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].values()): - self.options.fixed_shop.value = self.options.fixed_shop.option_true - + self.options.combat_logic.value = self.passthrough.get("combat_logic", 0) else: self.using_ut = False else: @@ -227,10 +239,14 @@ def stage_generate_early(cls, multiworld: MultiWorld) -> None: ice_grappling=tunic.options.ice_grappling.value, ladder_storage=tunic.options.ladder_storage.value, laurels_at_10_fairies=tunic.options.laurels_location == LaurelsLocation.option_10_fairies, - fixed_shop=bool(tunic.options.fixed_shop), - plando=tunic.options.plando_connections) + entrance_layout=tunic.options.entrance_layout.value, + has_decoupled_enabled=bool(tunic.options.decoupled), + plando=tunic.options.plando_connections.value.copy()) continue - + # I feel that syncing this one is worse than erroring out + if bool(tunic.options.decoupled) != cls.seed_groups[group]["has_decoupled_enabled"]: + raise OptionError(f"TUNIC: All players in the seed group {group} must " + f"have Decoupled either enabled or disabled.") # off is more restrictive if not tunic.options.laurels_zips: cls.seed_groups[group]["laurels_zips"] = False @@ -243,34 +259,52 @@ def stage_generate_early(cls, multiworld: MultiWorld) -> None: # laurels at 10 fairies changes logic for secret gathering place placement if tunic.options.laurels_location == 3: cls.seed_groups[group]["laurels_at_10_fairies"] = True - # more restrictive, overrides the option for others in the same group, which is better than failing imo - if tunic.options.fixed_shop: - cls.seed_groups[group]["fixed_shop"] = True - + # fixed shop and direction pairs override standard, but conflict with each other + if tunic.options.entrance_layout: + if cls.seed_groups[group]["entrance_layout"] == EntranceLayout.option_standard: + cls.seed_groups[group]["entrance_layout"] = tunic.options.entrance_layout.value + elif cls.seed_groups[group]["entrance_layout"] != tunic.options.entrance_layout.value: + raise OptionError(f"TUNIC: Conflict between seed group {group}'s Entrance Layout options. " + f"Seed group cannot have both Fixed Shop and Direction Pairs enabled.") if tunic.options.plando_connections: # loop through the connections in the player's yaml - for cxn in tunic.options.plando_connections: + for index, player_cxn in enumerate(tunic.options.plando_connections): new_cxn = True for group_cxn in cls.seed_groups[group]["plando"]: - # if neither entrance nor exit match anything in the group, add to group - if ((cxn.entrance == group_cxn.entrance and cxn.exit == group_cxn.exit) - or (cxn.exit == group_cxn.entrance and cxn.entrance == group_cxn.exit)): + # verify that it abides by direction pairs if enabled + if (cls.seed_groups[group]["entrance_layout"] == EntranceLayout.option_direction_pairs + and not verify_plando_directions(player_cxn)): + player_dir = "<->" if player_cxn.direction == "both" else "-->" + raise Exception(f"TUNIC: Conflict between Entrance Layout option and Plando Connection: " + f"{player_cxn.entrance} {player_dir} {player_cxn.exit}") + # check if this pair is the same as a pair in the group already + if ((player_cxn.entrance == group_cxn.entrance and player_cxn.exit == group_cxn.exit) + or (player_cxn.entrance == group_cxn.exit and player_cxn.exit == group_cxn.entrance + and "both" in [player_cxn.direction, group_cxn.direction])): new_cxn = False + # if the group's was one-way and the player's was two-way, we replace the group's now + if player_cxn.direction == "both" and group_cxn.direction == "entrance": + cls.seed_groups[group]["plando"].remove(group_cxn) + cls.seed_groups[group]["plando"].insert(index, player_cxn) break - - # check if this pair is the same as a pair in the group already is_mismatched = ( - cxn.entrance == group_cxn.entrance and cxn.exit != group_cxn.exit - or cxn.entrance == group_cxn.exit and cxn.exit != group_cxn.entrance - or cxn.exit == group_cxn.entrance and cxn.entrance != group_cxn.exit - or cxn.exit == group_cxn.exit and cxn.entrance != group_cxn.entrance + player_cxn.entrance == group_cxn.entrance and player_cxn.exit != group_cxn.exit + or player_cxn.exit == group_cxn.exit and player_cxn.entrance != group_cxn.entrance ) + if not tunic.options.decoupled: + is_mismatched = is_mismatched or ( + player_cxn.entrance == group_cxn.exit and player_cxn.exit != group_cxn.entrance + or player_cxn.exit == group_cxn.entrance and player_cxn.entrance != group_cxn.exit + ) if is_mismatched: - raise Exception(f"TUNIC: Conflict between seed group {group}'s plando " - f"connection {group_cxn.entrance} <-> {group_cxn.exit} and " - f"{tunic.player_name}'s plando connection {cxn.entrance} <-> {cxn.exit}") + group_dir = "<->" if group_cxn.direction == "both" else "-->" + player_dir = "<->" if player_cxn.direction == "both" else "-->" + raise OptionError(f"TUNIC: Conflict between seed group {group}'s plando " + f"connection {group_cxn.entrance} {group_dir} {group_cxn.exit} and " + f"{tunic.player_name}'s plando connection " + f"{player_cxn.entrance} {player_dir} {player_cxn.exit}") if new_cxn: - cls.seed_groups[group]["plando"].value.append(cxn) + cls.seed_groups[group]["plando"].append(player_cxn) def create_item(self, name: str, classification: ItemClassification = None) -> TunicItem: item_data = item_table[name] @@ -571,7 +605,7 @@ def extend_hint_information(self, hint_data: Dict[int, Dict[int, str]]) -> None: all_state = self.multiworld.get_all_state(True) all_state.update_reachable_regions(self.player) paths = all_state.path - portal_names = [portal.name for portal in portal_mapping] + portal_names = {portal.name for portal in portal_mapping}.union({f"Shop Portal {i + 1}" for i in range(500)}) for location in self.multiworld.get_locations(self.player): # skipping event locations if not location.address: @@ -630,6 +664,7 @@ def fill_slot_data(self) -> Dict[str, Any]: "lanternless": self.options.lanternless.value, "maskless": self.options.maskless.value, "entrance_rando": int(bool(self.options.entrance_rando.value)), + "decoupled": self.options.decoupled.value if self.options.entrance_rando else 0, "shuffle_ladders": self.options.shuffle_ladders.value, "grass_randomizer": self.options.grass_randomizer.value, "combat_logic": self.options.combat_logic.value, diff --git a/worlds/tunic/combat_logic.py b/worlds/tunic/combat_logic.py index 2e9f19dbc296..dbf1e8640ff2 100644 --- a/worlds/tunic/combat_logic.py +++ b/worlds/tunic/combat_logic.py @@ -22,6 +22,7 @@ class AreaStats(NamedTuple): # the vanilla upgrades/equipment you would have area_data: Dict[str, AreaStats] = { + # The upgrade page is right by the Well entrance. Upper Overworld by the chest in the top right might need something "Overworld": AreaStats(1, 1, 1, 1, 1, 1, 0, ["Stick"]), "East Forest": AreaStats(1, 1, 1, 1, 1, 1, 0, ["Sword"]), "Before Well": AreaStats(1, 1, 1, 1, 1, 1, 3, ["Sword", "Shield"]), diff --git a/worlds/tunic/docs/en_TUNIC.md b/worlds/tunic/docs/en_TUNIC.md index 610c7edf481b..0b85772636c5 100644 --- a/worlds/tunic/docs/en_TUNIC.md +++ b/worlds/tunic/docs/en_TUNIC.md @@ -83,7 +83,7 @@ Notes: - The Entrance Randomizer option must be enabled for it to work. - The `direction` field is not supported. Connections are always coupled. - For a list of entrance names, check `er_data.py` in the TUNIC world folder or generate a game with the Entrance Randomizer option enabled and check the spoiler log. -- There is no limit to the number of Shops you can plando. +- You can plando up to 500 additional shops in Decoupled. You should not do this. See the [Archipelago Plando Guide](../../../tutorial/Archipelago/plando/en) for more information on Plando and Connection Plando. diff --git a/worlds/tunic/er_data.py b/worlds/tunic/er_data.py index 0b3a16167a87..744326aa2060 100644 --- a/worlds/tunic/er_data.py +++ b/worlds/tunic/er_data.py @@ -1,15 +1,28 @@ -from typing import Dict, NamedTuple, List, TYPE_CHECKING, Optional +from typing import Dict, NamedTuple, List, Optional, TYPE_CHECKING from enum import IntEnum if TYPE_CHECKING: from . import TunicWorld +# the direction you go to enter a portal +class Direction(IntEnum): + none = 0 # for when the direction isn't relevant + north = 1 + south = 2 + east = 3 + west = 4 + floor = 5 + ladder_up = 6 + ladder_down = 7 + + class Portal(NamedTuple): name: str # human-readable name region: str # AP region destination: str # vanilla destination scene tag: str # vanilla tag + direction: int # the direction you go to enter a portal def scene(self) -> str: # the actual scene name in Tunic if self.region.startswith("Shop"): @@ -25,497 +38,497 @@ def destination_scene(self) -> str: # the vanilla connection portal_mapping: List[Portal] = [ Portal(name="Stick House Entrance", region="Overworld", - destination="Sword Cave", tag="_"), + destination="Sword Cave", tag="_", direction=Direction.north), Portal(name="Windmill Entrance", region="Overworld", - destination="Windmill", tag="_"), + destination="Windmill", tag="_", direction=Direction.north), Portal(name="Well Ladder Entrance", region="Overworld Well Ladder", - destination="Sewer", tag="_entrance"), + destination="Sewer", tag="_entrance", direction=Direction.ladder_down), Portal(name="Entrance to Well from Well Rail", region="Overworld Well to Furnace Rail", - destination="Sewer", tag="_west_aqueduct"), + destination="Sewer", tag="_west_aqueduct", direction=Direction.north), Portal(name="Old House Door Entrance", region="Overworld Old House Door", - destination="Overworld Interiors", tag="_house"), + destination="Overworld Interiors", tag="_house", direction=Direction.east), Portal(name="Old House Waterfall Entrance", region="Overworld", - destination="Overworld Interiors", tag="_under_checkpoint"), + destination="Overworld Interiors", tag="_under_checkpoint", direction=Direction.east), Portal(name="Entrance to Furnace from Well Rail", region="Overworld Well to Furnace Rail", - destination="Furnace", tag="_gyro_upper_north"), + destination="Furnace", tag="_gyro_upper_north", direction=Direction.south), Portal(name="Entrance to Furnace under Windmill", region="Overworld", - destination="Furnace", tag="_gyro_upper_east"), + destination="Furnace", tag="_gyro_upper_east", direction=Direction.west), Portal(name="Entrance to Furnace near West Garden", region="Overworld to West Garden from Furnace", - destination="Furnace", tag="_gyro_west"), + destination="Furnace", tag="_gyro_west", direction=Direction.east), Portal(name="Entrance to Furnace from Beach", region="Overworld Tunnel Turret", - destination="Furnace", tag="_gyro_lower"), + destination="Furnace", tag="_gyro_lower", direction=Direction.north), Portal(name="Caustic Light Cave Entrance", region="Overworld Swamp Lower Entry", - destination="Overworld Cave", tag="_"), + destination="Overworld Cave", tag="_", direction=Direction.north), Portal(name="Swamp Upper Entrance", region="Overworld Swamp Upper Entry", - destination="Swamp Redux 2", tag="_wall"), + destination="Swamp Redux 2", tag="_wall", direction=Direction.south), Portal(name="Swamp Lower Entrance", region="Overworld Swamp Lower Entry", - destination="Swamp Redux 2", tag="_conduit"), + destination="Swamp Redux 2", tag="_conduit", direction=Direction.south), Portal(name="Ruined Passage Not-Door Entrance", region="After Ruined Passage", - destination="Ruins Passage", tag="_east"), + destination="Ruins Passage", tag="_east", direction=Direction.north), Portal(name="Ruined Passage Door Entrance", region="Overworld Ruined Passage Door", - destination="Ruins Passage", tag="_west"), + destination="Ruins Passage", tag="_west", direction=Direction.east), Portal(name="Atoll Upper Entrance", region="Overworld to Atoll Upper", - destination="Atoll Redux", tag="_upper"), + destination="Atoll Redux", tag="_upper", direction=Direction.south), Portal(name="Atoll Lower Entrance", region="Overworld Beach", - destination="Atoll Redux", tag="_lower"), + destination="Atoll Redux", tag="_lower", direction=Direction.south), Portal(name="Special Shop Entrance", region="Overworld Special Shop Entry", - destination="ShopSpecial", tag="_"), + destination="ShopSpecial", tag="_", direction=Direction.east), Portal(name="Maze Cave Entrance", region="Overworld Beach", - destination="Maze Room", tag="_"), + destination="Maze Room", tag="_", direction=Direction.north), Portal(name="West Garden Entrance near Belltower", region="Overworld to West Garden Upper", - destination="Archipelagos Redux", tag="_upper"), + destination="Archipelagos Redux", tag="_upper", direction=Direction.west), Portal(name="West Garden Entrance from Furnace", region="Overworld to West Garden from Furnace", - destination="Archipelagos Redux", tag="_lower"), + destination="Archipelagos Redux", tag="_lower", direction=Direction.west), Portal(name="West Garden Laurels Entrance", region="Overworld West Garden Laurels Entry", - destination="Archipelagos Redux", tag="_lowest"), + destination="Archipelagos Redux", tag="_lowest", direction=Direction.west), Portal(name="Temple Door Entrance", region="Overworld Temple Door", - destination="Temple", tag="_main"), + destination="Temple", tag="_main", direction=Direction.north), Portal(name="Temple Rafters Entrance", region="Overworld after Temple Rafters", - destination="Temple", tag="_rafters"), + destination="Temple", tag="_rafters", direction=Direction.east), Portal(name="Ruined Shop Entrance", region="Overworld", - destination="Ruined Shop", tag="_"), + destination="Ruined Shop", tag="_", direction=Direction.east), Portal(name="Patrol Cave Entrance", region="Overworld at Patrol Cave", - destination="PatrolCave", tag="_"), + destination="PatrolCave", tag="_", direction=Direction.north), Portal(name="Hourglass Cave Entrance", region="Overworld Beach", - destination="Town Basement", tag="_beach"), + destination="Town Basement", tag="_beach", direction=Direction.north), Portal(name="Changing Room Entrance", region="Overworld", - destination="Changing Room", tag="_"), + destination="Changing Room", tag="_", direction=Direction.south), Portal(name="Cube Cave Entrance", region="Cube Cave Entrance Region", - destination="CubeRoom", tag="_"), + destination="CubeRoom", tag="_", direction=Direction.north), Portal(name="Stairs from Overworld to Mountain", region="Upper Overworld", - destination="Mountain", tag="_"), + destination="Mountain", tag="_", direction=Direction.north), Portal(name="Overworld to Fortress", region="East Overworld", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.east), Portal(name="Fountain HC Door Entrance", region="Overworld Fountain Cross Door", - destination="Town_FiligreeRoom", tag="_"), + destination="Town_FiligreeRoom", tag="_", direction=Direction.north), Portal(name="Southeast HC Door Entrance", region="Overworld Southeast Cross Door", - destination="EastFiligreeCache", tag="_"), + destination="EastFiligreeCache", tag="_", direction=Direction.north), Portal(name="Overworld to Quarry Connector", region="Overworld Quarry Entry", - destination="Darkwoods Tunnel", tag="_"), + destination="Darkwoods Tunnel", tag="_", direction=Direction.north), Portal(name="Dark Tomb Main Entrance", region="Overworld", - destination="Crypt Redux", tag="_"), + destination="Crypt Redux", tag="_", direction=Direction.north), Portal(name="Overworld to Forest Belltower", region="East Overworld", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.east), Portal(name="Town to Far Shore", region="Overworld Town Portal", - destination="Transit", tag="_teleporter_town"), + destination="Transit", tag="_teleporter_town", direction=Direction.floor), Portal(name="Spawn to Far Shore", region="Overworld Spawn Portal", - destination="Transit", tag="_teleporter_starting island"), + destination="Transit", tag="_teleporter_starting island", direction=Direction.floor), Portal(name="Secret Gathering Place Entrance", region="Overworld", - destination="Waterfall", tag="_"), - + destination="Waterfall", tag="_", direction=Direction.north), + Portal(name="Secret Gathering Place Exit", region="Secret Gathering Place", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Windmill Exit", region="Windmill", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.south), Portal(name="Windmill Shop", region="Windmill", - destination="Shop", tag="_"), - + destination="Shop", tag="_", direction=Direction.north), + Portal(name="Old House Door Exit", region="Old House Front", - destination="Overworld Redux", tag="_house"), + destination="Overworld Redux", tag="_house", direction=Direction.west), Portal(name="Old House to Glyph Tower", region="Old House Front", - destination="g_elements", tag="_"), + destination="g_elements", tag="_", direction=Direction.south), # portal drops you on north side Portal(name="Old House Waterfall Exit", region="Old House Back", - destination="Overworld Redux", tag="_under_checkpoint"), - + destination="Overworld Redux", tag="_under_checkpoint", direction=Direction.west), + Portal(name="Glyph Tower Exit", region="Relic Tower", - destination="Overworld Interiors", tag="_"), - + destination="Overworld Interiors", tag="_", direction=Direction.north), + Portal(name="Changing Room Exit", region="Changing Room", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.north), + Portal(name="Fountain HC Room Exit", region="Fountain Cross Room", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Cube Cave Exit", region="Cube Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Guard Patrol Cave Exit", region="Patrol Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Ruined Shop Exit", region="Ruined Shop", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.west), + Portal(name="Furnace Exit towards Well", region="Furnace Fuse", - destination="Overworld Redux", tag="_gyro_upper_north"), + destination="Overworld Redux", tag="_gyro_upper_north", direction=Direction.north), Portal(name="Furnace Exit to Dark Tomb", region="Furnace Walking Path", - destination="Crypt Redux", tag="_"), + destination="Crypt Redux", tag="_", direction=Direction.east), Portal(name="Furnace Exit towards West Garden", region="Furnace Walking Path", - destination="Overworld Redux", tag="_gyro_west"), + destination="Overworld Redux", tag="_gyro_west", direction=Direction.west), Portal(name="Furnace Exit to Beach", region="Furnace Ladder Area", - destination="Overworld Redux", tag="_gyro_lower"), + destination="Overworld Redux", tag="_gyro_lower", direction=Direction.south), Portal(name="Furnace Exit under Windmill", region="Furnace Ladder Area", - destination="Overworld Redux", tag="_gyro_upper_east"), - + destination="Overworld Redux", tag="_gyro_upper_east", direction=Direction.east), + Portal(name="Stick House Exit", region="Stick House", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Ruined Passage Not-Door Exit", region="Ruined Passage", - destination="Overworld Redux", tag="_east"), + destination="Overworld Redux", tag="_east", direction=Direction.south), Portal(name="Ruined Passage Door Exit", region="Ruined Passage", - destination="Overworld Redux", tag="_west"), - + destination="Overworld Redux", tag="_west", direction=Direction.west), + Portal(name="Southeast HC Room Exit", region="Southeast Cross Room", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Caustic Light Cave Exit", region="Caustic Light Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Maze Cave Exit", region="Maze Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Hourglass Cave Exit", region="Hourglass Cave", - destination="Overworld Redux", tag="_beach"), - + destination="Overworld Redux", tag="_beach", direction=Direction.south), + Portal(name="Special Shop Exit", region="Special Shop", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.west), + Portal(name="Temple Rafters Exit", region="Sealed Temple Rafters", - destination="Overworld Redux", tag="_rafters"), + destination="Overworld Redux", tag="_rafters", direction=Direction.west), Portal(name="Temple Door Exit", region="Sealed Temple", - destination="Overworld Redux", tag="_main"), + destination="Overworld Redux", tag="_main", direction=Direction.south), Portal(name="Forest Belltower to Fortress", region="Forest Belltower Main behind bushes", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.north), Portal(name="Forest Belltower to Forest", region="Forest Belltower Lower", - destination="East Forest Redux", tag="_"), + destination="East Forest Redux", tag="_", direction=Direction.south), Portal(name="Forest Belltower to Overworld", region="Forest Belltower Main", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.west), Portal(name="Forest Belltower to Guard Captain Room", region="Forest Belltower Upper", - destination="Forest Boss Room", tag="_"), + destination="Forest Boss Room", tag="_", direction=Direction.south), Portal(name="Forest to Belltower", region="East Forest", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.north), Portal(name="Forest Guard House 1 Lower Entrance", region="East Forest", - destination="East Forest Redux Laddercave", tag="_lower"), + destination="East Forest Redux Laddercave", tag="_lower", direction=Direction.north), Portal(name="Forest Guard House 1 Gate Entrance", region="East Forest", - destination="East Forest Redux Laddercave", tag="_gate"), + destination="East Forest Redux Laddercave", tag="_gate", direction=Direction.north), Portal(name="Forest Dance Fox Outside Doorway", region="East Forest Dance Fox Spot", - destination="East Forest Redux Laddercave", tag="_upper"), + destination="East Forest Redux Laddercave", tag="_upper", direction=Direction.east), Portal(name="Forest to Far Shore", region="East Forest Portal", - destination="Transit", tag="_teleporter_forest teleporter"), + destination="Transit", tag="_teleporter_forest teleporter", direction=Direction.floor), Portal(name="Forest Guard House 2 Lower Entrance", region="Lower Forest", - destination="East Forest Redux Interior", tag="_lower"), + destination="East Forest Redux Interior", tag="_lower", direction=Direction.north), Portal(name="Forest Guard House 2 Upper Entrance", region="East Forest", - destination="East Forest Redux Interior", tag="_upper"), + destination="East Forest Redux Interior", tag="_upper", direction=Direction.east), Portal(name="Forest Grave Path Lower Entrance", region="East Forest", - destination="Sword Access", tag="_lower"), + destination="Sword Access", tag="_lower", direction=Direction.east), Portal(name="Forest Grave Path Upper Entrance", region="East Forest", - destination="Sword Access", tag="_upper"), + destination="Sword Access", tag="_upper", direction=Direction.east), Portal(name="Forest Grave Path Upper Exit", region="Forest Grave Path Upper", - destination="East Forest Redux", tag="_upper"), + destination="East Forest Redux", tag="_upper", direction=Direction.west), Portal(name="Forest Grave Path Lower Exit", region="Forest Grave Path Main", - destination="East Forest Redux", tag="_lower"), + destination="East Forest Redux", tag="_lower", direction=Direction.west), Portal(name="East Forest Hero's Grave", region="Forest Hero's Grave", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Guard House 1 Dance Fox Exit", region="Guard House 1 West", - destination="East Forest Redux", tag="_upper"), + destination="East Forest Redux", tag="_upper", direction=Direction.west), Portal(name="Guard House 1 Lower Exit", region="Guard House 1 West", - destination="East Forest Redux", tag="_lower"), + destination="East Forest Redux", tag="_lower", direction=Direction.south), Portal(name="Guard House 1 Upper Forest Exit", region="Guard House 1 East", - destination="East Forest Redux", tag="_gate"), + destination="East Forest Redux", tag="_gate", direction=Direction.south), Portal(name="Guard House 1 to Guard Captain Room", region="Guard House 1 East", - destination="Forest Boss Room", tag="_"), + destination="Forest Boss Room", tag="_", direction=Direction.north), Portal(name="Guard House 2 Lower Exit", region="Guard House 2 Lower", - destination="East Forest Redux", tag="_lower"), + destination="East Forest Redux", tag="_lower", direction=Direction.south), Portal(name="Guard House 2 Upper Exit", region="Guard House 2 Upper before bushes", - destination="East Forest Redux", tag="_upper"), + destination="East Forest Redux", tag="_upper", direction=Direction.west), Portal(name="Guard Captain Room Non-Gate Exit", region="Forest Boss Room", - destination="East Forest Redux Laddercave", tag="_"), + destination="East Forest Redux Laddercave", tag="_", direction=Direction.south), Portal(name="Guard Captain Room Gate Exit", region="Forest Boss Room", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.north), Portal(name="Well Ladder Exit", region="Beneath the Well Ladder Exit", - destination="Overworld Redux", tag="_entrance"), + destination="Overworld Redux", tag="_entrance", direction=Direction.ladder_up), Portal(name="Well to Well Boss", region="Beneath the Well Back", - destination="Sewer_Boss", tag="_"), + destination="Sewer_Boss", tag="_", direction=Direction.east), Portal(name="Well Exit towards Furnace", region="Beneath the Well Back", - destination="Overworld Redux", tag="_west_aqueduct"), + destination="Overworld Redux", tag="_west_aqueduct", direction=Direction.south), Portal(name="Well Boss to Well", region="Well Boss", - destination="Sewer", tag="_"), + destination="Sewer", tag="_", direction=Direction.west), Portal(name="Checkpoint to Dark Tomb", region="Dark Tomb Checkpoint", - destination="Crypt Redux", tag="_"), + destination="Crypt Redux", tag="_", direction=Direction.ladder_up), Portal(name="Dark Tomb to Overworld", region="Dark Tomb Entry Point", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.south), Portal(name="Dark Tomb to Furnace", region="Dark Tomb Dark Exit", - destination="Furnace", tag="_"), + destination="Furnace", tag="_", direction=Direction.west), Portal(name="Dark Tomb to Checkpoint", region="Dark Tomb Entry Point", - destination="Sewer_Boss", tag="_"), - + destination="Sewer_Boss", tag="_", direction=Direction.ladder_down), + Portal(name="West Garden Exit near Hero's Grave", region="West Garden before Terry", - destination="Overworld Redux", tag="_lower"), + destination="Overworld Redux", tag="_lower", direction=Direction.east), Portal(name="West Garden to Magic Dagger House", region="West Garden at Dagger House", - destination="archipelagos_house", tag="_"), + destination="archipelagos_house", tag="_", direction=Direction.east), Portal(name="West Garden Exit after Boss", region="West Garden after Boss", - destination="Overworld Redux", tag="_upper"), + destination="Overworld Redux", tag="_upper", direction=Direction.east), Portal(name="West Garden Shop", region="West Garden before Terry", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.east), Portal(name="West Garden Laurels Exit", region="West Garden Laurels Exit Region", - destination="Overworld Redux", tag="_lowest"), + destination="Overworld Redux", tag="_lowest", direction=Direction.east), Portal(name="West Garden Hero's Grave", region="West Garden Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="West Garden to Far Shore", region="West Garden Portal", - destination="Transit", tag="_teleporter_archipelagos_teleporter"), + destination="Transit", tag="_teleporter_archipelagos_teleporter", direction=Direction.floor), Portal(name="Magic Dagger House Exit", region="Magic Dagger House", - destination="Archipelagos Redux", tag="_"), + destination="Archipelagos Redux", tag="_", direction=Direction.west), Portal(name="Fortress Courtyard to Fortress Grave Path Lower", region="Fortress Courtyard", - destination="Fortress Reliquary", tag="_Lower"), + destination="Fortress Reliquary", tag="_Lower", direction=Direction.east), Portal(name="Fortress Courtyard to Fortress Grave Path Upper", region="Fortress Courtyard Upper", - destination="Fortress Reliquary", tag="_Upper"), + destination="Fortress Reliquary", tag="_Upper", direction=Direction.east), Portal(name="Fortress Courtyard to Fortress Interior", region="Fortress Courtyard", - destination="Fortress Main", tag="_Big Door"), + destination="Fortress Main", tag="_Big Door", direction=Direction.north), Portal(name="Fortress Courtyard to East Fortress", region="Fortress Courtyard Upper", - destination="Fortress East", tag="_"), + destination="Fortress East", tag="_", direction=Direction.north), Portal(name="Fortress Courtyard to Beneath the Vault", region="Beneath the Vault Entry", - destination="Fortress Basement", tag="_"), + destination="Fortress Basement", tag="_", direction=Direction.ladder_down), Portal(name="Fortress Courtyard to Forest Belltower", region="Fortress Exterior from East Forest", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.south), Portal(name="Fortress Courtyard to Overworld", region="Fortress Exterior from Overworld", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.west), Portal(name="Fortress Courtyard Shop", region="Fortress Exterior near cave", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Beneath the Vault to Fortress Interior", region="Beneath the Vault Back", - destination="Fortress Main", tag="_"), + destination="Fortress Main", tag="_", direction=Direction.east), Portal(name="Beneath the Vault to Fortress Courtyard", region="Beneath the Vault Ladder Exit", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.ladder_up), Portal(name="Fortress Interior Main Exit", region="Eastern Vault Fortress", - destination="Fortress Courtyard", tag="_Big Door"), + destination="Fortress Courtyard", tag="_Big Door", direction=Direction.south), Portal(name="Fortress Interior to Beneath the Earth", region="Eastern Vault Fortress", - destination="Fortress Basement", tag="_"), + destination="Fortress Basement", tag="_", direction=Direction.west), Portal(name="Fortress Interior to Siege Engine Arena", region="Eastern Vault Fortress Gold Door", - destination="Fortress Arena", tag="_"), + destination="Fortress Arena", tag="_", direction=Direction.north), Portal(name="Fortress Interior Shop", region="Eastern Vault Fortress", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Fortress Interior to East Fortress Upper", region="Eastern Vault Fortress", - destination="Fortress East", tag="_upper"), + destination="Fortress East", tag="_upper", direction=Direction.east), Portal(name="Fortress Interior to East Fortress Lower", region="Eastern Vault Fortress", - destination="Fortress East", tag="_lower"), + destination="Fortress East", tag="_lower", direction=Direction.east), Portal(name="East Fortress to Interior Lower", region="Fortress East Shortcut Lower", - destination="Fortress Main", tag="_lower"), + destination="Fortress Main", tag="_lower", direction=Direction.west), Portal(name="East Fortress to Courtyard", region="Fortress East Shortcut Upper", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.south), Portal(name="East Fortress to Interior Upper", region="Fortress East Shortcut Upper", - destination="Fortress Main", tag="_upper"), + destination="Fortress Main", tag="_upper", direction=Direction.west), Portal(name="Fortress Grave Path Lower Exit", region="Fortress Grave Path Entry", - destination="Fortress Courtyard", tag="_Lower"), + destination="Fortress Courtyard", tag="_Lower", direction=Direction.west), Portal(name="Fortress Hero's Grave", region="Fortress Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Fortress Grave Path Upper Exit", region="Fortress Grave Path Upper", - destination="Fortress Courtyard", tag="_Upper"), + destination="Fortress Courtyard", tag="_Upper", direction=Direction.west), Portal(name="Fortress Grave Path Dusty Entrance", region="Fortress Grave Path Dusty Entrance Region", - destination="Dusty", tag="_"), + destination="Dusty", tag="_", direction=Direction.north), Portal(name="Dusty Exit", region="Fortress Leaf Piles", - destination="Fortress Reliquary", tag="_"), + destination="Fortress Reliquary", tag="_", direction=Direction.south), Portal(name="Siege Engine Arena to Fortress", region="Fortress Arena", - destination="Fortress Main", tag="_"), + destination="Fortress Main", tag="_", direction=Direction.south), Portal(name="Fortress to Far Shore", region="Fortress Arena Portal", - destination="Transit", tag="_teleporter_spidertank"), + destination="Transit", tag="_teleporter_spidertank", direction=Direction.floor), Portal(name="Atoll Upper Exit", region="Ruined Atoll", - destination="Overworld Redux", tag="_upper"), + destination="Overworld Redux", tag="_upper", direction=Direction.north), Portal(name="Atoll Lower Exit", region="Ruined Atoll Lower Entry Area", - destination="Overworld Redux", tag="_lower"), + destination="Overworld Redux", tag="_lower", direction=Direction.north), Portal(name="Atoll Shop", region="Ruined Atoll", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Atoll to Far Shore", region="Ruined Atoll Portal", - destination="Transit", tag="_teleporter_atoll"), + destination="Transit", tag="_teleporter_atoll", direction=Direction.floor), Portal(name="Atoll Statue Teleporter", region="Ruined Atoll Statue", - destination="Library Exterior", tag="_"), + destination="Library Exterior", tag="_", direction=Direction.floor), Portal(name="Frog Stairs Eye Entrance", region="Ruined Atoll Frog Eye", - destination="Frog Stairs", tag="_eye"), + destination="Frog Stairs", tag="_eye", direction=Direction.south), # camera rotates, it's fine Portal(name="Frog Stairs Mouth Entrance", region="Ruined Atoll Frog Mouth", - destination="Frog Stairs", tag="_mouth"), + destination="Frog Stairs", tag="_mouth", direction=Direction.east), Portal(name="Frog Stairs Eye Exit", region="Frog Stairs Eye Exit", - destination="Atoll Redux", tag="_eye"), + destination="Atoll Redux", tag="_eye", direction=Direction.north), Portal(name="Frog Stairs Mouth Exit", region="Frog Stairs Upper", - destination="Atoll Redux", tag="_mouth"), + destination="Atoll Redux", tag="_mouth", direction=Direction.west), Portal(name="Frog Stairs to Frog's Domain's Entrance", region="Frog Stairs to Frog's Domain", - destination="frog cave main", tag="_Entrance"), + destination="frog cave main", tag="_Entrance", direction=Direction.ladder_down), Portal(name="Frog Stairs to Frog's Domain's Exit", region="Frog Stairs Lower", - destination="frog cave main", tag="_Exit"), + destination="frog cave main", tag="_Exit", direction=Direction.east), Portal(name="Frog's Domain Ladder Exit", region="Frog's Domain Entry", - destination="Frog Stairs", tag="_Entrance"), + destination="Frog Stairs", tag="_Entrance", direction=Direction.ladder_up), Portal(name="Frog's Domain Orb Exit", region="Frog's Domain Back", - destination="Frog Stairs", tag="_Exit"), + destination="Frog Stairs", tag="_Exit", direction=Direction.west), Portal(name="Library Exterior Tree", region="Library Exterior Tree Region", - destination="Atoll Redux", tag="_"), + destination="Atoll Redux", tag="_", direction=Direction.floor), Portal(name="Library Exterior Ladder", region="Library Exterior Ladder Region", - destination="Library Hall", tag="_"), + destination="Library Hall", tag="_", direction=Direction.west), # camera rotates Portal(name="Library Hall Bookshelf Exit", region="Library Hall Bookshelf", - destination="Library Exterior", tag="_"), + destination="Library Exterior", tag="_", direction=Direction.east), Portal(name="Library Hero's Grave", region="Library Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Library Hall to Rotunda", region="Library Hall to Rotunda", - destination="Library Rotunda", tag="_"), + destination="Library Rotunda", tag="_", direction=Direction.ladder_up), Portal(name="Library Rotunda Lower Exit", region="Library Rotunda to Hall", - destination="Library Hall", tag="_"), + destination="Library Hall", tag="_", direction=Direction.ladder_down), Portal(name="Library Rotunda Upper Exit", region="Library Rotunda to Lab", - destination="Library Lab", tag="_"), + destination="Library Lab", tag="_", direction=Direction.ladder_up), Portal(name="Library Lab to Rotunda", region="Library Lab Lower", - destination="Library Rotunda", tag="_"), + destination="Library Rotunda", tag="_", direction=Direction.ladder_down), Portal(name="Library to Far Shore", region="Library Portal", - destination="Transit", tag="_teleporter_library teleporter"), + destination="Transit", tag="_teleporter_library teleporter", direction=Direction.floor), Portal(name="Library Lab to Librarian Arena", region="Library Lab to Librarian", - destination="Library Arena", tag="_"), + destination="Library Arena", tag="_", direction=Direction.ladder_up), Portal(name="Librarian Arena Exit", region="Library Arena", - destination="Library Lab", tag="_"), + destination="Library Lab", tag="_", direction=Direction.ladder_down), Portal(name="Stairs to Top of the Mountain", region="Lower Mountain Stairs", - destination="Mountaintop", tag="_"), + destination="Mountaintop", tag="_", direction=Direction.north), Portal(name="Mountain to Quarry", region="Lower Mountain", - destination="Quarry Redux", tag="_"), + destination="Quarry Redux", tag="_", direction=Direction.south), # connecting is north Portal(name="Mountain to Overworld", region="Lower Mountain", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Top of the Mountain Exit", region="Top of the Mountain", - destination="Mountain", tag="_"), - + destination="Mountain", tag="_", direction=Direction.south), + Portal(name="Quarry Connector to Overworld", region="Quarry Connector", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.south), Portal(name="Quarry Connector to Quarry", region="Quarry Connector", - destination="Quarry Redux", tag="_"), - + destination="Quarry Redux", tag="_", direction=Direction.north), # rotates, it's fine + Portal(name="Quarry to Overworld Exit", region="Quarry Entry", - destination="Darkwoods Tunnel", tag="_"), + destination="Darkwoods Tunnel", tag="_", direction=Direction.south), # rotates, it's fine Portal(name="Quarry Shop", region="Quarry Entry", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Quarry to Monastery Front", region="Quarry Monastery Entry", - destination="Monastery", tag="_front"), + destination="Monastery", tag="_front", direction=Direction.north), Portal(name="Quarry to Monastery Back", region="Monastery Rope", - destination="Monastery", tag="_back"), + destination="Monastery", tag="_back", direction=Direction.east), Portal(name="Quarry to Mountain", region="Quarry Back", - destination="Mountain", tag="_"), + destination="Mountain", tag="_", direction=Direction.north), Portal(name="Quarry to Ziggurat", region="Lower Quarry Zig Door", - destination="ziggurat2020_0", tag="_"), + destination="ziggurat2020_0", tag="_", direction=Direction.north), Portal(name="Quarry to Far Shore", region="Quarry Portal", - destination="Transit", tag="_teleporter_quarry teleporter"), - + destination="Transit", tag="_teleporter_quarry teleporter", direction=Direction.floor), + Portal(name="Monastery Rear Exit", region="Monastery Back", - destination="Quarry Redux", tag="_back"), + destination="Quarry Redux", tag="_back", direction=Direction.west), Portal(name="Monastery Front Exit", region="Monastery Front", - destination="Quarry Redux", tag="_front"), + destination="Quarry Redux", tag="_front", direction=Direction.south), Portal(name="Monastery Hero's Grave", region="Monastery Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), - + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), + Portal(name="Ziggurat Entry Hallway to Ziggurat Upper", region="Rooted Ziggurat Entry", - destination="ziggurat2020_1", tag="_"), + destination="ziggurat2020_1", tag="_", direction=Direction.north), Portal(name="Ziggurat Entry Hallway to Quarry", region="Rooted Ziggurat Entry", - destination="Quarry Redux", tag="_"), - + destination="Quarry Redux", tag="_", direction=Direction.south), + Portal(name="Ziggurat Upper to Ziggurat Entry Hallway", region="Rooted Ziggurat Upper Entry", - destination="ziggurat2020_0", tag="_"), + destination="ziggurat2020_0", tag="_", direction=Direction.south), Portal(name="Ziggurat Upper to Ziggurat Tower", region="Rooted Ziggurat Upper Back", - destination="ziggurat2020_2", tag="_"), - + destination="ziggurat2020_2", tag="_", direction=Direction.north), # connecting is south + Portal(name="Ziggurat Tower to Ziggurat Upper", region="Rooted Ziggurat Middle Top", - destination="ziggurat2020_1", tag="_"), + destination="ziggurat2020_1", tag="_", direction=Direction.south), Portal(name="Ziggurat Tower to Ziggurat Lower", region="Rooted Ziggurat Middle Bottom", - destination="ziggurat2020_3", tag="_"), - + destination="ziggurat2020_3", tag="_", direction=Direction.south), + Portal(name="Ziggurat Lower to Ziggurat Tower", region="Rooted Ziggurat Lower Entry", - destination="ziggurat2020_2", tag="_"), + destination="ziggurat2020_2", tag="_", direction=Direction.north), Portal(name="Ziggurat Portal Room Entrance", region="Rooted Ziggurat Portal Room Entrance", - destination="ziggurat2020_FTRoom", tag="_"), + destination="ziggurat2020_FTRoom", tag="_", direction=Direction.north), # only if fixed shop is on, removed otherwise - Portal(name="Ziggurat Lower Falling Entrance", region="Zig Skip Exit", - destination="ziggurat2020_1", tag="_zig2_skip"), - + Portal(name="Ziggurat Lower Falling Entrance", region="Zig Skip Exit", # not a real region + destination="ziggurat2020_1", tag="_zig2_skip", direction=Direction.none), + Portal(name="Ziggurat Portal Room Exit", region="Rooted Ziggurat Portal Room Exit", - destination="ziggurat2020_3", tag="_"), + destination="ziggurat2020_3", tag="_", direction=Direction.south), Portal(name="Ziggurat to Far Shore", region="Rooted Ziggurat Portal", - destination="Transit", tag="_teleporter_ziggurat teleporter"), - + destination="Transit", tag="_teleporter_ziggurat teleporter", direction=Direction.floor), + Portal(name="Swamp Lower Exit", region="Swamp Front", - destination="Overworld Redux", tag="_conduit"), + destination="Overworld Redux", tag="_conduit", direction=Direction.north), Portal(name="Swamp to Cathedral Main Entrance", region="Swamp to Cathedral Main Entrance Region", - destination="Cathedral Redux", tag="_main"), + destination="Cathedral Redux", tag="_main", direction=Direction.north), Portal(name="Swamp to Cathedral Secret Legend Room Entrance", region="Swamp to Cathedral Treasure Room", - destination="Cathedral Redux", tag="_secret"), + destination="Cathedral Redux", tag="_secret", direction=Direction.south), # feels a little weird Portal(name="Swamp to Gauntlet", region="Back of Swamp", - destination="Cathedral Arena", tag="_"), + destination="Cathedral Arena", tag="_", direction=Direction.north), Portal(name="Swamp Shop", region="Swamp Front", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Swamp Upper Exit", region="Back of Swamp Laurels Area", - destination="Overworld Redux", tag="_wall"), + destination="Overworld Redux", tag="_wall", direction=Direction.north), Portal(name="Swamp Hero's Grave", region="Swamp Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), - + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), + Portal(name="Cathedral Main Exit", region="Cathedral Entry", - destination="Swamp Redux 2", tag="_main"), + destination="Swamp Redux 2", tag="_main", direction=Direction.south), Portal(name="Cathedral Elevator", region="Cathedral to Gauntlet", - destination="Cathedral Arena", tag="_"), + destination="Cathedral Arena", tag="_", direction=Direction.ladder_down), # elevators are ladders, right? Portal(name="Cathedral Secret Legend Room Exit", region="Cathedral Secret Legend Room", - destination="Swamp Redux 2", tag="_secret"), - + destination="Swamp Redux 2", tag="_secret", direction=Direction.north), + Portal(name="Gauntlet to Swamp", region="Cathedral Gauntlet Exit", - destination="Swamp Redux 2", tag="_"), + destination="Swamp Redux 2", tag="_", direction=Direction.south), Portal(name="Gauntlet Elevator", region="Cathedral Gauntlet Checkpoint", - destination="Cathedral Redux", tag="_"), + destination="Cathedral Redux", tag="_", direction=Direction.ladder_up), Portal(name="Gauntlet Shop", region="Cathedral Gauntlet Checkpoint", - destination="Shop", tag="_"), - + destination="Shop", tag="_", direction=Direction.east), + Portal(name="Hero's Grave to Fortress", region="Hero Relic - Fortress", - destination="Fortress Reliquary", tag="_teleporter_relic plinth"), + destination="Fortress Reliquary", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to Monastery", region="Hero Relic - Quarry", - destination="Monastery", tag="_teleporter_relic plinth"), + destination="Monastery", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to West Garden", region="Hero Relic - West Garden", - destination="Archipelagos Redux", tag="_teleporter_relic plinth"), + destination="Archipelagos Redux", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to East Forest", region="Hero Relic - East Forest", - destination="Sword Access", tag="_teleporter_relic plinth"), + destination="Sword Access", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to Library", region="Hero Relic - Library", - destination="Library Hall", tag="_teleporter_relic plinth"), + destination="Library Hall", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to Swamp", region="Hero Relic - Swamp", - destination="Swamp Redux 2", tag="_teleporter_relic plinth"), - + destination="Swamp Redux 2", tag="_teleporter_relic plinth", direction=Direction.floor), + Portal(name="Far Shore to West Garden", region="Far Shore to West Garden Region", - destination="Archipelagos Redux", tag="_teleporter_archipelagos_teleporter"), + destination="Archipelagos Redux", tag="_teleporter_archipelagos_teleporter", direction=Direction.floor), Portal(name="Far Shore to Library", region="Far Shore to Library Region", - destination="Library Lab", tag="_teleporter_library teleporter"), + destination="Library Lab", tag="_teleporter_library teleporter", direction=Direction.floor), Portal(name="Far Shore to Quarry", region="Far Shore to Quarry Region", - destination="Quarry Redux", tag="_teleporter_quarry teleporter"), + destination="Quarry Redux", tag="_teleporter_quarry teleporter", direction=Direction.floor), Portal(name="Far Shore to East Forest", region="Far Shore to East Forest Region", - destination="East Forest Redux", tag="_teleporter_forest teleporter"), + destination="East Forest Redux", tag="_teleporter_forest teleporter", direction=Direction.floor), Portal(name="Far Shore to Fortress", region="Far Shore to Fortress Region", - destination="Fortress Arena", tag="_teleporter_spidertank"), + destination="Fortress Arena", tag="_teleporter_spidertank", direction=Direction.floor), Portal(name="Far Shore to Atoll", region="Far Shore", - destination="Atoll Redux", tag="_teleporter_atoll"), + destination="Atoll Redux", tag="_teleporter_atoll", direction=Direction.floor), Portal(name="Far Shore to Ziggurat", region="Far Shore", - destination="ziggurat2020_FTRoom", tag="_teleporter_ziggurat teleporter"), + destination="ziggurat2020_FTRoom", tag="_teleporter_ziggurat teleporter", direction=Direction.floor), Portal(name="Far Shore to Heir", region="Far Shore", - destination="Spirit Arena", tag="_teleporter_spirit arena"), + destination="Spirit Arena", tag="_teleporter_spirit arena", direction=Direction.floor), Portal(name="Far Shore to Town", region="Far Shore", - destination="Overworld Redux", tag="_teleporter_town"), + destination="Overworld Redux", tag="_teleporter_town", direction=Direction.floor), Portal(name="Far Shore to Spawn", region="Far Shore to Spawn Region", - destination="Overworld Redux", tag="_teleporter_starting island"), - + destination="Overworld Redux", tag="_teleporter_starting island", direction=Direction.floor), + Portal(name="Heir Arena Exit", region="Spirit Arena", - destination="Transit", tag="_teleporter_spirit arena"), - + destination="Transit", tag="_teleporter_spirit arena", direction=Direction.floor), + Portal(name="Purgatory Bottom Exit", region="Purgatory", - destination="Purgatory", tag="_bottom"), + destination="Purgatory", tag="_bottom", direction=Direction.south), Portal(name="Purgatory Top Exit", region="Purgatory", - destination="Purgatory", tag="_top"), + destination="Purgatory", tag="_top", direction=Direction.north), ] @@ -523,6 +536,7 @@ class RegionInfo(NamedTuple): game_scene: str # the name of the scene in the actual game dead_end: int = 0 # if a region has only one exit outlet_region: Optional[str] = None + is_fake_region: bool = False # gets the outlet region name if it exists, the region if it doesn't @@ -540,9 +554,9 @@ class DeadEnd(IntEnum): # key is the AP region name. "Fake" in region info just means the mod won't receive that info at all tunic_er_regions: Dict[str, RegionInfo] = { - "Menu": RegionInfo("Fake", dead_end=DeadEnd.all_cats), + "Menu": RegionInfo("Fake", dead_end=DeadEnd.all_cats, is_fake_region=True), "Overworld": RegionInfo("Overworld Redux"), # main overworld, the central area - "Overworld Holy Cross": RegionInfo("Fake", dead_end=DeadEnd.all_cats), # main overworld holy cross checks + "Overworld Holy Cross": RegionInfo("Fake", dead_end=DeadEnd.all_cats, is_fake_region=True), # main overworld holy cross checks "Overworld Belltower": RegionInfo("Overworld Redux"), # the area with the belltower and chest "Overworld Belltower at Bell": RegionInfo("Overworld Redux"), # being able to ring the belltower, basically "Overworld Swamp Upper Entry": RegionInfo("Overworld Redux"), # upper swamp entry spot @@ -722,7 +736,7 @@ class DeadEnd(IntEnum): "Rooted Ziggurat Lower Front": RegionInfo("ziggurat2020_3"), # the front for combat logic "Rooted Ziggurat Lower Mid Checkpoint": RegionInfo("ziggurat2020_3"), # the mid-checkpoint before double admin "Rooted Ziggurat Lower Back": RegionInfo("ziggurat2020_3"), # the boss side - "Zig Skip Exit": RegionInfo("ziggurat2020_3", dead_end=DeadEnd.special, outlet_region="Rooted Ziggurat Lower Entry"), # for use with fixed shop on + "Zig Skip Exit": RegionInfo("ziggurat2020_3", dead_end=DeadEnd.special, outlet_region="Rooted Ziggurat Lower Entry", is_fake_region=True), # for use with fixed shop on "Rooted Ziggurat Portal Room Entrance": RegionInfo("ziggurat2020_3", outlet_region="Rooted Ziggurat Lower Back"), # the door itself on the zig 3 side "Rooted Ziggurat Portal": RegionInfo("ziggurat2020_FTRoom", outlet_region="Rooted Ziggurat Portal Room"), "Rooted Ziggurat Portal Room": RegionInfo("ziggurat2020_FTRoom"), @@ -758,7 +772,7 @@ class DeadEnd(IntEnum): "Purgatory": RegionInfo("Purgatory"), "Shop": RegionInfo("Shop", dead_end=DeadEnd.all_cats), "Spirit Arena": RegionInfo("Spirit Arena", dead_end=DeadEnd.all_cats), - "Spirit Arena Victory": RegionInfo("Spirit Arena", dead_end=DeadEnd.all_cats), + "Spirit Arena Victory": RegionInfo("Spirit Arena", dead_end=DeadEnd.all_cats, is_fake_region=True), } @@ -813,7 +827,7 @@ class DeadEnd(IntEnum): "Overworld Southeast Cross Door": [], "Overworld Fountain Cross Door": - [], + [], "Overworld Town Portal": [], "Overworld Spawn Portal": @@ -1301,7 +1315,6 @@ class DeadEnd(IntEnum): [], }, - # cannot get from frogs back to front "Library Exterior Ladder Region": { "Library Exterior by Tree": [], @@ -1634,10 +1647,6 @@ class DeadEnd(IntEnum): "Rooted Ziggurat Portal Room Entrance": [], }, - "Zig Skip Exit": { - "Rooted Ziggurat Lower Front": - [], - }, "Rooted Ziggurat Portal Room Entrance": { "Rooted Ziggurat Lower Back": [], diff --git a/worlds/tunic/er_rules.py b/worlds/tunic/er_rules.py index 84ebb4830474..8c0979e3e466 100644 --- a/worlds/tunic/er_rules.py +++ b/worlds/tunic/er_rules.py @@ -381,9 +381,11 @@ def get_paired_portal(portal_sd: str) -> Tuple[str, str]: regions["Overworld"].connect( connecting_region=regions["Overworld Tunnel Turret"], rule=lambda state: state.has(laurels, player)) - regions["Overworld Tunnel Turret"].connect( - connecting_region=regions["Overworld"], - rule=lambda state: state.has_any({grapple, laurels}, player)) + + # always have access to Overworld, so connecting back isn't needed + # regions["Overworld Tunnel Turret"].connect( + # connecting_region=regions["Overworld"], + # rule=lambda state: state.has_any({grapple, laurels}, player)) cube_entrance = regions["Overworld"].connect( connecting_region=regions["Cube Cave Entrance Region"], @@ -1053,11 +1055,6 @@ def get_paired_portal(portal_sd: str) -> Tuple[str, str]: regions["Rooted Ziggurat Portal Room Entrance"].connect( connecting_region=regions["Rooted Ziggurat Lower Back"]) - # zig skip region only gets made if entrance rando and fewer shops are on - if options.entrance_rando and options.fixed_shop: - regions["Zig Skip Exit"].connect( - connecting_region=regions["Rooted Ziggurat Lower Front"]) - regions["Rooted Ziggurat Portal"].connect( connecting_region=regions["Rooted Ziggurat Portal Room"]) regions["Rooted Ziggurat Portal Room"].connect( @@ -1226,14 +1223,6 @@ def get_paired_portal(portal_sd: str) -> Tuple[str, str]: and has_sword(state, player)))) if options.ladder_storage: - def get_portal_info(portal_sd: str) -> Tuple[str, str]: - for portal1, portal2 in portal_pairs.items(): - if portal1.scene_destination() == portal_sd: - return portal1.name, get_portal_outlet_region(portal2, world) - if portal2.scene_destination() == portal_sd: - return portal2.name, get_portal_outlet_region(portal1, world) - raise Exception("no matches found in get_paired_region") - # connect ls elevation regions to their destinations def ls_connect(origin_name: str, portal_sdt: str) -> None: p_name, paired_region_name = get_portal_info(portal_sdt) diff --git a/worlds/tunic/er_scripts.py b/worlds/tunic/er_scripts.py index 597c65b92070..ae1b5fcb454d 100644 --- a/worlds/tunic/er_scripts.py +++ b/worlds/tunic/er_scripts.py @@ -1,11 +1,12 @@ from typing import Dict, List, Set, Tuple, TYPE_CHECKING from BaseClasses import Region, ItemClassification, Item, Location from .locations import all_locations -from .er_data import Portal, portal_mapping, traversal_requirements, DeadEnd, RegionInfo +from .er_data import (Portal, portal_mapping, traversal_requirements, DeadEnd, Direction, RegionInfo, + get_portal_outlet_region) from .er_rules import set_er_region_rules from .breakables import create_breakable_exclusive_regions, set_breakable_location_rules from Options import PlandoConnection -from .options import EntranceRando +from .options import EntranceRando, EntranceLayout from random import Random from copy import deepcopy @@ -23,17 +24,18 @@ class TunicERLocation(Location): def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]: regions: Dict[str, Region] = {} + world.used_shop_numbers = set() + for region_name, region_data in world.er_regions.items(): if world.options.entrance_rando and region_name == "Zig Skip Exit": # need to check if there's a seed group for this first if world.options.entrance_rando.value not in EntranceRando.options.values(): - if not world.seed_groups[world.options.entrance_rando.value]["fixed_shop"]: + if world.seed_groups[world.options.entrance_rando.value]["entrance_layout"] != EntranceLayout.option_fixed_shop: continue - elif not world.options.fixed_shop: + elif world.options.entrance_layout != EntranceLayout.option_fixed_shop: continue if not world.options.entrance_rando and region_name in ("Zig Skip Exit", "Purgatory"): continue - region = Region(region_name, world.player, world.multiworld) regions[region_name] = region world.multiworld.regions.append(region) @@ -46,13 +48,18 @@ def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]: portal_pairs = pair_portals(world, regions) # output the entrances to the spoiler log here for convenience - sorted_portal_pairs = sort_portals(portal_pairs) - for portal1, portal2 in sorted_portal_pairs.items(): - world.multiworld.spoiler.set_entrance(portal1, portal2, "both", world.player) + sorted_portal_pairs = sort_portals(portal_pairs, world) + if not world.options.decoupled: + for portal1, portal2 in sorted_portal_pairs.items(): + world.multiworld.spoiler.set_entrance(portal1, portal2, "both", world.player) + else: + for portal1, portal2 in sorted_portal_pairs.items(): + world.multiworld.spoiler.set_entrance(portal1, portal2, "entrance", world.player) + else: portal_pairs = vanilla_portals(world, regions) - create_randomized_entrances(portal_pairs, regions) + create_randomized_entrances(world, portal_pairs, regions) set_er_region_rules(world, regions, portal_pairs) @@ -75,6 +82,7 @@ def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]: return portal_pairs +# keys are event names, values are event regions tunic_events: Dict[str, str] = { "Eastern Bell": "Forest Belltower Upper", "Western Bell": "Overworld Belltower at Bell", @@ -111,17 +119,31 @@ def place_event_items(world: "TunicWorld", regions: Dict[str, Region]) -> None: region.locations.append(location) +# keeping track of which shop numbers have been used already to avoid duplicates +# due to plando, shops can be added out of order, so a set is the best way to make this work smoothly +def get_shop_num(world: "TunicWorld") -> int: + portal_num = -1 + for i in range(500): + if i + 1 not in world.used_shop_numbers: + portal_num = i + 1 + world.used_shop_numbers.add(portal_num) + break + if portal_num == -1: + raise Exception(f"TUNIC: {world.player_name} has plando'd too many shops.") + return portal_num + + # all shops are the same shop. however, you cannot get to all shops from the same shop entrance. # so, we need a bunch of shop regions that connect to the actual shop, but the actual shop cannot connect back -def create_shop_region(world: "TunicWorld", regions: Dict[str, Region]) -> None: - new_shop_name = f"Shop {world.shop_num}" +def create_shop_region(world: "TunicWorld", regions: Dict[str, Region], portal_num) -> None: + new_shop_name = f"Shop {portal_num}" world.er_regions[new_shop_name] = RegionInfo("Shop", dead_end=DeadEnd.all_cats) new_shop_region = Region(new_shop_name, world.player, world.multiworld) new_shop_region.connect(regions["Shop"]) regions[new_shop_name] = new_shop_region - world.shop_num += 1 +# for non-ER that uses the ER rules, we create a vanilla set of portal pairs def vanilla_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal, Portal]: portal_pairs: Dict[Portal, Portal] = {} # we don't want the zig skip exit for vanilla portals, since it shouldn't be considered for logic here @@ -135,9 +157,10 @@ def vanilla_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Por portal2_sdt = portal1.destination_scene() if portal2_sdt.startswith("Shop,"): - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) + portal_num = get_shop_num(world) + portal2 = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=Direction.none) + create_shop_region(world, regions, portal_num) for portal in portal_map: if portal.scene_destination() == portal2_sdt: @@ -152,7 +175,13 @@ def vanilla_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Por return portal_pairs -# pairing off portals, starting with dead ends +# the really long function that gives us our portal pairs +# before we start pairing, we separate the portals into dead ends and non-dead ends (two_plus) +# then, we do a few other important tasks to accommodate options and seed gropus +# first phase: pick a two_plus in a reachable region and non-reachable region and pair them +# repeat this phase until all regions are reachable +# second phase: randomly pair dead ends to random two_plus +# third phase: randomly pair the remaining two_plus to each other def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal, Portal]: portal_pairs: Dict[Portal, Portal] = {} dead_ends: List[Portal] = [] @@ -162,8 +191,9 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal laurels_zips = world.options.laurels_zips.value ice_grappling = world.options.ice_grappling.value ladder_storage = world.options.ladder_storage.value - fixed_shop = world.options.fixed_shop + entrance_layout = world.options.entrance_layout laurels_location = world.options.laurels_location + decoupled = world.options.decoupled traversal_reqs = deepcopy(traversal_requirements) has_laurels = True waterfall_plando = False @@ -174,7 +204,7 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal laurels_zips = seed_group["laurels_zips"] ice_grappling = seed_group["ice_grappling"] ladder_storage = seed_group["ladder_storage"] - fixed_shop = seed_group["fixed_shop"] + entrance_layout = seed_group["entrance_layout"] laurels_location = "10_fairies" if seed_group["laurels_at_10_fairies"] is True else False logic_tricks: Tuple[bool, int, int] = (laurels_zips, ice_grappling, ladder_storage) @@ -183,15 +213,18 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal if laurels_location == "10_fairies" and not world.using_ut: has_laurels = False - shop_count = 6 - if fixed_shop: - shop_count = 0 - else: - # if fixed shop is off, remove this portal - for portal in portal_map: - if portal.region == "Zig Skip Exit": - portal_map.remove(portal) - break + # for the direction pairs option with decoupled off + # tracks how many portals are in each direction in each list + two_plus_direction_tracker: Dict[int, int] = {direction: 0 for direction in range(8)} + dead_end_direction_tracker: Dict[int, int] = {direction: 0 for direction in range(8)} + + # for ensuring we have enough entrances in directions left that we don't leave dead ends without any + def too_few_portals_for_direction_pairs(direction: int, offset: int) -> bool: + if two_plus_direction_tracker[direction] <= (dead_end_direction_tracker[direction_pairs[direction]] + offset): + return False + if two_plus_direction_tracker[direction_pairs[direction]] <= dead_end_direction_tracker[direction] + offset: + return False + return True # If using Universal Tracker, restore portal_map. Could be cleaner, but it does not matter for UT even a little bit if world.using_ut: @@ -202,25 +235,59 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal dead_end_status = world.er_regions[portal.region].dead_end if dead_end_status == DeadEnd.free: two_plus.append(portal) + two_plus_direction_tracker[portal.direction] += 1 elif dead_end_status == DeadEnd.all_cats: dead_ends.append(portal) + dead_end_direction_tracker[portal.direction] += 1 elif dead_end_status == DeadEnd.restricted: if ice_grappling: two_plus.append(portal) + two_plus_direction_tracker[portal.direction] += 1 else: dead_ends.append(portal) + dead_end_direction_tracker[portal.direction] += 1 # these two get special handling elif dead_end_status == DeadEnd.special: if portal.region == "Secret Gathering Place": if laurels_location == "10_fairies": two_plus.append(portal) + two_plus_direction_tracker[portal.direction] += 1 else: dead_ends.append(portal) + dead_end_direction_tracker[portal.direction] += 1 + if portal.region == "Zig Skip Exit" and entrance_layout == EntranceLayout.option_fixed_shop: + # direction isn't meaningful here since zig skip cannot be in direction pairs mode + two_plus.append(portal) + + # now we generate the shops and add them to the dead ends list + shop_count = 6 + if entrance_layout == EntranceLayout.option_fixed_shop: + shop_count = 0 + else: + # if fixed shop is off, remove this portal + for portal in portal_map: if portal.region == "Zig Skip Exit": - if fixed_shop: - two_plus.append(portal) - else: - dead_ends.append(portal) + portal_map.remove(portal) + break + # need 8 shops with direction pairs or there won't be a valid set of pairs + if entrance_layout == EntranceLayout.option_direction_pairs: + shop_count = 8 + + # for universal tracker, we want to skip shop gen since it's essentially full plando + if world.using_ut: + shop_count = 0 + + for _ in range(shop_count): + # 6 of the shops have south exits, 2 of them have west exits + portal_num = get_shop_num(world) + shop_dir = Direction.south + if portal_num > 6: + shop_dir = Direction.west + shop_portal = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=shop_dir) + create_shop_region(world, regions, portal_num) + dead_ends.append(shop_portal) + dead_end_direction_tracker[shop_portal.direction] += 1 connected_regions: Set[str] = set() # make better start region stuff when/if implementing random start @@ -249,29 +316,68 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal portal_name2 = portal.name # connected_regions.update(add_dependent_regions(portal.region, logic_rules)) # shops have special handling - if not portal_name2 and portal2 == "Shop, Previous Region_": - portal_name2 = "Shop Portal" - plando_connections.append(PlandoConnection(portal_name1, portal_name2, "both")) + if not portal_name1 and portal1.startswith("Shop"): + # it should show up as "Shop, 1_" for shop 1 + portal_name1 = "Shop Portal " + str(portal1).split(", ")[1].split("_")[0] + if not portal_name2 and portal2.startswith("Shop"): + portal_name2 = "Shop Portal " + str(portal2).split(", ")[1].split("_")[0] + if world.options.decoupled: + plando_connections.append(PlandoConnection(portal_name1, portal_name2, "entrance")) + else: + plando_connections.append(PlandoConnection(portal_name1, portal_name2, "both")) + # put together the list of non-deadend regions non_dead_end_regions = set() for region_name, region_info in world.er_regions.items(): - if not region_info.dead_end: + # these are not real regions, they are just here to be descriptive + if region_info.is_fake_region or region_name == "Shop": + continue + # dead ends aren't real in decoupled + if decoupled: + non_dead_end_regions.add(region_name) + elif not region_info.dead_end: non_dead_end_regions.add(region_name) # if ice grappling to places is in logic, both places stop being dead ends elif region_info.dead_end == DeadEnd.restricted and ice_grappling: non_dead_end_regions.add(region_name) - # secret gathering place and zig skip get weird, special handling + # secret gathering place is treated as a non-dead end if 10 fairies is on to assure non-laurels access to it elif region_info.dead_end == DeadEnd.special: - if (region_name == "Secret Gathering Place" and laurels_location == "10_fairies") \ - or (region_name == "Zig Skip Exit" and fixed_shop): + if region_name == "Secret Gathering Place" and laurels_location == "10_fairies": non_dead_end_regions.add(region_name) + if decoupled: + # add the dead ends to the two plus list, since dead ends aren't real in decoupled + two_plus.extend(dead_ends) + dead_ends.clear() + # if decoupled is on, we make a second two_plus list, where the first is entrances and the second is exits + two_plus2 = two_plus.copy() + else: + # if decoupled is off, the two lists are the same list, since entrances and exits are intertwined + two_plus2 = two_plus + if plando_connections: - for connection in plando_connections: + if decoupled: + modified_plando_connections = plando_connections.copy() + for index, cxn in enumerate(modified_plando_connections): + # it's much easier if we split both-direction portals into two one-ways in decoupled + if cxn.direction == "both": + replacement1 = PlandoConnection(cxn.entrance, cxn.exit, "entrance") + replacement2 = PlandoConnection(cxn.exit, cxn.entrance, "entrance") + modified_plando_connections.remove(cxn) + modified_plando_connections.insert(index, replacement1) + modified_plando_connections.append(replacement2) + else: + modified_plando_connections = plando_connections + + connected_shop_portal1s: Set[int] = set() + connected_shop_portal2s: Set[int] = set() + for connection in modified_plando_connections: p_entrance = connection.entrance p_exit = connection.exit # if you plando secret gathering place, need to know that during portal pairing - if "Secret Gathering Place Exit" in [p_entrance, p_exit]: + if p_exit == "Secret Gathering Place Exit": + waterfall_plando = True + if p_entrance == "Secret Gathering Place Exit" and not decoupled: waterfall_plando = True portal1_dead_end = True portal2_dead_end = True @@ -279,118 +385,186 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal portal1 = None portal2 = None - # search two_plus for both at once + # search the two_plus lists (or list) for the portals for portal in two_plus: if p_entrance == portal.name: portal1 = portal portal1_dead_end = False + break + for portal in two_plus2: if p_exit == portal.name: portal2 = portal portal2_dead_end = False + break # search dead_ends individually since we can't really remove items from two_plus during the loop if portal1: two_plus.remove(portal1) else: # if not both, they're both dead ends - if not portal2: + if not portal2 and not decoupled: if world.options.entrance_rando.value not in EntranceRando.options.values(): raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " "end to a dead end in their plando connections.") else: raise Exception(f"{player_name} paired a dead end to a dead end in their " - "plando connections.") + f"plando connections -- {connection.entrance} to {connection.exit}") for portal in dead_ends: if p_entrance == portal.name: portal1 = portal + dead_ends.remove(portal1) break - if not portal1: - raise Exception(f"Could not find entrance named {p_entrance} for " - f"plando connections in {player_name}'s YAML.") - dead_ends.remove(portal1) + else: + if p_entrance.startswith("Shop Portal "): + portal_num = int(p_entrance.split("Shop Portal ")[-1]) + # shops 1-6 are south, 7 and 8 are east, and after that it just breaks direction pairs + if portal_num <= 6: + pdir = Direction.south + elif portal_num in [7, 8]: + pdir = Direction.east + else: + pdir = Direction.none + portal1 = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=pdir) + connected_shop_portal1s.add(portal_num) + if portal_num not in world.used_shop_numbers: + create_shop_region(world, regions, portal_num) + world.used_shop_numbers.add(portal_num) + if decoupled and portal_num not in connected_shop_portal2s: + two_plus2.append(portal1) + non_dead_end_regions.add(portal1.region) + else: + raise Exception(f"Could not find entrance named {p_entrance} for " + f"plando connections in {player_name}'s YAML.") if portal2: - two_plus.remove(portal2) + two_plus2.remove(portal2) else: for portal in dead_ends: if p_exit == portal.name: portal2 = portal + dead_ends.remove(portal2) break - # if it's not a dead end, it might be a shop - if p_exit == "Shop Portal": - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) - shop_count -= 1 - # need to maintain an even number of portals total - if shop_count < 0: - shop_count += 2 - # and if it's neither shop nor dead end, it just isn't correct + # if it's not a dead end, maybe it's a plando'd shop portal that doesn't normally exist else: if not portal2: - raise Exception(f"Could not find entrance named {p_exit} for " - f"plando connections in {player_name}'s YAML.\n" - f"If you are using Universal Tracker, the most likely reason for this error " - f"is that the host generated with a newer version of the APWorld.\n" - f"Please check the TUNIC Randomizer Github and place the newest APWorld in your " - f"custom_worlds folder, and remove the one in lib/worlds if there is one there.") - dead_ends.remove(portal2) - - # update the traversal chart to say you can get from portal1's region to portal2's and vice versa - if not portal1_dead_end and not portal2_dead_end: - traversal_reqs.setdefault(portal1.region, dict())[portal2.region] = [] - traversal_reqs.setdefault(portal2.region, dict())[portal1.region] = [] - - if (portal1.region == "Zig Skip Exit" and (portal2_dead_end or portal2.region == "Secret Gathering Place") - or portal2.region == "Zig Skip Exit" and (portal1_dead_end or portal1.region == "Secret Gathering Place")): - if world.options.entrance_rando.value not in EntranceRando.options.values(): - raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " - "end to a dead end in their plando connections.") - else: - raise Exception(f"{player_name} paired a dead end to a dead end in their " - "plando connections.") - - if (portal1.region == "Secret Gathering Place" and (portal2_dead_end or portal2.region == "Zig Skip Exit") - or portal2.region == "Secret Gathering Place" and (portal1_dead_end or portal1.region == "Zig Skip Exit")): - # need to make sure you didn't pair this to a dead end or zig skip - if portal1_dead_end or portal2_dead_end or \ - portal1.region == "Zig Skip Exit" or portal2.region == "Zig Skip Exit": + if p_exit.startswith("Shop Portal "): + portal_num = int(p_exit.split("Shop Portal ")[-1]) + if portal_num <= 6: + pdir = Direction.south + elif portal_num in [7, 8]: + pdir = Direction.east + else: + pdir = Direction.none + portal2 = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=pdir) + connected_shop_portal2s.add(portal_num) + if portal_num not in world.used_shop_numbers: + create_shop_region(world, regions, portal_num) + world.used_shop_numbers.add(portal_num) + if decoupled and portal_num not in connected_shop_portal1s: + two_plus.append(portal2) + non_dead_end_regions.add(portal2.region) + else: + raise Exception(f"Could not find entrance named {p_exit} for " + f"plando connections in {player_name}'s YAML.") + + # if we're doing decoupled, we don't need to do complex checks + if decoupled: + # we turn any plando that uses "exit" to use "entrance" instead + traversal_reqs.setdefault(portal1.region, dict())[get_portal_outlet_region(portal2, world)] = [] + # outside decoupled, we want to use what we were doing before decoupled got added + else: + # update the traversal chart to say you can get from portal1's region to portal2's and vice versa + if not portal1_dead_end and not portal2_dead_end: + traversal_reqs.setdefault(portal1.region, dict())[get_portal_outlet_region(portal2, world)] = [] + traversal_reqs.setdefault(portal2.region, dict())[get_portal_outlet_region(portal1, world)] = [] + + if (portal1.region == "Zig Skip Exit" and (portal2_dead_end or portal2.region == "Secret Gathering Place") + or portal2.region == "Zig Skip Exit" and (portal1_dead_end or portal1.region == "Secret Gathering Place")): if world.options.entrance_rando.value not in EntranceRando.options.values(): raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " "end to a dead end in their plando connections.") else: raise Exception(f"{player_name} paired a dead end to a dead end in their " "plando connections.") + + if (portal1.region == "Secret Gathering Place" and (portal2_dead_end or portal2.region == "Zig Skip Exit") + or portal2.region == "Secret Gathering Place" and (portal1_dead_end or portal1.region == "Zig Skip Exit")): + # need to make sure you didn't pair this to a dead end or zig skip + if portal1_dead_end or portal2_dead_end or \ + portal1.region == "Zig Skip Exit" or portal2.region == "Zig Skip Exit": + if world.options.entrance_rando.value not in EntranceRando.options.values(): + raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " + "end to a dead end in their plando connections.") + else: + raise Exception(f"{player_name} paired a dead end to a dead end in their " + "plando connections.") + # okay now that we're done with all of that nonsense, we can finally make the portal pair portal_pairs[portal1] = portal2 + if portal1_dead_end: + dead_end_direction_tracker[portal1.direction] -= 1 + else: + two_plus_direction_tracker[portal1.direction] -= 1 + if portal2_dead_end: + dead_end_direction_tracker[portal2.direction] -= 1 + else: + two_plus_direction_tracker[portal2.direction] -= 1 + # if we have plando connections, our connected regions may change somewhat connected_regions = update_reachable_regions(connected_regions, traversal_reqs, has_laurels, logic_tricks) - if fixed_shop and not world.using_ut: - portal1 = None + # if there are an odd number of shops after plando, add another one, except in decoupled where it doesn't matter + if not decoupled and len(world.used_shop_numbers) % 2 == 1: + if entrance_layout == EntranceLayout.option_direction_pairs: + raise Exception(f"TUNIC: {world.player_name} plando'd too many shops for the Direction Pairs option.") + portal_num = get_shop_num(world) + shop_portal = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=Direction.none) + create_shop_region(world, regions, portal_num) + dead_ends.append(shop_portal) + + if entrance_layout == EntranceLayout.option_fixed_shop and not world.using_ut: + windmill = None for portal in two_plus: if portal.scene_destination() == "Overworld Redux, Windmill_": - portal1 = portal + windmill = portal break - if not portal1: - raise Exception(f"Failed to do Fixed Shop option. " - f"Did {player_name} plando connection the Windmill Shop entrance?") + if not windmill: + raise Exception(f"Failed to do Fixed Shop option for Entrance Layout. " + f"Did {player_name} plando the Windmill Shop entrance?") + + portal_num = get_shop_num(world) + shop = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=Direction.south) + create_shop_region(world, regions, portal_num) + + portal_pairs[windmill] = shop + two_plus.remove(windmill) + if decoupled: + two_plus.append(shop) + non_dead_end_regions.add(shop.region) + connected_regions.add(shop.region) - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) - - portal_pairs[portal1] = portal2 - two_plus.remove(portal1) - - random_object: Random = world.random # use the seed given in the options to shuffle the portals if isinstance(world.options.entrance_rando.value, str): random_object = Random(world.options.entrance_rando.value) + else: + random_object: Random = world.random + # we want to start by making sure every region is accessible random_object.shuffle(two_plus) - check_success = 0 + + # this is a backup in case we run into that rare direction pairing failure + # so that we don't have to redo the plando bit basically + backup_connected_regions = connected_regions.copy() + backup_portal_pairs = portal_pairs.copy() + backup_two_plus = two_plus.copy() + backup_two_plus_direction_tracker = two_plus_direction_tracker.copy() + rare_failure_count = 0 + portal1 = None portal2 = None previous_conn_num = 0 @@ -403,96 +577,182 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal # should, hopefully, only ever occur if someone plandos connections poorly if previous_conn_num == len(connected_regions): fail_count += 1 - if fail_count >= 500: + if fail_count > 500: raise Exception(f"Failed to pair regions. Check plando connections for {player_name} for errors. " - "Unconnected regions:", non_dead_end_regions - connected_regions) + f"Unconnected regions: {non_dead_end_regions - connected_regions}.\n" + f"Unconnected portals: {[portal.name for portal in two_plus]}") + if (fail_count > 100 and not decoupled + and (world.options.entrance_layout == EntranceLayout.option_direction_pairs or waterfall_plando)): + # in direction pairs, we may run into a case where we run out of pairable directions + # since we need to ensure the dead ends will have something to connect to + # or if fairy cave is plando'd, it may run into an issue where it is trying to get access to 2 separate + # areas at once to give access to laurels + # so, this is basically just resetting entrance pairing + # this should be very rare, so this fail-safe shouldn't be covering up for an actual solution + # this should never happen in decoupled, since it's entirely too flexible for that + portal_pairs = backup_portal_pairs.copy() + two_plus = two_plus2 = backup_two_plus.copy() + two_plus_direction_tracker = backup_two_plus_direction_tracker.copy() + random_object.shuffle(two_plus) + connected_regions = backup_connected_regions.copy() + rare_failure_count += 1 + fail_count = 0 + + if rare_failure_count > 100: + raise Exception(f"Failed to pair regions due to rare pairing issues for {player_name}. " + f"Unconnected regions: {non_dead_end_regions - connected_regions}.\n" + f"Unconnected portals: {[portal.name for portal in two_plus]}") else: fail_count = 0 previous_conn_num = len(connected_regions) # find a portal in a connected region - if check_success == 0: - for portal in two_plus: - if portal.region in connected_regions: - portal1 = portal - two_plus.remove(portal) - check_success = 1 - break + for portal in two_plus: + if portal.region in connected_regions: + # if there's more dead ends of a direction than two plus of the opposite direction, + # then we'll run out of viable connections for those dead ends later + # decoupled does not have this issue since dead ends aren't real in decoupled + if not decoupled and entrance_layout == EntranceLayout.option_direction_pairs: + if not too_few_portals_for_direction_pairs(portal.direction, 0): + continue - # then we find a portal in an inaccessible region - if check_success == 1: - for portal in two_plus: - if portal.region not in connected_regions: - # if secret gathering place happens to get paired really late, you can end up running out - if not has_laurels and len(two_plus) < 80: - # if you plando'd secret gathering place with laurels at 10 fairies, you're the reason for this - if waterfall_plando: - cr = connected_regions.copy() - cr.add(portal.region) - if "Secret Gathering Place" not in update_reachable_regions(cr, traversal_reqs, has_laurels, logic_tricks): - continue - # if not waterfall_plando, then we just want to pair secret gathering place now - elif portal.region != "Secret Gathering Place": + portal1 = portal + two_plus.remove(portal) + break + if not portal1: + raise Exception("TUNIC: Failed to pair portals at first part of first phase.") + + # then we find a portal in an unconnected region + for portal in two_plus2: + if portal.region not in connected_regions: + # if secret gathering place happens to get paired really late, you can end up running out + if not has_laurels and len(two_plus2) < 80: + # if you plando'd secret gathering place with laurels at 10 fairies, you're the reason for this + if waterfall_plando: + cr = connected_regions.copy() + cr.add(portal.region) + if "Secret Gathering Place" not in update_reachable_regions(cr, traversal_reqs, has_laurels, logic_tricks): continue - portal2 = portal - connected_regions.add(portal.region) - two_plus.remove(portal) - check_success = 2 - break + # if not waterfall_plando, then we just want to pair secret gathering place now + elif portal.region != "Secret Gathering Place": + continue + + # if they're not facing opposite directions, just continue + if entrance_layout == EntranceLayout.option_direction_pairs and not verify_direction_pair(portal, portal1): + continue + + # if you have direction pairs, we need to make sure we don't run out of spots for problem portals + # this cuts down on using the failsafe significantly + if not decoupled and entrance_layout == EntranceLayout.option_direction_pairs: + should_continue = False + # these portals are weird since they're one-ways essentially + # we need to make sure they are connected in this first phase + south_problems = ["Ziggurat Upper to Ziggurat Entry Hallway", + "Ziggurat Tower to Ziggurat Upper", "Forest Belltower to Guard Captain Room"] + if (portal.direction == Direction.south and portal.name not in south_problems + and not too_few_portals_for_direction_pairs(portal.direction, 3)): + for test_portal in two_plus: + if test_portal.name in south_problems: + should_continue = True + # at risk of connecting frog's domain entry ladder to librarian exit + if (portal.direction == Direction.ladder_down + or portal.direction == Direction.ladder_up and portal.name != "Frog's Domain Ladder Exit" + and not too_few_portals_for_direction_pairs(portal.direction, 1)): + for test_portal in two_plus: + if test_portal.name == "Frog's Domain Ladder Exit": + should_continue = True + if should_continue: + continue + + portal2 = portal + connected_regions.add(get_portal_outlet_region(portal, world)) + two_plus2.remove(portal) + break + + if not portal2: + if entrance_layout == EntranceLayout.option_direction_pairs or waterfall_plando: + # portal1 doesn't have a valid direction pair yet, throw it back and start over + two_plus.append(portal1) + continue + else: + raise Exception(f"TUNIC: Failed to pair portals at second part of first phase for {world.player_name}.") # once we have both portals, connect them and add the new region(s) to connected_regions - if check_success == 2: - if "Secret Gathering Place" in connected_regions: - has_laurels = True - connected_regions = update_reachable_regions(connected_regions, traversal_reqs, has_laurels, logic_tricks) - portal_pairs[portal1] = portal2 - check_success = 0 - random_object.shuffle(two_plus) + if not has_laurels and "Secret Gathering Place" in connected_regions: + has_laurels = True + connected_regions = update_reachable_regions(connected_regions, traversal_reqs, has_laurels, logic_tricks) - # for universal tracker, we want to skip shop gen - if world.using_ut: - shop_count = 0 - - for i in range(shop_count): - portal1 = two_plus.pop() - if portal1 is None: - raise Exception("TUNIC: Too many shops in the pool, or something else went wrong.") - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) - portal_pairs[portal1] = portal2 + two_plus_direction_tracker[portal1.direction] -= 1 + two_plus_direction_tracker[portal2.direction] -= 1 + portal1 = None + portal2 = None + random_object.shuffle(two_plus) + if two_plus != two_plus2: + random_object.shuffle(two_plus2) # connect dead ends to random non-dead ends - # none of the key events are in dead ends, so we don't need to do gate_before_switch + # there are no dead ends in decoupled while len(dead_ends) > 0: if world.using_ut: break - portal1 = two_plus.pop() - portal2 = dead_ends.pop() - portal_pairs[portal1] = portal2 + portal2 = dead_ends[0] + for portal in two_plus: + if entrance_layout == EntranceLayout.option_direction_pairs and not verify_direction_pair(portal, portal2): + continue + if entrance_layout == EntranceLayout.option_fixed_shop and portal.region == "Zig Skip Exit": + continue + portal1 = portal + portal_pairs[portal1] = portal2 + two_plus.remove(portal1) + dead_ends.remove(portal2) + break + else: + raise Exception(f"Failed to pair {portal2.name} with anything in two_plus for player {world.player_name}.") + # then randomly connect the remaining portals to each other - # every region is accessible, so gate_before_switch is not necessary - while len(two_plus) > 1: + final_pair_number = 0 + while len(two_plus) > 0: if world.using_ut: break - portal1 = two_plus.pop() - portal2 = two_plus.pop() + final_pair_number += 1 + if final_pair_number > 10000: + raise Exception(f"Failed to pair portals while pairing the final entrances off to each other. " + f"Remaining portals in two_plus: {[portal.name for portal in two_plus]}. " + f"Remaining portals in two_plus2: {[portal.name for portal in two_plus2]}.") + portal1 = two_plus[0] + two_plus.remove(portal1) + portal2 = None + if entrance_layout != EntranceLayout.option_direction_pairs: + portal2 = two_plus2.pop() + else: + for portal in two_plus2: + if verify_direction_pair(portal1, portal): + portal2 = portal + two_plus2.remove(portal2) + break + if portal2 is None: + raise Exception("Something went wrong with the remaining two plus portals. Contact the TUNIC rando devs.") portal_pairs[portal1] = portal2 - if len(two_plus) == 1: - raise Exception("two plus had an odd number of portals, investigate this. last portal is " + two_plus[0].name) + if len(two_plus2) > 0: + raise Exception(f"TUNIC: Something went horribly wrong in ER for {world.player_name}. " + f"Please contact the TUNIC rando devs.") return portal_pairs # loop through our list of paired portals and make two-way connections -def create_randomized_entrances(portal_pairs: Dict[Portal, Portal], regions: Dict[str, Region]) -> None: +def create_randomized_entrances(world: "TunicWorld", portal_pairs: Dict[Portal, Portal], regions: Dict[str, Region]) -> None: for portal1, portal2 in portal_pairs.items(): - region1 = regions[portal1.region] - region2 = regions[portal2.region] - region1.connect(connecting_region=region2, name=portal1.name) - region2.connect(connecting_region=region1, name=portal2.name) + # connect to the outlet region if there is one, if not connect to the actual region + regions[portal1.region].connect( + connecting_region=regions[get_portal_outlet_region(portal2, world)], + name=portal1.name) + if not world.options.decoupled or not world.options.entrance_rando: + regions[portal2.region].connect( + connecting_region=regions[get_portal_outlet_region(portal1, world)], + name=portal2.name) def update_reachable_regions(connected_regions: Set[str], traversal_reqs: Dict[str, Dict[str, List[List[str]]]], @@ -541,22 +801,58 @@ def update_reachable_regions(connected_regions: Set[str], traversal_reqs: Dict[s return connected_regions +# which directions are opposites +direction_pairs: Dict[int, int] = { + Direction.north: Direction.south, + Direction.south: Direction.north, + Direction.east: Direction.west, + Direction.west: Direction.east, + Direction.ladder_up: Direction.ladder_down, + Direction.ladder_down: Direction.ladder_up, + Direction.floor: Direction.floor, +} + + +# verify that two portals are in compatible directions +def verify_direction_pair(portal1: Portal, portal2: Portal) -> bool: + return portal1.direction == direction_pairs[portal2.direction] + + +# verify that two plando'd portals are in compatible directions +def verify_plando_directions(connection: PlandoConnection) -> bool: + entrance_portal = None + exit_portal = None + for portal in portal_mapping: + if connection.entrance == portal.name: + entrance_portal = portal + if connection.exit == portal.name: + exit_portal = portal + if entrance_portal and exit_portal: + break + # neither of these are shops, so verify the pair + if entrance_portal and exit_portal: + return verify_direction_pair(entrance_portal, exit_portal) + # this is two shop portals, they can never pair directions + elif not entrance_portal and not exit_portal: + return False + # if one of them is none, it's a shop, which has two possible directions + elif not entrance_portal: + return exit_portal.direction in [Direction.north, Direction.east] + elif not exit_portal: + return entrance_portal.direction in [Direction.north, Direction.east] + else: + # shouldn't be reachable, more of a just in case + raise Exception("Something went very wrong with verify_plando_directions") + + # sort the portal dict by the name of the first portal, referring to the portal order in the master portal list -def sort_portals(portal_pairs: Dict[Portal, Portal]) -> Dict[str, str]: +def sort_portals(portal_pairs: Dict[Portal, Portal], world: "TunicWorld") -> Dict[str, str]: sorted_pairs: Dict[str, str] = {} reference_list: List[str] = [portal.name for portal in portal_mapping] - reference_list.append("Shop Portal") - # note: this is not necessary yet since the shop portals aren't numbered yet -- they will be when decoupled happens # due to plando, there can be a variable number of shops - # I could either do it like this, or just go up to like 200, this seemed better - # shop_count = 0 - # for portal1, portal2 in portal_pairs.items(): - # if portal1.name.startswith("Shop"): - # shop_count += 1 - # if portal2.name.startswith("Shop"): - # shop_count += 1 - # reference_list.extend([f"Shop Portal {i + 1}" for i in range(shop_count)]) + largest_shop_number = max(world.used_shop_numbers) + reference_list.extend([f"Shop Portal {i + 1}" for i in range(largest_shop_number)]) for name in reference_list: for portal1, portal2 in portal_pairs.items(): diff --git a/worlds/tunic/options.py b/worlds/tunic/options.py index c17b085b1187..e3fed5b52dfd 100644 --- a/worlds/tunic/options.py +++ b/worlds/tunic/options.py @@ -5,7 +5,7 @@ from decimal import Decimal, ROUND_HALF_UP from Options import (DefaultOnToggle, Toggle, StartInventoryPool, Choice, Range, TextChoice, PlandoConnections, - PerGameCommonOptions, OptionGroup, Visibility, NamedRange) + PerGameCommonOptions, OptionGroup, Removed, Visibility, NamedRange) from .er_data import portal_mapping if TYPE_CHECKING: from . import TunicWorld @@ -147,14 +147,42 @@ class EntranceRando(TextChoice): class FixedShop(Toggle): """ - Forces the Windmill entrance to lead to a shop, and removes the remaining shops from the pool. - Adds another entrance in Rooted Ziggurat Lower to keep an even number of entrances. - Has no effect if Entrance Rando is not enabled. + This option has been superseded by the Entrance Layout option. + If enabled, it will override the Entrance Layout option. + This is kept to keep older yamls working, and will be removed at a later date. """ + visibility = Visibility.none internal_name = "fixed_shop" display_name = "Fewer Shops in Entrance Rando" +class EntranceLayout(Choice): + """ + Decide how the Entrance Randomizer chooses how to pair the entrances. + Standard: Entrances are randomly connected. There are 6 shops in the pool with this option. + Fixed Shop: Forces the Windmill entrance to lead to a shop, and removes the other shops from the pool. + Adds another entrance in Rooted Ziggurat Lower to keep an even number of entrances. + Direction Pairs: Entrances facing opposite directions are paired together. There are 8 shops in the pool with this option. + Note: For seed groups, if one player in a group chooses Fixed Shop and another chooses Direction Pairs, it will error out. + Either of these options will override Standard within a seed group. + """ + internal_name = "entrance_layout" + display_name = "Entrance Layout" + option_standard = 0 + option_fixed_shop = 1 + option_direction_pairs = 2 + default = 0 + + +class Decoupled(Toggle): + """ + Decouple the entrances, so that when you go from one entrance to another, the return trip won't necessarily bring you back to the same place. + Note: For seed groups, all players in the group must have this option enabled or disabled. + """ + internal_name = "decoupled" + display_name = "Decoupled Entrances" + + class LaurelsLocation(Choice): """ Force the Hero's Laurels to be placed at a location in your world. @@ -210,13 +238,22 @@ class LocalFill(NamedRange): class TunicPlandoConnections(PlandoConnections): """ Generic connection plando. Format is: - - entrance: "Entrance Name" - exit: "Exit Name" + - entrance: Entrance Name + exit: Exit Name + direction: Direction percentage: 100 + Direction must be one of entrance, exit, or both, and defaults to both if omitted. + Direction entrance means the entrance leads to the exit. Direction exit means the exit leads to the entrance. + If you do not have Decoupled enabled, you do not need the direction line, as it will only use both. Percentage is an integer from 0 to 100 which determines whether that connection will be made. Defaults to 100 if omitted. + If the Entrance Layout option is set to Standard or Fixed Shop, you can plando multiple shops. + If the Entrance Layout option is set to Direction Pairs, your plando connections must be facing opposite directions. + Shop Portal 1-6 are South portals, and Shop Portal 7-8 are West portals. + This option does nothing if Entrance Rando is disabled. """ - entrances = {*(portal.name for portal in portal_mapping), "Shop", "Shop Portal"} - exits = {*(portal.name for portal in portal_mapping), "Shop", "Shop Portal"} + shops = {f"Shop Portal {i + 1}" for i in range(500)} + entrances = {portal.name for portal in portal_mapping}.union(shops) + exits = {portal.name for portal in portal_mapping}.union(shops) duplicate_exits = True @@ -329,6 +366,7 @@ class TunicOptions(PerGameCommonOptions): start_with_sword: StartWithSword keys_behind_bosses: KeysBehindBosses ability_shuffling: AbilityShuffling + fool_traps: FoolTraps laurels_location: LaurelsLocation @@ -343,7 +381,9 @@ class TunicOptions(PerGameCommonOptions): local_fill: LocalFill entrance_rando: EntranceRando - fixed_shop: FixedShop + entrance_layout: EntranceLayout + decoupled: Decoupled + plando_connections: TunicPlandoConnections combat_logic: CombatLogic lanternless: Lanternless @@ -353,9 +393,8 @@ class TunicOptions(PerGameCommonOptions): ladder_storage: LadderStorage ladder_storage_without_items: LadderStorageWithoutItems - plando_connections: TunicPlandoConnections - - logic_rules: LogicRules + fixed_shop: FixedShop # will be removed at a later date + logic_rules: Removed # fully removed in the direction pairs update tunic_option_groups = [ @@ -372,8 +411,14 @@ class TunicOptions(PerGameCommonOptions): LaurelsZips, IceGrappling, LadderStorage, - LadderStorageWithoutItems - ]) + LadderStorageWithoutItems, + ]), + OptionGroup("Entrance Randomizer", [ + EntranceRando, + EntranceLayout, + Decoupled, + TunicPlandoConnections, + ]), ] tunic_option_presets: Dict[str, Dict[str, Any]] = { diff --git a/worlds/tunic/rules.py b/worlds/tunic/rules.py index 2c5abb424d98..52d5c42e5115 100644 --- a/worlds/tunic/rules.py +++ b/worlds/tunic/rules.py @@ -1,5 +1,4 @@ from typing import Dict, TYPE_CHECKING -from decimal import Decimal, ROUND_HALF_UP from worlds.generic.Rules import set_rule, forbid_item, add_rule from BaseClasses import CollectionState @@ -157,8 +156,8 @@ def set_region_rules(world: "TunicWorld") -> None: if options.ladder_storage >= LadderStorage.option_medium: # ls at any ladder in a safe spot in quarry to get to the monastery rope entrance - world.get_region("Quarry Back").connect(world.get_region("Monastery"), - rule=lambda state: can_ladder_storage(state, world)) + add_rule(world.get_entrance(entrance_name="Quarry Back -> Monastery"), + rule=lambda state: can_ladder_storage(state, world)) def set_location_rules(world: "TunicWorld") -> None: diff --git a/worlds/tunic/test/test_access.py b/worlds/tunic/test/test_access.py index 24551a13d547..6a26180cf026 100644 --- a/worlds/tunic/test/test_access.py +++ b/worlds/tunic/test/test_access.py @@ -78,7 +78,8 @@ class TestERSpecial(TunicTestBase): options = {options.EntranceRando.internal_name: options.EntranceRando.option_yes, options.AbilityShuffling.internal_name: options.AbilityShuffling.option_true, options.HexagonQuest.internal_name: options.HexagonQuest.option_false, - options.FixedShop.internal_name: options.FixedShop.option_false, + options.CombatLogic.internal_name: options.CombatLogic.option_off, + options.EntranceLayout.internal_name: options.EntranceLayout.option_fixed_shop, options.IceGrappling.internal_name: options.IceGrappling.option_easy, "plando_connections": [ { @@ -126,3 +127,262 @@ def test_ls_to_shop_entrance(self) -> None: self.assertFalse(self.can_reach_location("Fortress Courtyard - Page Near Cave")) self.collect_by_name(["Pages 24-25 (Prayer)"]) self.assertTrue(self.can_reach_location("Fortress Courtyard - Page Near Cave")) + + +# check that it still functions if in decoupled and every single normal entrance leads to a shop +class TestERDecoupledPlando(TunicTestBase): + options = {options.EntranceRando.internal_name: options.EntranceRando.option_yes, + options.Decoupled.internal_name: options.Decoupled.option_true, + "plando_connections": [ + {"entrance": "Stick House Entrance", "exit": "Shop Portal 1", "direction": "entrance"}, + {"entrance": "Windmill Entrance", "exit": "Shop Portal 2", "direction": "entrance"}, + {"entrance": "Well Ladder Entrance", "exit": "Shop Portal 3", "direction": "entrance"}, + {"entrance": "Entrance to Well from Well Rail", "exit": "Shop Portal 4", "direction": "entrance"}, + {"entrance": "Old House Door Entrance", "exit": "Shop Portal 5", "direction": "entrance"}, + {"entrance": "Old House Waterfall Entrance", "exit": "Shop Portal 6", "direction": "entrance"}, + {"entrance": "Entrance to Furnace from Well Rail", "exit": "Shop Portal 7", "direction": "entrance"}, + {"entrance": "Entrance to Furnace under Windmill", "exit": "Shop Portal 8", "direction": "entrance"}, + {"entrance": "Entrance to Furnace near West Garden", "exit": "Shop Portal 9", + "direction": "entrance"}, + {"entrance": "Entrance to Furnace from Beach", "exit": "Shop Portal 10", "direction": "entrance"}, + {"entrance": "Caustic Light Cave Entrance", "exit": "Shop Portal 11", "direction": "entrance"}, + {"entrance": "Swamp Upper Entrance", "exit": "Shop Portal 12", "direction": "entrance"}, + {"entrance": "Swamp Lower Entrance", "exit": "Shop Portal 13", "direction": "entrance"}, + {"entrance": "Ruined Passage Not-Door Entrance", "exit": "Shop Portal 14", "direction": "entrance"}, + {"entrance": "Ruined Passage Door Entrance", "exit": "Shop Portal 15", "direction": "entrance"}, + {"entrance": "Atoll Upper Entrance", "exit": "Shop Portal 16", "direction": "entrance"}, + {"entrance": "Atoll Lower Entrance", "exit": "Shop Portal 17", "direction": "entrance"}, + {"entrance": "Special Shop Entrance", "exit": "Shop Portal 18", "direction": "entrance"}, + {"entrance": "Maze Cave Entrance", "exit": "Shop Portal 19", "direction": "entrance"}, + {"entrance": "West Garden Entrance near Belltower", "exit": "Shop Portal 20", + "direction": "entrance"}, + {"entrance": "West Garden Entrance from Furnace", "exit": "Shop Portal 21", "direction": "entrance"}, + {"entrance": "West Garden Laurels Entrance", "exit": "Shop Portal 22", "direction": "entrance"}, + {"entrance": "Temple Door Entrance", "exit": "Shop Portal 23", "direction": "entrance"}, + {"entrance": "Temple Rafters Entrance", "exit": "Shop Portal 24", "direction": "entrance"}, + {"entrance": "Ruined Shop Entrance", "exit": "Shop Portal 25", "direction": "entrance"}, + {"entrance": "Patrol Cave Entrance", "exit": "Shop Portal 26", "direction": "entrance"}, + {"entrance": "Hourglass Cave Entrance", "exit": "Shop Portal 27", "direction": "entrance"}, + {"entrance": "Changing Room Entrance", "exit": "Shop Portal 28", "direction": "entrance"}, + {"entrance": "Cube Cave Entrance", "exit": "Shop Portal 29", "direction": "entrance"}, + {"entrance": "Stairs from Overworld to Mountain", "exit": "Shop Portal 30", "direction": "entrance"}, + {"entrance": "Overworld to Fortress", "exit": "Shop Portal 31", "direction": "entrance"}, + {"entrance": "Fountain HC Door Entrance", "exit": "Shop Portal 32", "direction": "entrance"}, + {"entrance": "Southeast HC Door Entrance", "exit": "Shop Portal 33", "direction": "entrance"}, + {"entrance": "Overworld to Quarry Connector", "exit": "Shop Portal 34", "direction": "entrance"}, + {"entrance": "Dark Tomb Main Entrance", "exit": "Shop Portal 35", "direction": "entrance"}, + {"entrance": "Overworld to Forest Belltower", "exit": "Shop Portal 36", "direction": "entrance"}, + {"entrance": "Town to Far Shore", "exit": "Shop Portal 37", "direction": "entrance"}, + {"entrance": "Spawn to Far Shore", "exit": "Shop Portal 38", "direction": "entrance"}, + {"entrance": "Secret Gathering Place Entrance", "exit": "Shop Portal 39", "direction": "entrance"}, + {"entrance": "Secret Gathering Place Exit", "exit": "Shop Portal 40", "direction": "entrance"}, + {"entrance": "Windmill Exit", "exit": "Shop Portal 41", "direction": "entrance"}, + {"entrance": "Windmill Shop", "exit": "Shop Portal 42", "direction": "entrance"}, + {"entrance": "Old House Door Exit", "exit": "Shop Portal 43", "direction": "entrance"}, + {"entrance": "Old House to Glyph Tower", "exit": "Shop Portal 44", "direction": "entrance"}, + {"entrance": "Old House Waterfall Exit", "exit": "Shop Portal 45", "direction": "entrance"}, + {"entrance": "Glyph Tower Exit", "exit": "Shop Portal 46", "direction": "entrance"}, + {"entrance": "Changing Room Exit", "exit": "Shop Portal 47", "direction": "entrance"}, + {"entrance": "Fountain HC Room Exit", "exit": "Shop Portal 48", "direction": "entrance"}, + {"entrance": "Cube Cave Exit", "exit": "Shop Portal 49", "direction": "entrance"}, + {"entrance": "Guard Patrol Cave Exit", "exit": "Shop Portal 50", "direction": "entrance"}, + {"entrance": "Ruined Shop Exit", "exit": "Shop Portal 51", "direction": "entrance"}, + {"entrance": "Furnace Exit towards Well", "exit": "Shop Portal 52", "direction": "entrance"}, + {"entrance": "Furnace Exit to Dark Tomb", "exit": "Shop Portal 53", "direction": "entrance"}, + {"entrance": "Furnace Exit towards West Garden", "exit": "Shop Portal 54", "direction": "entrance"}, + {"entrance": "Furnace Exit to Beach", "exit": "Shop Portal 55", "direction": "entrance"}, + {"entrance": "Furnace Exit under Windmill", "exit": "Shop Portal 56", "direction": "entrance"}, + {"entrance": "Stick House Exit", "exit": "Shop Portal 57", "direction": "entrance"}, + {"entrance": "Ruined Passage Not-Door Exit", "exit": "Shop Portal 58", "direction": "entrance"}, + {"entrance": "Ruined Passage Door Exit", "exit": "Shop Portal 59", "direction": "entrance"}, + {"entrance": "Southeast HC Room Exit", "exit": "Shop Portal 60", "direction": "entrance"}, + {"entrance": "Caustic Light Cave Exit", "exit": "Shop Portal 61", "direction": "entrance"}, + {"entrance": "Maze Cave Exit", "exit": "Shop Portal 62", "direction": "entrance"}, + {"entrance": "Hourglass Cave Exit", "exit": "Shop Portal 63", "direction": "entrance"}, + {"entrance": "Special Shop Exit", "exit": "Shop Portal 64", "direction": "entrance"}, + {"entrance": "Temple Rafters Exit", "exit": "Shop Portal 65", "direction": "entrance"}, + {"entrance": "Temple Door Exit", "exit": "Shop Portal 66", "direction": "entrance"}, + {"entrance": "Forest Belltower to Fortress", "exit": "Shop Portal 67", "direction": "entrance"}, + {"entrance": "Forest Belltower to Forest", "exit": "Shop Portal 68", "direction": "entrance"}, + {"entrance": "Forest Belltower to Overworld", "exit": "Shop Portal 69", "direction": "entrance"}, + {"entrance": "Forest Belltower to Guard Captain Room", "exit": "Shop Portal 70", + "direction": "entrance"}, + {"entrance": "Forest to Belltower", "exit": "Shop Portal 71", "direction": "entrance"}, + {"entrance": "Forest Guard House 1 Lower Entrance", "exit": "Shop Portal 72", + "direction": "entrance"}, + {"entrance": "Forest Guard House 1 Gate Entrance", "exit": "Shop Portal 73", + "direction": "entrance"}, + {"entrance": "Forest Dance Fox Outside Doorway", "exit": "Shop Portal 74", "direction": "entrance"}, + {"entrance": "Forest to Far Shore", "exit": "Shop Portal 75", "direction": "entrance"}, + {"entrance": "Forest Guard House 2 Lower Entrance", "exit": "Shop Portal 76", + "direction": "entrance"}, + {"entrance": "Forest Guard House 2 Upper Entrance", "exit": "Shop Portal 77", + "direction": "entrance"}, + {"entrance": "Forest Grave Path Lower Entrance", "exit": "Shop Portal 78", "direction": "entrance"}, + {"entrance": "Forest Grave Path Upper Entrance", "exit": "Shop Portal 79", "direction": "entrance"}, + {"entrance": "Forest Grave Path Upper Exit", "exit": "Shop Portal 80", "direction": "entrance"}, + {"entrance": "Forest Grave Path Lower Exit", "exit": "Shop Portal 81", "direction": "entrance"}, + {"entrance": "East Forest Hero's Grave", "exit": "Shop Portal 82", "direction": "entrance"}, + {"entrance": "Guard House 1 Dance Fox Exit", "exit": "Shop Portal 83", "direction": "entrance"}, + {"entrance": "Guard House 1 Lower Exit", "exit": "Shop Portal 84", "direction": "entrance"}, + {"entrance": "Guard House 1 Upper Forest Exit", "exit": "Shop Portal 85", "direction": "entrance"}, + {"entrance": "Guard House 1 to Guard Captain Room", "exit": "Shop Portal 86", + "direction": "entrance"}, + {"entrance": "Guard House 2 Lower Exit", "exit": "Shop Portal 87", "direction": "entrance"}, + {"entrance": "Guard House 2 Upper Exit", "exit": "Shop Portal 88", "direction": "entrance"}, + {"entrance": "Guard Captain Room Non-Gate Exit", "exit": "Shop Portal 89", "direction": "entrance"}, + {"entrance": "Guard Captain Room Gate Exit", "exit": "Shop Portal 90", "direction": "entrance"}, + {"entrance": "Well Ladder Exit", "exit": "Shop Portal 91", "direction": "entrance"}, + {"entrance": "Well to Well Boss", "exit": "Shop Portal 92", "direction": "entrance"}, + {"entrance": "Well Exit towards Furnace", "exit": "Shop Portal 93", "direction": "entrance"}, + {"entrance": "Well Boss to Well", "exit": "Shop Portal 94", "direction": "entrance"}, + {"entrance": "Checkpoint to Dark Tomb", "exit": "Shop Portal 95", "direction": "entrance"}, + {"entrance": "Dark Tomb to Overworld", "exit": "Shop Portal 96", "direction": "entrance"}, + {"entrance": "Dark Tomb to Furnace", "exit": "Shop Portal 97", "direction": "entrance"}, + {"entrance": "Dark Tomb to Checkpoint", "exit": "Shop Portal 98", "direction": "entrance"}, + {"entrance": "West Garden Exit near Hero's Grave", "exit": "Shop Portal 99", + "direction": "entrance"}, + {"entrance": "West Garden to Magic Dagger House", "exit": "Shop Portal 100", + "direction": "entrance"}, + {"entrance": "West Garden Exit after Boss", "exit": "Shop Portal 101", "direction": "entrance"}, + {"entrance": "West Garden Shop", "exit": "Shop Portal 102", "direction": "entrance"}, + {"entrance": "West Garden Laurels Exit", "exit": "Shop Portal 103", "direction": "entrance"}, + {"entrance": "West Garden Hero's Grave", "exit": "Shop Portal 104", "direction": "entrance"}, + {"entrance": "West Garden to Far Shore", "exit": "Shop Portal 105", "direction": "entrance"}, + {"entrance": "Magic Dagger House Exit", "exit": "Shop Portal 106", "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Fortress Grave Path Lower", "exit": "Shop Portal 107", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Fortress Grave Path Upper", "exit": "Shop Portal 108", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Fortress Interior", "exit": "Shop Portal 109", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to East Fortress", "exit": "Shop Portal 110", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Beneath the Vault", "exit": "Shop Portal 111", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Forest Belltower", "exit": "Shop Portal 112", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Overworld", "exit": "Shop Portal 113", "direction": "entrance"}, + {"entrance": "Fortress Courtyard Shop", "exit": "Shop Portal 114", "direction": "entrance"}, + {"entrance": "Beneath the Vault to Fortress Interior", "exit": "Shop Portal 115", + "direction": "entrance"}, + {"entrance": "Beneath the Vault to Fortress Courtyard", "exit": "Shop Portal 116", + "direction": "entrance"}, + {"entrance": "Fortress Interior Main Exit", "exit": "Shop Portal 117", "direction": "entrance"}, + {"entrance": "Fortress Interior to Beneath the Earth", "exit": "Shop Portal 118", + "direction": "entrance"}, + {"entrance": "Fortress Interior to Siege Engine Arena", "exit": "Shop Portal 119", + "direction": "entrance"}, + {"entrance": "Fortress Interior Shop", "exit": "Shop Portal 120", "direction": "entrance"}, + {"entrance": "Fortress Interior to East Fortress Upper", "exit": "Shop Portal 121", + "direction": "entrance"}, + {"entrance": "Fortress Interior to East Fortress Lower", "exit": "Shop Portal 122", + "direction": "entrance"}, + {"entrance": "East Fortress to Interior Lower", "exit": "Shop Portal 123", "direction": "entrance"}, + {"entrance": "East Fortress to Courtyard", "exit": "Shop Portal 124", "direction": "entrance"}, + {"entrance": "East Fortress to Interior Upper", "exit": "Shop Portal 125", "direction": "entrance"}, + {"entrance": "Fortress Grave Path Lower Exit", "exit": "Shop Portal 126", "direction": "entrance"}, + {"entrance": "Fortress Hero's Grave", "exit": "Shop Portal 127", "direction": "entrance"}, + {"entrance": "Fortress Grave Path Upper Exit", "exit": "Shop Portal 128", "direction": "entrance"}, + {"entrance": "Fortress Grave Path Dusty Entrance", "exit": "Shop Portal 129", + "direction": "entrance"}, + {"entrance": "Dusty Exit", "exit": "Shop Portal 130", "direction": "entrance"}, + {"entrance": "Siege Engine Arena to Fortress", "exit": "Shop Portal 131", "direction": "entrance"}, + {"entrance": "Fortress to Far Shore", "exit": "Shop Portal 132", "direction": "entrance"}, + {"entrance": "Atoll Upper Exit", "exit": "Shop Portal 133", "direction": "entrance"}, + {"entrance": "Atoll Lower Exit", "exit": "Shop Portal 134", "direction": "entrance"}, + {"entrance": "Atoll Shop", "exit": "Shop Portal 135", "direction": "entrance"}, + {"entrance": "Atoll to Far Shore", "exit": "Shop Portal 136", "direction": "entrance"}, + {"entrance": "Atoll Statue Teleporter", "exit": "Shop Portal 137", "direction": "entrance"}, + {"entrance": "Frog Stairs Eye Entrance", "exit": "Shop Portal 138", "direction": "entrance"}, + {"entrance": "Frog Stairs Mouth Entrance", "exit": "Shop Portal 139", "direction": "entrance"}, + {"entrance": "Frog Stairs Eye Exit", "exit": "Shop Portal 140", "direction": "entrance"}, + {"entrance": "Frog Stairs Mouth Exit", "exit": "Shop Portal 141", "direction": "entrance"}, + {"entrance": "Frog Stairs to Frog's Domain's Entrance", "exit": "Shop Portal 142", + "direction": "entrance"}, + {"entrance": "Frog Stairs to Frog's Domain's Exit", "exit": "Shop Portal 143", + "direction": "entrance"}, + {"entrance": "Frog's Domain Ladder Exit", "exit": "Shop Portal 144", "direction": "entrance"}, + {"entrance": "Frog's Domain Orb Exit", "exit": "Shop Portal 145", "direction": "entrance"}, + {"entrance": "Library Exterior Tree", "exit": "Shop Portal 146", "direction": "entrance"}, + {"entrance": "Library Exterior Ladder", "exit": "Shop Portal 147", "direction": "entrance"}, + {"entrance": "Library Hall Bookshelf Exit", "exit": "Shop Portal 148", "direction": "entrance"}, + {"entrance": "Library Hero's Grave", "exit": "Shop Portal 149", "direction": "entrance"}, + {"entrance": "Library Hall to Rotunda", "exit": "Shop Portal 150", "direction": "entrance"}, + {"entrance": "Library Rotunda Lower Exit", "exit": "Shop Portal 151", "direction": "entrance"}, + {"entrance": "Library Rotunda Upper Exit", "exit": "Shop Portal 152", "direction": "entrance"}, + {"entrance": "Library Lab to Rotunda", "exit": "Shop Portal 153", "direction": "entrance"}, + {"entrance": "Library to Far Shore", "exit": "Shop Portal 154", "direction": "entrance"}, + {"entrance": "Library Lab to Librarian Arena", "exit": "Shop Portal 155", "direction": "entrance"}, + {"entrance": "Librarian Arena Exit", "exit": "Shop Portal 156", "direction": "entrance"}, + {"entrance": "Stairs to Top of the Mountain", "exit": "Shop Portal 157", "direction": "entrance"}, + {"entrance": "Mountain to Quarry", "exit": "Shop Portal 158", "direction": "entrance"}, + {"entrance": "Mountain to Overworld", "exit": "Shop Portal 159", "direction": "entrance"}, + {"entrance": "Top of the Mountain Exit", "exit": "Shop Portal 160", "direction": "entrance"}, + {"entrance": "Quarry Connector to Overworld", "exit": "Shop Portal 161", "direction": "entrance"}, + {"entrance": "Quarry Connector to Quarry", "exit": "Shop Portal 162", "direction": "entrance"}, + {"entrance": "Quarry to Overworld Exit", "exit": "Shop Portal 163", "direction": "entrance"}, + {"entrance": "Quarry Shop", "exit": "Shop Portal 164", "direction": "entrance"}, + {"entrance": "Quarry to Monastery Front", "exit": "Shop Portal 165", "direction": "entrance"}, + {"entrance": "Quarry to Monastery Back", "exit": "Shop Portal 166", "direction": "entrance"}, + {"entrance": "Quarry to Mountain", "exit": "Shop Portal 167", "direction": "entrance"}, + {"entrance": "Quarry to Ziggurat", "exit": "Shop Portal 168", "direction": "entrance"}, + {"entrance": "Quarry to Far Shore", "exit": "Shop Portal 169", "direction": "entrance"}, + {"entrance": "Monastery Rear Exit", "exit": "Shop Portal 170", "direction": "entrance"}, + {"entrance": "Monastery Front Exit", "exit": "Shop Portal 171", "direction": "entrance"}, + {"entrance": "Monastery Hero's Grave", "exit": "Shop Portal 172", "direction": "entrance"}, + {"entrance": "Ziggurat Entry Hallway to Ziggurat Upper", "exit": "Shop Portal 173", + "direction": "entrance"}, + {"entrance": "Ziggurat Entry Hallway to Quarry", "exit": "Shop Portal 174", "direction": "entrance"}, + {"entrance": "Ziggurat Upper to Ziggurat Entry Hallway", "exit": "Shop Portal 175", + "direction": "entrance"}, + {"entrance": "Ziggurat Upper to Ziggurat Tower", "exit": "Shop Portal 176", "direction": "entrance"}, + {"entrance": "Ziggurat Tower to Ziggurat Upper", "exit": "Shop Portal 177", "direction": "entrance"}, + {"entrance": "Ziggurat Tower to Ziggurat Lower", "exit": "Shop Portal 178", "direction": "entrance"}, + {"entrance": "Ziggurat Lower to Ziggurat Tower", "exit": "Shop Portal 179", "direction": "entrance"}, + {"entrance": "Ziggurat Portal Room Entrance", "exit": "Shop Portal 180", "direction": "entrance"}, + {"entrance": "Ziggurat Portal Room Exit", "exit": "Shop Portal 181", "direction": "entrance"}, + {"entrance": "Ziggurat to Far Shore", "exit": "Shop Portal 182", "direction": "entrance"}, + {"entrance": "Swamp Lower Exit", "exit": "Shop Portal 183", "direction": "entrance"}, + {"entrance": "Swamp to Cathedral Main Entrance", "exit": "Shop Portal 184", "direction": "entrance"}, + {"entrance": "Swamp to Cathedral Secret Legend Room Entrance", "exit": "Shop Portal 185", + "direction": "entrance"}, + {"entrance": "Swamp to Gauntlet", "exit": "Shop Portal 186", "direction": "entrance"}, + {"entrance": "Swamp Shop", "exit": "Shop Portal 187", "direction": "entrance"}, + {"entrance": "Swamp Upper Exit", "exit": "Shop Portal 188", "direction": "entrance"}, + {"entrance": "Swamp Hero's Grave", "exit": "Shop Portal 189", "direction": "entrance"}, + {"entrance": "Cathedral Main Exit", "exit": "Shop Portal 190", "direction": "entrance"}, + {"entrance": "Cathedral Elevator", "exit": "Shop Portal 191", "direction": "entrance"}, + {"entrance": "Cathedral Secret Legend Room Exit", "exit": "Shop Portal 192", + "direction": "entrance"}, + {"entrance": "Gauntlet to Swamp", "exit": "Shop Portal 193", "direction": "entrance"}, + {"entrance": "Gauntlet Elevator", "exit": "Shop Portal 194", "direction": "entrance"}, + {"entrance": "Gauntlet Shop", "exit": "Shop Portal 195", "direction": "entrance"}, + {"entrance": "Hero's Grave to Fortress", "exit": "Shop Portal 196", "direction": "entrance"}, + {"entrance": "Hero's Grave to Monastery", "exit": "Shop Portal 197", "direction": "entrance"}, + {"entrance": "Hero's Grave to West Garden", "exit": "Shop Portal 198", "direction": "entrance"}, + {"entrance": "Hero's Grave to East Forest", "exit": "Shop Portal 199", "direction": "entrance"}, + {"entrance": "Hero's Grave to Library", "exit": "Shop Portal 200", "direction": "entrance"}, + {"entrance": "Hero's Grave to Swamp", "exit": "Shop Portal 201", "direction": "entrance"}, + {"entrance": "Far Shore to West Garden", "exit": "Shop Portal 202", "direction": "entrance"}, + {"entrance": "Far Shore to Library", "exit": "Shop Portal 203", "direction": "entrance"}, + {"entrance": "Far Shore to Quarry", "exit": "Shop Portal 204", "direction": "entrance"}, + {"entrance": "Far Shore to East Forest", "exit": "Shop Portal 205", "direction": "entrance"}, + {"entrance": "Far Shore to Fortress", "exit": "Shop Portal 206", "direction": "entrance"}, + {"entrance": "Far Shore to Atoll", "exit": "Shop Portal 207", "direction": "entrance"}, + {"entrance": "Far Shore to Ziggurat", "exit": "Shop Portal 208", "direction": "entrance"}, + {"entrance": "Far Shore to Heir", "exit": "Shop Portal 209", "direction": "entrance"}, + {"entrance": "Far Shore to Town", "exit": "Shop Portal 210", "direction": "entrance"}, + {"entrance": "Far Shore to Spawn", "exit": "Shop Portal 211", "direction": "entrance"}, + {"entrance": "Heir Arena Exit", "exit": "Shop Portal 212", "direction": "entrance"}, + {"entrance": "Purgatory Bottom Exit", "exit": "Shop Portal 213", "direction": "entrance"}, + {"entrance": "Purgatory Top Exit", "exit": "Shop Portal 214", "direction": "entrance"}, + {"entrance": "Shop Portal 215", "exit": "Shop Portal 216", "direction": "entrance"}, + {"entrance": "Shop Portal 217", "exit": "Shop Portal 218", "direction": "entrance"}, + {"entrance": "Shop Portal 219", "exit": "Shop Portal 220", "direction": "entrance"}, + {"entrance": "Shop Portal 221", "exit": "Shop Portal 222", "direction": "entrance"}, + {"entrance": "Shop Portal 223", "exit": "Shop Portal 224", "direction": "entrance"}, + {"entrance": "Shop Portal 225", "exit": "Shop Portal 226", "direction": "entrance"}, + {"entrance": "Shop Portal 227", "exit": "Shop Portal 228", "direction": "entrance"}, + {"entrance": "Shop Portal 229", "exit": "Shop Portal 230", "direction": "entrance"}, + ]} From c40214e20f6c0946506c1367270a8b07e09a11f9 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Wed, 7 May 2025 10:41:37 -0400 Subject: [PATCH 022/183] Docs: Minor Changes to apworld_dev_faq.md (#4947) Co-authored-by: qwint --- docs/apworld_dev_faq.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/apworld_dev_faq.md b/docs/apworld_dev_faq.md index 6d7d23b488d1..6c331b849fcf 100644 --- a/docs/apworld_dev_faq.md +++ b/docs/apworld_dev_faq.md @@ -8,7 +8,11 @@ including [Contributing](contributing.md), [Adding Games](), an ### My game has a restrictive start that leads to fill errors -Hint to the Generator that an item needs to be in sphere one with local_early_items. Here, `1` represents the number of "Sword" items to attempt to place in sphere one. +A "restrictive start" here means having a combination of very few sphere 1 locations and potentially requiring more +than one item to get a player to sphere 2. + +One way to fix this is to hint to the Generator that an item needs to be in sphere one with local_early_items. +Here, `1` represents the number of "Sword" items the Generator will attempt to place in sphere one. ```py early_item_name = "Sword" self.multiworld.local_early_items[self.player][early_item_name] = 1 @@ -22,7 +26,7 @@ Some alternative ways to try to fix this problem are: --- -### I have multiple settings that change the item/location pool counts and need to balance them out +### I have multiple options that change the item/location pool counts and need to make sure I am not submitting more/fewer items than locations In an ideal situation your system for producing locations and items wouldn't leave any opportunity for them to be unbalanced. But in real, complex situations, that might be unfeasible. From 0ba9ee0695ebd809ef9e127361223cd39dbc0588 Mon Sep 17 00:00:00 2001 From: qwint Date: Wed, 7 May 2025 09:47:14 -0500 Subject: [PATCH 023/183] Docs: update line length in apworld faq doc (#4960) --- docs/apworld_dev_faq.md | 54 ++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/docs/apworld_dev_faq.md b/docs/apworld_dev_faq.md index 6c331b849fcf..e3e571d94949 100644 --- a/docs/apworld_dev_faq.md +++ b/docs/apworld_dev_faq.md @@ -22,15 +22,19 @@ Some alternative ways to try to fix this problem are: * Add more locations to sphere one of your world, potentially only when there would be a restrictive start * Pre-place items yourself, such as during `create_items` * Put items into the player's starting inventory using `push_precollected` -* Raise an exception, such as an `OptionError` during `generate_early`, to disallow options that would lead to a restrictive start +* Raise an exception, such as an `OptionError` during `generate_early`, to disallow options that would lead to a + restrictive start --- ### I have multiple options that change the item/location pool counts and need to make sure I am not submitting more/fewer items than locations -In an ideal situation your system for producing locations and items wouldn't leave any opportunity for them to be unbalanced. But in real, complex situations, that might be unfeasible. +In an ideal situation your system for producing locations and items wouldn't leave any opportunity for them to be +unbalanced. But in real, complex situations, that might be unfeasible. -If that's the case, you can create extra filler based on the difference between your unfilled locations and your itempool by comparing [get_unfilled_locations](https://github.com/ArchipelagoMW/Archipelago/blob/main/BaseClasses.py#:~:text=get_unfilled_locations) to your list of items to submit +If that's the case, you can create extra filler based on the difference between your unfilled locations and your +itempool by comparing [get_unfilled_locations](https://github.com/ArchipelagoMW/Archipelago/blob/main/BaseClasses.py#:~:text=get_unfilled_locations) +to your list of items to submit Note: to use self.create_filler(), self.get_filler_item_name() should be defined to only return valid filler item names ```py @@ -43,7 +47,8 @@ for _ in range(total_locations - len(item_pool)): self.multiworld.itempool += item_pool ``` -A faster alternative to the `for` loop would be to use a [list comprehension](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions): +A faster alternative to the `for` loop would be to use a +[list comprehension](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions): ```py item_pool += [self.create_filler() for _ in range(total_locations - len(item_pool))] ``` @@ -52,24 +57,39 @@ item_pool += [self.create_filler() for _ in range(total_locations - len(item_poo ### I learned about indirect conditions in the world API document, but I want to know more. What are they and why are they necessary? -The world API document mentions how to use `multiworld.register_indirect_condition` to register indirect conditions and **when** you should use them, but not *how* they work and *why* they are necessary. This is because the explanation is quite complicated. +The world API document mentions how to use `multiworld.register_indirect_condition` to register indirect conditions and +**when** you should use them, but not *how* they work and *why* they are necessary. This is because the explanation is +quite complicated. -Region sweep (the algorithm that determines which regions are reachable) is a Breadth-First Search of the region graph. It starts from the origin region, checks entrances one by one, and adds newly reached regions and their entrances to the queue until there is nothing more to check. +Region sweep (the algorithm that determines which regions are reachable) is a Breadth-First Search of the region graph. +It starts from the origin region, checks entrances one by one, and adds newly reached regions and their entrances to +the queue until there is nothing more to check. -For performance reasons, AP only checks every entrance once. However, if an entrance's access_rule depends on region access, then the following may happen: -1. The entrance is checked and determined to be nontraversable because the region in its access_rule hasn't been reached yet during the graph search. +For performance reasons, AP only checks every entrance once. However, if an entrance's access_rule depends on region +access, then the following may happen: +1. The entrance is checked and determined to be nontraversable because the region in its access_rule hasn't been + reached yet during the graph search. 2. Then, the region in its access_rule is determined to be reachable. This entrance *would* be in logic if it were rechecked, but it won't be rechecked this cycle. -To account for this case, AP would have to recheck all entrances every time a new region is reached until no new regions are reached. - -An indirect condition is how you can manually define that a specific entrance needs to be rechecked during region sweep if a specific region is reached during it. -This keeps most of the performance upsides. Even in a game making heavy use of indirect conditions (ex: The Witness), using them is significantly faster than just "rechecking each entrance until nothing new is found". -The reason entrance access rules using `location.can_reach` and `entrance.can_reach` are also affected is because they call `region.can_reach` on their respective parent/source region. - -We recognize it can feel like a trap since it will not alert you when you are missing an indirect condition, and that some games have very complex access rules. -As of [PR #3682 (Core: Region handling customization)](https://github.com/ArchipelagoMW/Archipelago/pull/3682) being merged, it is possible for a world to opt out of indirect conditions entirely, instead using the system of checking each entrance whenever a region has been reached, although this does come with a performance cost. -Opting out of using indirect conditions should only be used by games that *really* need it. For most games, it should be reasonable to know all entrance → region dependencies, making indirect conditions preferred because they are much faster. +To account for this case, AP would have to recheck all entrances every time a new region is reached until no new +regions are reached. + +An indirect condition is how you can manually define that a specific entrance needs to be rechecked during region sweep +if a specific region is reached during it. +This keeps most of the performance upsides. Even in a game making heavy use of indirect conditions (ex: The Witness), +using them is significantly faster than just "rechecking each entrance until nothing new is found". +The reason entrance access rules using `location.can_reach` and `entrance.can_reach` are also affected is because they +call `region.can_reach` on their respective parent/source region. + +We recognize it can feel like a trap since it will not alert you when you are missing an indirect condition, +and that some games have very complex access rules. +As of [PR #3682 (Core: Region handling customization)](https://github.com/ArchipelagoMW/Archipelago/pull/3682) +being merged, it is possible for a world to opt out of indirect conditions entirely, instead using the system of +checking each entrance whenever a region has been reached, although this does come with a performance cost. +Opting out of using indirect conditions should only be used by games that *really* need it. For most games, it should +be reasonable to know all entrance → region dependencies, making indirect conditions preferred because they are +much faster. --- From 17bc184e28f3371eb352a275aaf0bdff6cb20b39 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Wed, 7 May 2025 10:59:16 -0400 Subject: [PATCH 024/183] TUNIC: Add Hidden all_random Option (#4635) --- worlds/tunic/__init__.py | 17 ++++++++++++++++- worlds/tunic/options.py | 12 ++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/worlds/tunic/__init__.py b/worlds/tunic/__init__.py index 7027ab1a6427..cdc8f05cb91a 100644 --- a/worlds/tunic/__init__.py +++ b/worlds/tunic/__init__.py @@ -1,3 +1,4 @@ +from dataclasses import fields from typing import Dict, List, Any, Tuple, TypedDict, ClassVar, Union, Set, TextIO from logging import warning from BaseClasses import Region, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState @@ -16,7 +17,7 @@ from .breakables import breakable_location_name_to_id, breakable_location_groups, breakable_location_table from .combat_logic import area_data, CombatState from worlds.AutoWorld import WebWorld, World -from Options import PlandoConnection, OptionError +from Options import PlandoConnection, OptionError, PerGameCommonOptions, Removed, Range from settings import Group, Bool @@ -120,6 +121,20 @@ def generate_early(self) -> None: raise Exception("You have a TUNIC APWorld in your lib/worlds folder and custom_worlds folder.\n" "This would cause an error at the end of generation.\n" "Please remove one of them, most likely the one in lib/worlds.") + + if self.options.all_random: + for option_name in (attr.name for attr in fields(TunicOptions) + if attr not in fields(PerGameCommonOptions)): + option = getattr(self.options, option_name) + if option_name == "all_random": + continue + if isinstance(option, Removed): + continue + if option.supports_weighting: + if isinstance(option, Range): + option.value = self.random.randint(option.range_start, option.range_end) + else: + option.value = self.random.choice(list(option.name_lookup)) check_options(self) diff --git a/worlds/tunic/options.py b/worlds/tunic/options.py index e3fed5b52dfd..09e2d1d604ca 100644 --- a/worlds/tunic/options.py +++ b/worlds/tunic/options.py @@ -332,6 +332,16 @@ class LadderStorageWithoutItems(Toggle): display_name = "Ladder Storage without Items" +class HiddenAllRandom(Toggle): + """ + Sets all options that can be random to random. + For test gens. + """ + internal_name = "all_random" + display_name = "All Random Debug" + visibility = Visibility.none + + class LogicRules(Choice): """ This option has been superseded by the individual trick options. @@ -392,6 +402,8 @@ class TunicOptions(PerGameCommonOptions): ice_grappling: IceGrappling ladder_storage: LadderStorage ladder_storage_without_items: LadderStorageWithoutItems + + all_random: HiddenAllRandom fixed_shop: FixedShop # will be removed at a later date logic_rules: Removed # fully removed in the direction pairs update From dffde64079860ed815b266b9d957d643ef45bbaf Mon Sep 17 00:00:00 2001 From: Ixrec Date: Wed, 7 May 2025 17:20:21 +0100 Subject: [PATCH 025/183] Docs: add a "soft logic" question to apworld_dev_faq.md (#4953) * add a "soft logic" question to apworld_dev_faq.md * Update apworld_dev_faq.md * Update docs/apworld_dev_faq.md Co-authored-by: Scipio Wright * Update docs/apworld_dev_faq.md Co-authored-by: Scipio Wright * add a reminder about progression and how it influences soft logic implementations --------- Co-authored-by: Scipio Wright --- docs/apworld_dev_faq.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/apworld_dev_faq.md b/docs/apworld_dev_faq.md index e3e571d94949..50bee148c60e 100644 --- a/docs/apworld_dev_faq.md +++ b/docs/apworld_dev_faq.md @@ -109,3 +109,16 @@ Common situations where this can happen include: Also, consider using the `options.as_dict("option_name", "option_two")` helper. * Using enums as Location/Item names in the datapackage. When building out `location_name_to_id` and `item_name_to_id`, make sure that you are not using your enum class for either the names or ids in these mappings. + +--- + +### Some locations are technically possible to check with few or no items, but they'd be very tedious or frustrating. How do worlds deal with this? + +Sometimes the game can be modded to skip these locations or make them less tedious. But when this issue is due to a fundamental aspect of the game, then the general answer is "soft logic" (and its subtypes like "combat logic", "money logic", etc.). For example: you can logically require that a player have several helpful items before fighting the final boss, even if a skilled player technically needs no items to beat it. Randomizer logic should describe what's *fun* rather than what's technically possible. + +Concrete examples of soft logic include: +- Defeating a boss might logically require health upgrades, damage upgrades, certain weapons, etc. that aren't strictly necessary. +- Entering a high-level area might logically require access to enough other parts of the game that checking other locations should naturally get the player to the soft-required level. +- Buying expensive shop items might logically require access to a place where you can quickly farm money, or logically require access to enough parts of the game that checking other locations should naturally generate enough money without grinding. + +Remember that all items referenced by logic (however hard or soft) must be `progression`. Since you typically don't want to turn a ton of `filler` items into `progression` just for this, it's common to e.g. write money logic using only the rare "$100" item, so the dozens of "$1" and "$10" items in your world can remain `filler`. From 1ee8e339af92130bb42c74aaec93de7abc1e5742 Mon Sep 17 00:00:00 2001 From: Benjamin S Wolf Date: Wed, 7 May 2025 09:51:26 -0700 Subject: [PATCH 026/183] Launcher: Warn if there is no File Browser (#4275) --- Launcher.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Launcher.py b/Launcher.py index 859ebf0f768b..594286fac576 100644 --- a/Launcher.py +++ b/Launcher.py @@ -84,12 +84,16 @@ def browse_files(): def open_folder(folder_path): if is_linux: exe = which('xdg-open') or which('gnome-open') or which('kde-open') - subprocess.Popen([exe, folder_path]) elif is_macos: exe = which("open") - subprocess.Popen([exe, folder_path]) else: webbrowser.open(folder_path) + return + + if exe: + subprocess.Popen([exe, folder_path]) + else: + logging.warning(f"No file browser available to open {folder_path}") def update_settings(): From 703f5a22fda63c15f4bccebb21ee87253efc3b76 Mon Sep 17 00:00:00 2001 From: digiholic Date: Wed, 7 May 2025 11:43:03 -0600 Subject: [PATCH 027/183] OSRS: New Tasks, New Options, Compatibility with new Plugin Features (#4688) --- worlds/osrs/Items.py | 2 +- worlds/osrs/LogicCSV/LogicCSVToPython.py | 227 +++++++++++++------- worlds/osrs/LogicCSV/items_generated.py | 57 ++++- worlds/osrs/LogicCSV/locations_generated.py | 53 ++++- worlds/osrs/LogicCSV/regions_generated.py | 36 ++-- worlds/osrs/LogicCSV/resources_generated.py | 7 + worlds/osrs/Names.py | 6 +- worlds/osrs/Options.py | 49 ++++- worlds/osrs/Rules.py | 16 +- worlds/osrs/__init__.py | 40 +++- 10 files changed, 372 insertions(+), 121 deletions(-) diff --git a/worlds/osrs/Items.py b/worlds/osrs/Items.py index 0679c964e772..248544aa15e6 100644 --- a/worlds/osrs/Items.py +++ b/worlds/osrs/Items.py @@ -62,7 +62,7 @@ class OSRSItem(Item): ItemNames.South_Of_Varrock, ItemNames.Central_Varrock, ItemNames.Varrock_Palace, - ItemNames.East_Of_Varrock, + ItemNames.Lumberyard, ItemNames.West_Varrock, ItemNames.Edgeville, ItemNames.Barbarian_Village, diff --git a/worlds/osrs/LogicCSV/LogicCSVToPython.py b/worlds/osrs/LogicCSV/LogicCSVToPython.py index ed8bd8172a01..b66f53cc9db5 100644 --- a/worlds/osrs/LogicCSV/LogicCSVToPython.py +++ b/worlds/osrs/LogicCSV/LogicCSVToPython.py @@ -8,7 +8,9 @@ # The CSVs are updated at this repository to be shared between generator and client. data_repository_address = "https://raw.githubusercontent.com/digiholic/osrs-archipelago-logic/" # The Github tag of the CSVs this was generated with -data_csv_tag = "v1.5" +data_csv_tag = "v2.0.4" +# If true, generate using file names in the repository +debug = False if __name__ == "__main__": import sys @@ -26,98 +28,167 @@ def load_location_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "locations_generated.py"), 'w+') as locPyFile: - locPyFile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - locPyFile.write("from ..Locations import LocationRow, SkillRequirement\n") - locPyFile.write("\n") - locPyFile.write("location_rows = [\n") - - with requests.get(data_repository_address + "/" + data_csv_tag + "/locations.csv") as req: - locations_reader = csv.reader(req.text.splitlines()) - for row in locations_reader: - row_line = "LocationRow(" - row_line += str_format(row[0]) - row_line += str_format(row[1].lower()) - - region_strings = row[2].split(", ") if row[2] else [] - row_line += f"{str_list_to_py(region_strings)}, " - - skill_strings = row[3].split(", ") - row_line += "[" - if skill_strings: - split_skills = [skill.split(" ") for skill in skill_strings if skill != ""] - if split_skills: - for split in split_skills: - row_line += f"SkillRequirement('{split[0]}', {split[1]}), " - row_line += "], " - - item_strings = row[4].split(", ") if row[4] else [] - row_line += f"{str_list_to_py(item_strings)}, " - row_line += f"{row[5]})" if row[5] != "" else "0)" - locPyFile.write(f"\t{row_line},\n") - locPyFile.write("]\n") + with open(os.path.join(this_dir, "locations_generated.py"), 'w+') as loc_py_file: + loc_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + loc_py_file.write("from ..Locations import LocationRow, SkillRequirement\n") + loc_py_file.write("\n") + loc_py_file.write("location_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "locations.csv"), "r") as loc_file: + locations_reader = csv.reader(loc_file.read().splitlines()) + parse_loc_file(loc_py_file, locations_reader) + else: + print("Loading: " + data_repository_address + "/" + data_csv_tag + "/locations.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/locations.csv") as req: + if req.status_code == 200: + locations_reader = csv.reader(req.text.splitlines()) + parse_loc_file(loc_py_file, locations_reader) + else: + print(str(req.status_code) + ": " + req.reason) + loc_py_file.write("]\n") + + + def parse_loc_file(loc_py_file, locations_reader): + for row in locations_reader: + # Skip the header row, if present + if row[0] == "Location Name": + continue + row_line = "LocationRow(" + row_line += str_format(row[0]) + row_line += str_format(row[1].lower()) + + region_strings = row[2].split(", ") if row[2] else [] + row_line += f"{str_list_to_py(region_strings)}, " + + skill_strings = row[3].split(", ") + row_line += "[" + if skill_strings: + split_skills = [skill.split(" ") for skill in skill_strings if skill != ""] + if split_skills: + for split in split_skills: + row_line += f"SkillRequirement('{split[0]}', {split[1]}), " + row_line += "], " + + item_strings = row[4].split(", ") if row[4] else [] + row_line += f"{str_list_to_py(item_strings)}, " + row_line += f"{row[5]})" if row[5] != "" else "0)" + loc_py_file.write(f"\t{row_line},\n") + def load_region_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "regions_generated.py"), 'w+') as regPyFile: - regPyFile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - regPyFile.write("from ..Regions import RegionRow\n") - regPyFile.write("\n") - regPyFile.write("region_rows = [\n") - - with requests.get(data_repository_address + "/" + data_csv_tag + "/regions.csv") as req: - regions_reader = csv.reader(req.text.splitlines()) - for row in regions_reader: - row_line = "RegionRow(" - row_line += str_format(row[0]) - row_line += str_format(row[1]) - connections = row[2].replace("'", "\\'") - row_line += f"{str_list_to_py(connections.split(', '))}, " - resources = row[3].replace("'", "\\'") - row_line += f"{str_list_to_py(resources.split(', '))})" - regPyFile.write(f"\t{row_line},\n") - regPyFile.write("]\n") + with open(os.path.join(this_dir, "regions_generated.py"), 'w+') as reg_py_file: + reg_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + reg_py_file.write("from ..Regions import RegionRow\n") + reg_py_file.write("\n") + reg_py_file.write("region_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "regions.csv"), "r") as region_file: + regions_reader = csv.reader(region_file.read().splitlines()) + parse_region_file(reg_py_file, regions_reader) + else: + print("Loading: "+ data_repository_address + "/" + data_csv_tag + "/regions.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/regions.csv") as req: + if req.status_code == 200: + regions_reader = csv.reader(req.text.splitlines()) + parse_region_file(reg_py_file, regions_reader) + else: + print(str(req.status_code) + ": " + req.reason) + reg_py_file.write("]\n") + + + def parse_region_file(reg_py_file, regions_reader): + for row in regions_reader: + # Skip the header row, if present + if row[0] == "Region Name": + continue + + row_line = "RegionRow(" + row_line += str_format(row[0]) + row_line += str_format(row[1]) + connections = row[2] + row_line += f"{str_list_to_py(connections.split(', '))}, " + resources = row[3] + row_line += f"{str_list_to_py(resources.split(', '))})" + reg_py_file.write(f"\t{row_line},\n") + def load_resource_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "resources_generated.py"), 'w+') as resPyFile: - resPyFile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - resPyFile.write("from ..Regions import ResourceRow\n") - resPyFile.write("\n") - resPyFile.write("resource_rows = [\n") - - with requests.get(data_repository_address + "/" + data_csv_tag + "/resources.csv") as req: - resource_reader = csv.reader(req.text.splitlines()) - for row in resource_reader: - name = row[0].replace("'", "\\'") - row_line = f"ResourceRow('{name}')" - resPyFile.write(f"\t{row_line},\n") - resPyFile.write("]\n") + with open(os.path.join(this_dir, "resources_generated.py"), 'w+') as res_py_file: + res_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + res_py_file.write("from ..Regions import ResourceRow\n") + res_py_file.write("\n") + res_py_file.write("resource_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "resources.csv"), "r") as region_file: + regions_reader = csv.reader(region_file.read().splitlines()) + parse_resources_file(res_py_file, regions_reader) + else: + print("Loading: " + data_repository_address + "/" + data_csv_tag + "/resources.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/resources.csv") as req: + if req.status_code == 200: + resource_reader = csv.reader(req.text.splitlines()) + parse_resources_file(res_py_file, resource_reader) + else: + print(str(req.status_code) + ": " + req.reason) + res_py_file.write("]\n") + + + def parse_resources_file(res_py_file, resource_reader): + for row in resource_reader: + # Skip the header row, if present + if row[0] == "Resource Name": + continue + + name = row[0].replace("'", "\\'") + row_line = f"ResourceRow('{name}')" + res_py_file.write(f"\t{row_line},\n") def load_item_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "items_generated.py"), 'w+') as itemPyfile: - itemPyfile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - itemPyfile.write("from BaseClasses import ItemClassification\n") - itemPyfile.write("from ..Items import ItemRow\n") - itemPyfile.write("\n") - itemPyfile.write("item_rows = [\n") + with open(os.path.join(this_dir, "items_generated.py"), 'w+') as item_py_file: + item_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + item_py_file.write("from BaseClasses import ItemClassification\n") + item_py_file.write("from ..Items import ItemRow\n") + item_py_file.write("\n") + item_py_file.write("item_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "items.csv"), "r") as region_file: + regions_reader = csv.reader(region_file.read().splitlines()) + parse_item_file(item_py_file, regions_reader) + else: + print("Loading: " + data_repository_address + "/" + data_csv_tag + "/items.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/items.csv") as req: + if req.status_code == 200: + item_reader = csv.reader(req.text.splitlines()) + parse_item_file(item_py_file, item_reader) + else: + print(str(req.status_code) + ": " + req.reason) + item_py_file.write("]\n") + + + def parse_item_file(item_py_file, item_reader): + for row in item_reader: + # Skip the header row, if present + if row[0] == "Name": + continue - with requests.get(data_repository_address + "/" + data_csv_tag + "/items.csv") as req: - item_reader = csv.reader(req.text.splitlines()) - for row in item_reader: - row_line = "ItemRow(" - row_line += str_format(row[0]) - row_line += f"{row[1]}, " + row_line = "ItemRow(" + row_line += str_format(row[0]) + row_line += f"{row[1]}, " - row_line += f"ItemClassification.{row[2]})" + row_line += f"ItemClassification.{row[2]})" - itemPyfile.write(f"\t{row_line},\n") - itemPyfile.write("]\n") + item_py_file.write(f"\t{row_line},\n") def str_format(s) -> str: @@ -128,7 +199,7 @@ def str_format(s) -> str: def str_list_to_py(str_list) -> str: ret_str = "[" for s in str_list: - ret_str += f"'{s}', " + ret_str += str_format(s) ret_str += "]" return ret_str diff --git a/worlds/osrs/LogicCSV/items_generated.py b/worlds/osrs/LogicCSV/items_generated.py index b5e610a6e3ab..3a277b8d5e4f 100644 --- a/worlds/osrs/LogicCSV/items_generated.py +++ b/worlds/osrs/LogicCSV/items_generated.py @@ -10,7 +10,7 @@ ItemRow('Area: HAM Hideout', 1, ItemClassification.progression), ItemRow('Area: Lumbridge Farms', 1, ItemClassification.progression), ItemRow('Area: South of Varrock', 1, ItemClassification.progression), - ItemRow('Area: East Varrock', 1, ItemClassification.progression), + ItemRow('Area: Lumberyard', 1, ItemClassification.progression), ItemRow('Area: Central Varrock', 1, ItemClassification.progression), ItemRow('Area: Varrock Palace', 1, ItemClassification.progression), ItemRow('Area: West Varrock', 1, ItemClassification.progression), @@ -37,7 +37,58 @@ ItemRow('Progressive Armor', 6, ItemClassification.progression), ItemRow('Progressive Weapons', 6, ItemClassification.progression), ItemRow('Progressive Tools', 6, ItemClassification.useful), - ItemRow('Progressive Ranged Weapons', 3, ItemClassification.useful), + ItemRow('Progressive Ranged Weapon', 3, ItemClassification.useful), ItemRow('Progressive Ranged Armor', 3, ItemClassification.useful), - ItemRow('Progressive Magic', 2, ItemClassification.useful), + ItemRow('Progressive Magic Spell', 2, ItemClassification.useful), + ItemRow('An Invitation to the Gielinor Games', 1, ItemClassification.filler), + ItemRow('Settled\'s Crossbow', 1, ItemClassification.filler), + ItemRow('The Stone of Jas', 1, ItemClassification.filler), + ItemRow('Nieve\'s Phone Number', 1, ItemClassification.filler), + ItemRow('Hannanie\'s Lost Sanity', 1, ItemClassification.filler), + ItemRow('XP Waste', 1, ItemClassification.filler), + ItemRow('Ten Free Pulls on the Squeal of Fortune', 1, ItemClassification.filler), + ItemRow('Project Zanaris Beta Invite', 1, ItemClassification.filler), + ItemRow('A Funny Feeling You Would Have Been Followed', 1, ItemClassification.filler), + ItemRow('An Ominous Prediction From Gnome Child', 1, ItemClassification.filler), + ItemRow('A Logic Error', 1, ItemClassification.filler), + ItemRow('The Warding Skill', 1, ItemClassification.filler), + ItemRow('A 1/2500 Chance At Your Very Own Pet Baron Sucellus, Redeemable at your Local Duke, Some Restrictions May Apply', 1, ItemClassification.filler), + ItemRow('A Suspicious Email From Iagex.com Asking for your Password', 1, ItemClassification.filler), + ItemRow('A Review on that Pull Request You\'ve Been Waiting On', 1, ItemClassification.filler), + ItemRow('Fifty Billion RS3 GP (Worthless)', 1, ItemClassification.filler), + ItemRow('Mod Ash\'s Coffee Cup', 1, ItemClassification.filler), + ItemRow('An Embarrasing Photo of Zammorak at the Christmas Party', 1, ItemClassification.filler), + ItemRow('Another Bug To Report', 1, ItemClassification.filler), + ItemRow('1-Up Mushroom', 1, ItemClassification.filler), + ItemRow('Empty White Hallways', 1, ItemClassification.filler), + ItemRow('Area: Menaphos', 1, ItemClassification.filler), + ItemRow('A Ratcatchers Dialogue Rewrite', 1, ItemClassification.filler), + ItemRow('"Nostalgia"', 1, ItemClassification.filler), + ItemRow('A Hornless Unicorn', 1, ItemClassification.filler), + ItemRow('The Ability To Use ::bank', 1, ItemClassification.filler), + ItemRow('Free Haircut at the Falador Hairdresser', 1, ItemClassification.filler), + ItemRow('Nothing Interesting Happens', 1, ItemClassification.filler), + ItemRow('Why Fletch?', 1, ItemClassification.filler), + ItemRow('Evolution of Combat', 1, ItemClassification.filler), + ItemRow('Care Pack: 10,000 GP', 1, ItemClassification.useful), + ItemRow('Care Pack: 90 Steel Nails', 1, ItemClassification.useful), + ItemRow('Care Pack: 25 Swordfish', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Lobsters', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Law Runes', 1, ItemClassification.useful), + ItemRow('Care Pack: 300 Each Elemental Rune', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Chaos Runes', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Death Runes', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Oak Logs', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Willow Logs', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Bronze Bars', 1, ItemClassification.useful), + ItemRow('Care Pack: 200 Iron Ore', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Coal Ore', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Raw Trout', 1, ItemClassification.useful), + ItemRow('Care Pack: 200 Leather', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Energy Potion (4)', 2, ItemClassification.useful), + ItemRow('Care Pack: 200 Big Bones', 1, ItemClassification.useful), + ItemRow('Care Pack: 10 Each Uncut gems', 1, ItemClassification.useful), + ItemRow('Care Pack: 3 Rings of Forging', 1, ItemClassification.useful), + ItemRow('Care Pack: 500 Rune Essence', 1, ItemClassification.useful), + ItemRow('Care Pack: 200 Mind Runes', 1, ItemClassification.useful), ] diff --git a/worlds/osrs/LogicCSV/locations_generated.py b/worlds/osrs/LogicCSV/locations_generated.py index 2d617a7038fe..4c1cd0bdd893 100644 --- a/worlds/osrs/LogicCSV/locations_generated.py +++ b/worlds/osrs/LogicCSV/locations_generated.py @@ -19,37 +19,56 @@ LocationRow('Quest: Witch\'s Potion', 'quest', ['Rimmington', 'Port Sarim', ], [], [], 0), LocationRow('Quest: The Knight\'s Sword', 'quest', ['Falador', 'Varrock Palace', 'Mudskipper Point', 'South of Varrock', 'Windmill', 'Pie Dish', 'Port Sarim', ], [SkillRequirement('Cooking', 10), SkillRequirement('Mining', 10), ], [], 0), LocationRow('Quest: Goblin Diplomacy', 'quest', ['Goblin Village', 'Draynor Village', 'Falador', 'South of Varrock', 'Onion', ], [], [], 0), - LocationRow('Quest: Pirate\'s Treasure', 'quest', ['Port Sarim', 'Karamja', 'Falador', ], [], [], 0), + LocationRow('Quest: Pirate\'s Treasure', 'quest', ['Port Sarim', 'Karamja', 'Falador', 'Central Varrock', ], [], [], 0), LocationRow('Quest: Rune Mysteries', 'quest', ['Lumbridge', 'Wizard Tower', 'Central Varrock', ], [], [], 0), LocationRow('Quest: Misthalin Mystery', 'quest', ['Lumbridge Swamp', ], [], [], 0), LocationRow('Quest: The Corsair Curse', 'quest', ['Rimmington', 'Falador Farms', 'Corsair Cove', ], [], [], 0), LocationRow('Quest: X Marks the Spot', 'quest', ['Lumbridge', 'Draynor Village', 'Port Sarim', ], [], [], 0), LocationRow('Quest: Below Ice Mountain', 'quest', ['Dwarven Mines', 'Dwarven Mountain Pass', 'Ice Mountain', 'Barbarian Village', 'Falador', 'Central Varrock', 'Edgeville', ], [], [], 16), LocationRow('Quest: Dragon Slayer', 'goal', ['Crandor', 'South of Varrock', 'Edgeville', 'Lumbridge', 'Rimmington', 'Monastery', 'Dwarven Mines', 'Port Sarim', 'Draynor Village', ], [], [], 32), + LocationRow('Bury Some Big Bones', 'prayer', ['Big Bones', ], [SkillRequirement('Prayer', 1), ], [], 0), + LocationRow('Activate the "Sharp Eye" Prayer', 'prayer', [], [SkillRequirement('Prayer', 8), ], [], 0), LocationRow('Activate the "Rock Skin" Prayer', 'prayer', [], [SkillRequirement('Prayer', 10), ], [], 0), LocationRow('Activate the "Protect Item" Prayer', 'prayer', [], [SkillRequirement('Prayer', 25), ], [], 2), LocationRow('Pray at the Edgeville Monastery', 'prayer', ['Monastery', ], [SkillRequirement('Prayer', 31), ], [], 6), LocationRow('Cast Bones To Bananas', 'magic', ['Nature Runes', ], [SkillRequirement('Magic', 15), ], [], 0), + LocationRow('Cast Earth Strike', 'magic', [], [SkillRequirement('Magic', 9), ], [], 0), + LocationRow('Cast Curse', 'magic', [], [SkillRequirement('Magic', 19), ], [], 0), LocationRow('Teleport to Varrock', 'magic', ['Central Varrock', 'Law Runes', ], [SkillRequirement('Magic', 25), ], [], 0), - LocationRow('Teleport to Lumbridge', 'magic', ['Lumbridge', 'Law Runes', ], [SkillRequirement('Magic', 31), ], [], 2), + LocationRow('Teleport to Lumbridge', 'magic', ['Lumbridge', 'Law Runes', ], [SkillRequirement('Magic', 31), ], [], 0), + LocationRow('Telegrab a Gold Bar from the Varrock Bank', 'magic', ['Law Runes', 'West Varrock', ], [SkillRequirement('Magic', 33), ], [], 0), LocationRow('Teleport to Falador', 'magic', ['Falador', 'Law Runes', ], [SkillRequirement('Magic', 37), ], [], 6), LocationRow('Craft an Air Rune', 'runecraft', ['Rune Essence', 'Falador Farms', ], [SkillRequirement('Runecraft', 1), ], [], 0), + LocationRow('Craft a Mind Rune', 'runecraft', ['Rune Essence', 'Goblin Village', ], [SkillRequirement('Runecraft', 2), ], [], 0), + LocationRow('Craft a Water Rune', 'runecraft', ['Rune Essence', 'Lumbridge Swamp', ], [SkillRequirement('Runecraft', 5), ], [], 0), + LocationRow('Craft an Earth Rune', 'runecraft', ['Rune Essence', 'Lumberyard', ], [SkillRequirement('Runecraft', 9), ], [], 0), + LocationRow('Craft a Fire Rune', 'runecraft', ['Rune Essence', 'Al Kharid', ], [SkillRequirement('Runecraft', 14), ], [], 0), + LocationRow('Craft a Body Rune', 'runecraft', ['Rune Essence', 'Dwarven Mountain Pass', ], [SkillRequirement('Runecraft', 20), ], [], 0), LocationRow('Craft runes with a Mind Core', 'runecraft', ['Camdozaal', 'Goblin Village', ], [SkillRequirement('Runecraft', 2), ], [], 0), LocationRow('Craft runes with a Body Core', 'runecraft', ['Camdozaal', 'Dwarven Mountain Pass', ], [SkillRequirement('Runecraft', 20), ], [], 0), + LocationRow('Craft a Pot', 'crafting', ['Clay Ore', 'Barbarian Village', ], [SkillRequirement('Crafting', 1), ], [], 0), + LocationRow('Craft a pair of Leather Boots', 'crafting', ['Milk', 'Al Kharid', ], [SkillRequirement('Crafting', 7), ], [], 0), LocationRow('Make an Unblessed Symbol', 'crafting', ['Silver Ore', 'Furnace', 'Al Kharid', 'Sheep', 'Spinning Wheel', ], [SkillRequirement('Crafting', 16), ], [], 0), LocationRow('Cut a Sapphire', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 20), ], [], 0), LocationRow('Cut an Emerald', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 27), ], [], 0), LocationRow('Cut a Ruby', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 34), ], [], 4), + LocationRow('Enter the Crafting Guild', 'crafting', ['Crafting Guild', ], [SkillRequirement('Crafting', 40), ], [], 0), LocationRow('Cut a Diamond', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 43), ], [], 8), + LocationRow('Mine Copper', 'crafting', ['Bronze Ores', ], [SkillRequirement('Mining', 1), ], [], 0), + LocationRow('Mine Tin', 'crafting', ['Bronze Ores', ], [SkillRequirement('Mining', 1), ], [], 0), + LocationRow('Mine Clay', 'crafting', ['Clay Ore', ], [SkillRequirement('Mining', 1), ], [], 0), + LocationRow('Mine Iron', 'mining', ['Iron Ore', ], [SkillRequirement('Mining', 1), ], [], 0), LocationRow('Mine a Blurite Ore', 'mining', ['Mudskipper Point', 'Port Sarim', ], [SkillRequirement('Mining', 10), ], [], 0), LocationRow('Crush a Barronite Deposit', 'mining', ['Camdozaal', ], [SkillRequirement('Mining', 14), ], [], 0), LocationRow('Mine Silver', 'mining', ['Silver Ore', ], [SkillRequirement('Mining', 20), ], [], 0), LocationRow('Mine Coal', 'mining', ['Coal Ore', ], [SkillRequirement('Mining', 30), ], [], 2), LocationRow('Mine Gold', 'mining', ['Gold Ore', ], [SkillRequirement('Mining', 40), ], [], 6), + LocationRow('Smelt a Bronze Bar', 'smithing', ['Bronze Ores', 'Furnace', ], [SkillRequirement('Smithing', 1), SkillRequirement('Mining', 1), ], [], 0), LocationRow('Smelt an Iron Bar', 'smithing', ['Iron Ore', 'Furnace', ], [SkillRequirement('Smithing', 15), SkillRequirement('Mining', 15), ], [], 0), LocationRow('Smelt a Silver Bar', 'smithing', ['Silver Ore', 'Furnace', ], [SkillRequirement('Smithing', 20), SkillRequirement('Mining', 20), ], [], 0), LocationRow('Smelt a Steel Bar', 'smithing', ['Coal Ore', 'Iron Ore', 'Furnace', ], [SkillRequirement('Smithing', 30), SkillRequirement('Mining', 30), ], [], 2), LocationRow('Smelt a Gold Bar', 'smithing', ['Gold Ore', 'Furnace', ], [SkillRequirement('Smithing', 40), SkillRequirement('Mining', 40), ], [], 6), + LocationRow('Catch a Sardine', 'fishing', ['Shrimp Spot', ], [SkillRequirement('Fishing', 5), ], [], 0), LocationRow('Catch some Anchovies', 'fishing', ['Shrimp Spot', ], [SkillRequirement('Fishing', 15), ], [], 0), LocationRow('Catch a Trout', 'fishing', ['Fly Fishing Spot', ], [SkillRequirement('Fishing', 20), ], [], 0), LocationRow('Prepare a Tetra', 'fishing', ['Camdozaal', ], [SkillRequirement('Fishing', 33), SkillRequirement('Cooking', 33), ], [], 2), @@ -58,13 +77,16 @@ LocationRow('Bake a Redberry Pie', 'cooking', ['Redberry Bush', 'Wheat', 'Windmill', 'Pie Dish', ], [SkillRequirement('Cooking', 10), ], [], 0), LocationRow('Cook some Stew', 'cooking', ['Bowl', 'Meat', 'Potato', ], [SkillRequirement('Cooking', 25), ], [], 0), LocationRow('Bake an Apple Pie', 'cooking', ['Cooking Apple', 'Wheat', 'Windmill', 'Pie Dish', ], [SkillRequirement('Cooking', 32), ], [], 2), + LocationRow('Enter the Cook\'s Guild', 'cooking', ['Cook\'s Guild', ], [], [], 0), LocationRow('Bake a Cake', 'cooking', ['Wheat', 'Windmill', 'Egg', 'Milk', 'Cake Tin', ], [SkillRequirement('Cooking', 40), ], [], 6), LocationRow('Bake a Meat Pizza', 'cooking', ['Wheat', 'Windmill', 'Cheese', 'Tomato', 'Meat', ], [SkillRequirement('Cooking', 45), ], [], 8), + LocationRow('Burn a Log', 'firemaking', [], [SkillRequirement('Firemaking', 1), SkillRequirement('Woodcutting', 1), ], [], 0), LocationRow('Burn some Oak Logs', 'firemaking', ['Oak Tree', ], [SkillRequirement('Firemaking', 15), SkillRequirement('Woodcutting', 15), ], [], 0), LocationRow('Burn some Willow Logs', 'firemaking', ['Willow Tree', ], [SkillRequirement('Firemaking', 30), SkillRequirement('Woodcutting', 30), ], [], 0), LocationRow('Travel on a Canoe', 'woodcutting', ['Canoe Tree', ], [SkillRequirement('Woodcutting', 12), ], [], 0), LocationRow('Cut an Oak Log', 'woodcutting', ['Oak Tree', ], [SkillRequirement('Woodcutting', 15), ], [], 0), LocationRow('Cut a Willow Log', 'woodcutting', ['Willow Tree', ], [SkillRequirement('Woodcutting', 30), ], [], 0), + LocationRow('Kill a Duck', 'combat', ['Duck', ], [SkillRequirement('Combat', 1), ], [], 0), LocationRow('Kill Jeff', 'combat', ['Dwarven Mountain Pass', ], [SkillRequirement('Combat', 2), ], [], 0), LocationRow('Kill a Goblin', 'combat', ['Goblin', ], [SkillRequirement('Combat', 2), ], [], 0), LocationRow('Kill a Monkey', 'combat', ['Karamja', ], [SkillRequirement('Combat', 3), ], [], 0), @@ -81,19 +103,24 @@ LocationRow('Kill an Ogress Shaman', 'combat', ['Corsair Cove', ], [SkillRequirement('Combat', 82), ], [], 8), LocationRow('Kill Obor', 'combat', ['Edgeville', ], [SkillRequirement('Combat', 106), ], [], 28), LocationRow('Kill Bryophyta', 'combat', ['Central Varrock', ], [SkillRequirement('Combat', 128), ], [], 28), + LocationRow('Die', 'general', [], [], [], 0), + LocationRow('Reach a Level 10', 'general', [], [], [], 0), LocationRow('Total XP 5,000', 'general', [], [], [], 0), LocationRow('Combat Level 5', 'general', [], [], [], 0), LocationRow('Total XP 10,000', 'general', [], [], [], 0), LocationRow('Total Level 50', 'general', [], [], [], 0), + LocationRow('Reach a Level 20', 'general', [], [], [], 0), LocationRow('Total XP 25,000', 'general', [], [], [], 0), LocationRow('Total Level 100', 'general', [], [], [], 0), LocationRow('Total XP 50,000', 'general', [], [], [], 0), LocationRow('Combat Level 15', 'general', [], [], [], 0), LocationRow('Total Level 150', 'general', [], [], [], 2), + LocationRow('Reach a Level 30', 'general', [], [], [], 2), LocationRow('Total XP 75,000', 'general', [], [], [], 2), LocationRow('Combat Level 25', 'general', [], [], [], 2), LocationRow('Total XP 100,000', 'general', [], [], [], 6), LocationRow('Total Level 200', 'general', [], [], [], 6), + LocationRow('Reach a Level 40', 'general', [], [], [], 6), LocationRow('Total XP 125,000', 'general', [], [], [], 6), LocationRow('Combat Level 30', 'general', [], [], [], 10), LocationRow('Total Level 250', 'general', [], [], [], 10), @@ -103,6 +130,28 @@ LocationRow('Open a Simple Lockbox', 'general', ['Camdozaal', ], [], [], 0), LocationRow('Open an Elaborate Lockbox', 'general', ['Camdozaal', ], [], [], 0), LocationRow('Open an Ornate Lockbox', 'general', ['Camdozaal', ], [], [], 0), + LocationRow('Trans your Gender', 'general', ['Makeover', ], [], [], 0), + LocationRow('Read a Flyer from Ali the Leaflet Dropper', 'general', ['Al Kharid', 'South of Varrock', ], [], [], 0), + LocationRow('Cry by the Members Gate to Taverley', 'general', ['Dwarven Mountain Pass', ], [], [], 0), + LocationRow('Get Prompted to Buy Membership', 'general', [], [], [], 0), + LocationRow('Pet the Stray Dog in Varrock', 'general', ['Central Varrock', 'West Varrock', 'South of Varrock', ], [], [], 0), + LocationRow('Get Sent to Jail in Shantay Pass', 'general', ['Al Kharid', 'Port Sarim', ], [], [], 0), + LocationRow('Have the Apothecary Make a Strength Potion', 'general', ['Central Varrock', 'Red Spider Eggs', 'Limpwurt Root', ], [], [], 0), + LocationRow('Put a Whole Banana into a Bottle of Karamjan Rum', 'general', ['Karamja', ], [], [], 0), + LocationRow('Attempt to Shear "The Thing"', 'general', ['Lumbridge Farms West', ], [], [], 0), + LocationRow('Eat a Kebab', 'general', ['Al Kharid', ], [], [], 0), + LocationRow('Return a Beer Glass to a Bar', 'general', ['Falador', ], [], [], 0), + LocationRow('Enter the Varrock Bear Cage', 'general', ['Varrock Palace', ], [], [], 0), + LocationRow('Equip a Cabbage Cape', 'general', ['Draynor Village', ], [], [], 0), + LocationRow('Equip a Pride Scarf', 'general', ['Draynor Village', ], [], [], 0), + LocationRow('Visit the Black Hole', 'general', ['Draynor Village', 'Dwarven Mines', ], [], [], 0), + LocationRow('Try to Equip Goblin Mail', 'general', ['Goblin', ], [], [], 0), + LocationRow('Equip an Orange Cape', 'general', ['Draynor Village', ], [], [], 0), + LocationRow('Find a Needle in a Haystack', 'general', ['Haystack', ], [], [], 0), + LocationRow('Insult the Homeless (but not Charlie he\'s cool)', 'general', ['Central Varrock', 'South of Varrock', ], [], [], 0), + LocationRow('Dance with Party Pete', 'general', ['Falador', ], [], [], 0), + LocationRow('Read a Newspaper', 'general', ['Central Varrock', ], [], [], 0), + LocationRow('Add a Card to the Chronicle', 'general', ['Draynor Village', ], [], [], 0), LocationRow('Points: Cook\'s Assistant', 'points', [], [], [], 0), LocationRow('Points: Demon Slayer', 'points', [], [], [], 0), LocationRow('Points: The Restless Ghost', 'points', [], [], [], 0), diff --git a/worlds/osrs/LogicCSV/regions_generated.py b/worlds/osrs/LogicCSV/regions_generated.py index 87b3747d938e..512cd3b268d5 100644 --- a/worlds/osrs/LogicCSV/regions_generated.py +++ b/worlds/osrs/LogicCSV/regions_generated.py @@ -4,19 +4,19 @@ from ..Regions import RegionRow region_rows = [ - RegionRow('Lumbridge', 'Area: Lumbridge', ['Lumbridge Farms East', 'Lumbridge Farms West', 'Al Kharid', 'Lumbridge Swamp', 'HAM Hideout', 'South of Varrock', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Mind Runes', 'Spinning Wheel', 'Furnace', 'Chisel', 'Bronze Anvil', 'Fly Fishing Spot', 'Bowl', 'Cake Tin', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Goblin', 'Imps', ]), - RegionRow('Lumbridge Swamp', 'Area: Lumbridge Swamp', ['Lumbridge', 'HAM Hideout', ], ['Bronze Ores', 'Coal Ore', 'Shrimp Spot', 'Meat', 'Goblin', 'Imps', ]), + RegionRow('Lumbridge', 'Area: Lumbridge', ['Lumbridge Farms East', 'Lumbridge Farms West', 'Al Kharid', 'Lumbridge Swamp', 'HAM Hideout', 'South of Varrock', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Mind Runes', 'Spinning Wheel', 'Furnace', 'Chisel', 'Bronze Anvil', 'Fly Fishing Spot', 'Bowl', 'Cake Tin', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Goblin', 'Imps', 'Duck', 'Bar', ]), + RegionRow('Lumbridge Swamp', 'Area: Lumbridge Swamp', ['Lumbridge', 'HAM Hideout', ], ['Bronze Ores', 'Coal Ore', 'Shrimp Spot', 'Meat', 'Goblin', 'Imps', 'Big Bones', 'Duck', ]), RegionRow('HAM Hideout', 'Area: HAM Hideout', ['Lumbridge Farms West', 'Lumbridge', 'Lumbridge Swamp', 'Draynor Village', ], ['Goblin', ]), - RegionRow('Lumbridge Farms West', 'Area: Lumbridge Farms', ['Sourhog\'s Lair', 'HAM Hideout', 'Draynor Village', ], ['Sheep', 'Meat', 'Wheat', 'Windmill', 'Egg', 'Milk', 'Willow Tree', 'Imps', 'Potato', ]), + RegionRow('Lumbridge Farms West', 'Area: Lumbridge Farms', ['Sourhog\'s Lair', 'HAM Hideout', 'Draynor Village', ], ['Sheep', 'Meat', 'Wheat', 'Windmill', 'Egg', 'Milk', 'Willow Tree', 'Imps', 'Potato', 'Haystack', ]), RegionRow('Lumbridge Farms East', 'Area: Lumbridge Farms', ['South of Varrock', 'Lumbridge', ], ['Meat', 'Egg', 'Milk', 'Willow Tree', 'Goblin', 'Imps', 'Potato', ]), RegionRow('Sourhog\'s Lair', 'Area: South of Varrock', ['Lumbridge Farms West', 'Draynor Manor Outskirts', ], ['', ]), - RegionRow('South of Varrock', 'Area: South of Varrock', ['Al Kharid', 'West Varrock', 'Central Varrock', 'East Varrock', 'Lumbridge Farms East', 'Lumbridge', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Sheep', 'Bronze Ores', 'Iron Ore', 'Silver Ore', 'Redberry Bush', 'Meat', 'Wheat', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Guard', 'Imps', 'Clay Ore', ]), - RegionRow('East Varrock', 'Area: East Varrock', ['Wilderness', 'South of Varrock', 'Central Varrock', 'Varrock Palace', ], ['Guard', ]), - RegionRow('Central Varrock', 'Area: Central Varrock', ['Varrock Palace', 'East Varrock', 'South of Varrock', 'West Varrock', ], ['Mind Runes', 'Chisel', 'Anvil', 'Bowl', 'Cake Tin', 'Oak Tree', 'Barbarian', 'Guard', 'Rune Essence', 'Imps', ]), - RegionRow('Varrock Palace', 'Area: Varrock Palace', ['Wilderness', 'East Varrock', 'Central Varrock', 'West Varrock', ], ['Pie Dish', 'Oak Tree', 'Zombie', 'Guard', 'Deadly Red Spider', 'Moss Giant', 'Nature Runes', 'Law Runes', ]), + RegionRow('South of Varrock', 'Area: South of Varrock', ['Al Kharid', 'West Varrock', 'Central Varrock', 'Lumberyard', 'Lumbridge Farms East', 'Lumbridge', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Sheep', 'Bronze Ores', 'Iron Ore', 'Silver Ore', 'Redberry Bush', 'Meat', 'Wheat', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Guard', 'Imps', 'Clay Ore', 'Duck', ]), + RegionRow('Lumberyard', 'Area: Lumberyard', ['Wilderness', 'South of Varrock', 'Central Varrock', 'Varrock Palace', ], ['Guard', 'Bar', ]), + RegionRow('Central Varrock', 'Area: Central Varrock', ['Varrock Palace', 'Lumberyard', 'South of Varrock', 'West Varrock', ], ['Mind Runes', 'Chisel', 'Anvil', 'Bowl', 'Cake Tin', 'Oak Tree', 'Barbarian', 'Guard', 'Rune Essence', 'Imps', 'Makeover', 'Bar', ]), + RegionRow('Varrock Palace', 'Area: Varrock Palace', ['Wilderness', 'Lumberyard', 'Central Varrock', 'West Varrock', ], ['Pie Dish', 'Oak Tree', 'Zombie', 'Guard', 'Deadly Red Spider', 'Moss Giant', 'Nature Runes', 'Law Runes', 'Big Bones', 'Makeover', 'Red Spider Eggs', ]), RegionRow('West Varrock', 'Area: West Varrock', ['Wilderness', 'Varrock Palace', 'South of Varrock', 'Barbarian Village', 'Edgeville', 'Cook\'s Guild', ], ['Anvil', 'Wheat', 'Oak Tree', 'Goblin', 'Guard', 'Onion', ]), RegionRow('Cook\'s Guild', 'Area: West Varrock*', ['West Varrock', ], ['Bowl', 'Cooking Apple', 'Pie Dish', 'Cake Tin', 'Windmill', ]), - RegionRow('Edgeville', 'Area: Edgeville', ['Wilderness', 'West Varrock', 'Barbarian Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Bronze Ores', 'Iron Ore', 'Coal Ore', 'Bowl', 'Meat', 'Cake Tin', 'Willow Tree', 'Canoe Tree', 'Zombie', 'Guard', 'Hill Giant', 'Nature Runes', 'Law Runes', 'Imps', ]), + RegionRow('Edgeville', 'Area: Edgeville', ['Wilderness', 'West Varrock', 'Barbarian Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Bronze Ores', 'Iron Ore', 'Coal Ore', 'Bowl', 'Meat', 'Cake Tin', 'Willow Tree', 'Canoe Tree', 'Zombie', 'Guard', 'Hill Giant', 'Nature Runes', 'Law Runes', 'Imps', 'Big Bones', 'Limpwurt Root', 'Haystack', ]), RegionRow('Barbarian Village', 'Area: Barbarian Village', ['Edgeville', 'West Varrock', 'Draynor Manor Outskirts', 'Dwarven Mountain Pass', ], ['Spinning Wheel', 'Coal Ore', 'Anvil', 'Fly Fishing Spot', 'Meat', 'Canoe Tree', 'Barbarian', 'Zombie', 'Law Runes', ]), RegionRow('Draynor Manor Outskirts', 'Area: Draynor Manor', ['Barbarian Village', 'Sourhog\'s Lair', 'Draynor Village', 'Falador East Outskirts', ], ['Goblin', ]), RegionRow('Draynor Manor', 'Area: Draynor Manor', ['Draynor Village', ], ['', ]), @@ -27,21 +27,21 @@ RegionRow('Ice Mountain', 'Area: Ice Mountain', ['Wilderness', 'Monastery', 'Dwarven Mines', 'Camdozaal*', ], ['', ]), RegionRow('Camdozaal', 'Area: Ice Mountain', ['Ice Mountain', ], ['Clay Ore', ]), RegionRow('Monastery', 'Area: Monastery', ['Wilderness', 'Dwarven Mountain Pass', 'Dwarven Mines', 'Ice Mountain', ], ['Sheep', ]), - RegionRow('Falador', 'Area: Falador', ['Dwarven Mountain Pass', 'Falador Farms', 'Dwarven Mines', ], ['Furnace', 'Chisel', 'Bowl', 'Cake Tin', 'Oak Tree', 'Guard', 'Imps', ]), - RegionRow('Falador Farms', 'Area: Falador Farms', ['Falador', 'Falador East Outskirts', 'Draynor Village', 'Port Sarim', 'Rimmington', 'Crafting Guild Outskirts', ], ['Spinning Wheel', 'Meat', 'Egg', 'Milk', 'Oak Tree', 'Imps', ]), + RegionRow('Falador', 'Area: Falador', ['Dwarven Mountain Pass', 'Falador Farms', 'Dwarven Mines', ], ['Furnace', 'Chisel', 'Bowl', 'Cake Tin', 'Oak Tree', 'Guard', 'Imps', 'Duck', 'Makeover', 'Bar', ]), + RegionRow('Falador Farms', 'Area: Falador Farms', ['Falador', 'Falador East Outskirts', 'Draynor Village', 'Port Sarim', 'Rimmington', 'Crafting Guild Outskirts', ], ['Spinning Wheel', 'Meat', 'Egg', 'Milk', 'Oak Tree', 'Imps', 'Duck', ]), RegionRow('Port Sarim', 'Area: Port Sarim', ['Falador Farms', 'Mudskipper Point', 'Rimmington', 'Karamja Docks', 'Crandor', ], ['Mind Runes', 'Shrimp Spot', 'Meat', 'Cheese', 'Tomato', 'Oak Tree', 'Willow Tree', 'Goblin', 'Potato', ]), RegionRow('Karamja Docks', 'Area: Mudskipper Point', ['Port Sarim', 'Karamja', ], ['', ]), - RegionRow('Mudskipper Point', 'Area: Mudskipper Point', ['Rimmington', 'Port Sarim', ], ['Anvil', 'Ice Giant', 'Nature Runes', 'Law Runes', ]), - RegionRow('Karamja', 'Area: Karamja', ['Karamja Docks', 'Crandor', ], ['Gold Ore', 'Lobster Spot', 'Bowl', 'Cake Tin', 'Deadly Red Spider', 'Imps', ]), - RegionRow('Crandor', 'Area: Crandor', ['Karamja', 'Port Sarim', ], ['Coal Ore', 'Gold Ore', 'Moss Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', ]), + RegionRow('Mudskipper Point', 'Area: Mudskipper Point', ['Rimmington', 'Port Sarim', ], ['Anvil', 'Ice Giant', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', ]), + RegionRow('Karamja', 'Area: Karamja', ['Karamja Docks', 'Crandor', ], ['Gold Ore', 'Lobster Spot', 'Bowl', 'Cake Tin', 'Deadly Red Spider', 'Imps', 'Red Spider Eggs', ]), + RegionRow('Crandor', 'Area: Crandor', ['Karamja', 'Port Sarim', ], ['Coal Ore', 'Gold Ore', 'Moss Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', ]), RegionRow('Rimmington', 'Area: Rimmington', ['Falador Farms', 'Port Sarim', 'Mudskipper Point', 'Crafting Guild Peninsula', 'Corsair Cove', ], ['Chisel', 'Bronze Ores', 'Iron Ore', 'Gold Ore', 'Bowl', 'Cake Tin', 'Wheat', 'Oak Tree', 'Willow Tree', 'Crafting Moulds', 'Imps', 'Clay Ore', 'Onion', ]), - RegionRow('Crafting Guild Peninsula', 'Area: Crafting Guild', ['Falador Farms', 'Rimmington', ], ['', ]), - RegionRow('Crafting Guild Outskirts', 'Area: Crafting Guild', ['Falador Farms', 'Crafting Guild', ], ['Sheep', 'Willow Tree', 'Oak Tree', ]), + RegionRow('Crafting Guild Peninsula', 'Area: Crafting Guild', ['Falador Farms', 'Rimmington', ], ['Limpwurt Root', ]), + RegionRow('Crafting Guild Outskirts', 'Area: Crafting Guild', ['Falador Farms', 'Crafting Guild', ], ['Sheep', 'Willow Tree', 'Oak Tree', 'Makeover', ]), RegionRow('Crafting Guild', 'Area: Crafting Guild*', ['Crafting Guild', ], ['Spinning Wheel', 'Chisel', 'Silver Ore', 'Gold Ore', 'Meat', 'Milk', 'Clay Ore', ]), RegionRow('Draynor Village', 'Area: Draynor Village', ['Draynor Manor', 'Lumbridge Farms West', 'HAM Hideout', 'Wizard Tower', ], ['Anvil', 'Shrimp Spot', 'Wheat', 'Cheese', 'Tomato', 'Willow Tree', 'Goblin', 'Zombie', 'Nature Runes', 'Law Runes', 'Imps', ]), RegionRow('Wizard Tower', 'Area: Wizard Tower', ['Draynor Village', ], ['Lesser Demon', 'Rune Essence', ]), - RegionRow('Corsair Cove', 'Area: Corsair Cove*', ['Rimmington', ], ['Anvil', 'Meat', ]), + RegionRow('Corsair Cove', 'Area: Corsair Cove*', ['Rimmington', ], ['Anvil', 'Meat', 'Limpwurt Root', ]), RegionRow('Al Kharid', 'Area: Al Kharid', ['South of Varrock', 'Citharede Abbey', 'Lumbridge', 'Port Sarim', ], ['Furnace', 'Chisel', 'Bronze Ores', 'Iron Ore', 'Silver Ore', 'Coal Ore', 'Gold Ore', 'Shrimp Spot', 'Bowl', 'Cake Tin', 'Cheese', 'Crafting Moulds', 'Imps', ]), - RegionRow('Citharede Abbey', 'Area: Citharede Abbey', ['Al Kharid', ], ['Iron Ore', 'Coal Ore', 'Anvil', 'Hill Giant', 'Nature Runes', 'Law Runes', ]), - RegionRow('Wilderness', 'Area: Wilderness', ['East Varrock', 'Varrock Palace', 'West Varrock', 'Edgeville', 'Monastery', 'Ice Mountain', 'Goblin Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Iron Ore', 'Coal Ore', 'Anvil', 'Meat', 'Cake Tin', 'Cheese', 'Tomato', 'Oak Tree', 'Canoe Tree', 'Zombie', 'Hill Giant', 'Deadly Red Spider', 'Moss Giant', 'Ice Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', ]), + RegionRow('Citharede Abbey', 'Area: Citharede Abbey', ['Al Kharid', ], ['Iron Ore', 'Coal Ore', 'Anvil', 'Hill Giant', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', ]), + RegionRow('Wilderness', 'Area: Wilderness', ['Lumberyard', 'Varrock Palace', 'West Varrock', 'Edgeville', 'Monastery', 'Ice Mountain', 'Goblin Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Iron Ore', 'Coal Ore', 'Anvil', 'Meat', 'Cake Tin', 'Cheese', 'Tomato', 'Oak Tree', 'Canoe Tree', 'Zombie', 'Hill Giant', 'Deadly Red Spider', 'Moss Giant', 'Ice Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', 'Bar', ]), ] diff --git a/worlds/osrs/LogicCSV/resources_generated.py b/worlds/osrs/LogicCSV/resources_generated.py index 18c2ebe2f317..2b08f119199a 100644 --- a/worlds/osrs/LogicCSV/resources_generated.py +++ b/worlds/osrs/LogicCSV/resources_generated.py @@ -51,4 +51,11 @@ ResourceRow('Clay Ore'), ResourceRow('Onion'), ResourceRow('Potato'), + ResourceRow('Big Bones'), + ResourceRow('Duck'), + ResourceRow('Makeover'), + ResourceRow('Limpwurt Root'), + ResourceRow('Bar'), + ResourceRow('Haystack'), + ResourceRow('Red Spider Eggs'), ] diff --git a/worlds/osrs/Names.py b/worlds/osrs/Names.py index 1a44aa389c6a..138fa848507c 100644 --- a/worlds/osrs/Names.py +++ b/worlds/osrs/Names.py @@ -73,7 +73,7 @@ class ItemNames(str, Enum): South_Of_Varrock = "Area: South of Varrock" Central_Varrock = "Area: Central Varrock" Varrock_Palace = "Area: Varrock Palace" - East_Of_Varrock = "Area: East Varrock" + Lumberyard = "Area: Lumberyard" West_Varrock = "Area: West Varrock" Edgeville = "Area: Edgeville" Barbarian_Village = "Area: Barbarian Village" @@ -94,8 +94,8 @@ class ItemNames(str, Enum): Progressive_Weapons = "Progressive Weapons" Progressive_Tools = "Progressive Tools" Progressive_Range_Armor = "Progressive Ranged Armor" - Progressive_Range_Weapon = "Progressive Ranged Weapons" - Progressive_Magic = "Progressive Magic" + Progressive_Range_Weapon = "Progressive Ranged Weapon" + Progressive_Magic = "Progressive Magic Spell" Lobsters = "10 Lobsters" Swordfish = "5 Swordfish" Energy_Potions = "10 Energy Potions" diff --git a/worlds/osrs/Options.py b/worlds/osrs/Options.py index 81e017eddb34..55a040b0950e 100644 --- a/worlds/osrs/Options.py +++ b/worlds/osrs/Options.py @@ -3,18 +3,19 @@ from Options import Choice, Toggle, Range, PerGameCommonOptions MAX_COMBAT_TASKS = 16 -MAX_PRAYER_TASKS = 3 -MAX_MAGIC_TASKS = 4 -MAX_RUNECRAFT_TASKS = 3 -MAX_CRAFTING_TASKS = 5 -MAX_MINING_TASKS = 5 -MAX_SMITHING_TASKS = 4 -MAX_FISHING_TASKS = 5 -MAX_COOKING_TASKS = 5 -MAX_FIREMAKING_TASKS = 2 + +MAX_PRAYER_TASKS = 5 +MAX_MAGIC_TASKS = 7 +MAX_RUNECRAFT_TASKS = 8 +MAX_CRAFTING_TASKS = 11 +MAX_MINING_TASKS = 6 +MAX_SMITHING_TASKS = 5 +MAX_FISHING_TASKS = 6 +MAX_COOKING_TASKS = 6 +MAX_FIREMAKING_TASKS = 3 MAX_WOODCUTTING_TASKS = 3 -NON_QUEST_LOCATION_COUNT = 22 +NON_QUEST_LOCATION_COUNT = 49 class StartingArea(Choice): @@ -58,6 +59,31 @@ class ProgressiveTasks(Toggle): display_name = "Progressive Tasks" +class EnableDuds(Toggle): + """ + Whether to include filler "Dud" items that serve no purpose but allow for more tasks in the pool. + """ + display_name = "Enable Duds" + + +class DudCount(Range): + """ + How many "Dud" items to include in the pool. This setting is ignored if "Enable Duds" is not included + """ + display_name = "Dud Item Count" + range_start = 0 + range_end = 30 + default = 10 + + +class EnableCarePacks(Toggle): + """ + Whether or not to include useful "Care Pack" items that allow you to trade over specific items. + Note: Requires your account NOT to be an Ironman. Also, requires access to another account to trade over the items, + or gold to purchase off of the grand exchange. + """ + display_name = "Enable Care Packs" + class MaxCombatLevel(Range): """ The highest combat level of monster to possibly be assigned as a task. @@ -472,6 +498,9 @@ class OSRSOptions(PerGameCommonOptions): starting_area: StartingArea brutal_grinds: BrutalGrinds progressive_tasks: ProgressiveTasks + enable_duds: EnableDuds + dud_count: DudCount + enable_carepacks: EnableCarePacks max_combat_level: MaxCombatLevel max_combat_tasks: MaxCombatTasks combat_task_weight: CombatTaskWeight diff --git a/worlds/osrs/Rules.py b/worlds/osrs/Rules.py index 22a19934c8e1..7fd770f0f7a7 100644 --- a/worlds/osrs/Rules.py +++ b/worlds/osrs/Rules.py @@ -212,11 +212,14 @@ def get_skill_rule(skill, level, player, options) -> CollectionRule: return lambda state: True -def generate_special_rules_for(entrance, region_row, outbound_region_name, player, options): +def generate_special_rules_for(entrance, region_row, outbound_region_name, player, options, world): if outbound_region_name == RegionNames.Cooks_Guild: add_rule(entrance, get_cooking_skill_rule(32, player, options)) + # Since there's goblins in this chunk, checking for hat access is superfluous, you'd always have it anyway elif outbound_region_name == RegionNames.Crafting_Guild: add_rule(entrance, get_crafting_skill_rule(40, player, options)) + # Literally the only brown apron access in the entirety of f2p is buying it in varrock + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Central_Varrock, player)) elif outbound_region_name == RegionNames.Corsair_Cove: # Need to be able to start Corsair Curse in addition to having the item add_rule(entrance, lambda state: state.can_reach(RegionNames.Falador_Farm, "Region", player)) @@ -224,6 +227,17 @@ def generate_special_rules_for(entrance, region_row, outbound_region_name, playe add_rule(entrance, lambda state: state.has(ItemNames.QP_Below_Ice_Mountain, player)) elif region_row.name == "Dwarven Mountain Pass" and outbound_region_name == "Anvil*": add_rule(entrance, lambda state: state.has(ItemNames.QP_Dorics_Quest, player)) + elif outbound_region_name == RegionNames.Crandor: + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.South_Of_Varrock, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Edgeville, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Lumbridge, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Rimmington, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Monastery, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Dwarven_Mines, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Port_Sarim, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Draynor_Village, player)) + add_rule(entrance, lambda state: world.quest_points(state) >= 32) + # Special logic for canoes canoe_regions = [RegionNames.Lumbridge, RegionNames.South_Of_Varrock, RegionNames.Barbarian_Village, diff --git a/worlds/osrs/__init__.py b/worlds/osrs/__init__.py index d6ddd63875f4..9e439fe52ce3 100644 --- a/worlds/osrs/__init__.py +++ b/worlds/osrs/__init__.py @@ -168,7 +168,7 @@ def create_regions(self) -> None: item_name = self.region_rows_by_name[parsed_outbound].itemReq entrance.access_rule = lambda state, item_name=item_name.replace("*",""): state.has(item_name, self.player) - generate_special_rules_for(entrance, region_row, outbound_region_name, self.player, self.options) + generate_special_rules_for(entrance, region_row, outbound_region_name, self.player, self.options, self) for resource_region in region_row.resources: if not resource_region: @@ -179,7 +179,7 @@ def create_regions(self) -> None: entrance.connect(self.region_name_to_data[resource_region]) else: entrance.connect(self.region_name_to_data[resource_region.replace('*', '')]) - generate_special_rules_for(entrance, region_row, resource_region, self.player, self.options) + generate_special_rules_for(entrance, region_row, resource_region, self.player, self.options, self) self.roll_locations() @@ -195,7 +195,16 @@ def roll_locations(self): generation_is_fake = hasattr(self.multiworld, "generation_is_fake") # UT specific override locations_required = 0 for item_row in item_rows: + # If it's a filler item, set it aside for later + if item_row.progression == ItemClassification.filler: + continue + + # If it starts with "Care Pack", only add it if Care Packs are enabled + if item_row.name.startswith("Care Pack"): + if not self.options.enable_carepacks: + continue locations_required += item_row.amount + if self.options.enable_duds: locations_required += self.options.dud_count locations_added = 1 # At this point we've already added the starting area, so we start at 1 instead of 0 @@ -232,6 +241,7 @@ def roll_locations(self): max_amount_for_task_type = getattr(self.options, f"max_{task_type}_tasks") tasks_for_this_type = [task for task in self.locations_by_category[task_type] if self.task_within_skill_levels(task.skills)] + max_amount_for_task_type = min(max_amount_for_task_type, len(tasks_for_this_type)) if not self.options.progressive_tasks: rnd.shuffle(tasks_for_this_type) else: @@ -286,16 +296,36 @@ def add_location(self, location): self.create_and_add_location(index) def create_items(self) -> None: + filler_items = [] for item_row in item_rows: if item_row.name != self.starting_area_item: + # If it's a filler item, set it aside for later + if item_row.progression == ItemClassification.filler: + filler_items.append(item_row) + continue + + # If it starts with "Care Pack", only add it if Care Packs are enabled + if item_row.name.startswith("Care Pack"): + if not self.options.enable_carepacks: + continue + for c in range(item_row.amount): item = self.create_item(item_row.name) self.multiworld.itempool.append(item) + if self.options.enable_duds: + self.random.shuffle(filler_items) + filler_items = filler_items[0:self.options.dud_count] + for item_row in filler_items: + item = self.create_item(item_row.name) + self.multiworld.itempool.append(item) def get_filler_item_name(self) -> str: - return self.random.choice( - [ItemNames.Progressive_Armor, ItemNames.Progressive_Weapons, ItemNames.Progressive_Magic, - ItemNames.Progressive_Tools, ItemNames.Progressive_Range_Armor, ItemNames.Progressive_Range_Weapon]) + if self.options.enable_duds: + return self.random.choice([item for item in item_rows if item.progression == ItemClassification.filler]) + else: + return self.random.choice([ItemNames.Progressive_Weapons, ItemNames.Progressive_Magic, + ItemNames.Progressive_Range_Weapon, ItemNames.Progressive_Armor, + ItemNames.Progressive_Range_Armor, ItemNames.Progressive_Tools]) def create_and_add_location(self, row_index) -> None: location_row = location_rows[row_index] From bcd7d62d0bd6f1c72a2727cf15ba931ca5c9bad4 Mon Sep 17 00:00:00 2001 From: kbranch Date: Wed, 7 May 2025 14:53:58 -0400 Subject: [PATCH 028/183] LADX: Improve Fake Tracker Items (#4897) --- LinksAwakeningClient.py | 20 ++++++++++++++------ worlds/ladx/ItemTracker.py | 3 +-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/LinksAwakeningClient.py b/LinksAwakeningClient.py index 16896540d664..14aaa415f1da 100644 --- a/LinksAwakeningClient.py +++ b/LinksAwakeningClient.py @@ -33,7 +33,7 @@ from worlds.ladx.ItemTracker import ItemTracker from worlds.ladx.LADXR.checkMetadata import checkMetadataTable from worlds.ladx.Locations import get_locations_to_id, meta_to_name -from worlds.ladx.Tracker import LocationTracker, MagpieBridge +from worlds.ladx.Tracker import LocationTracker, MagpieBridge, Check class GameboyException(Exception): @@ -626,6 +626,11 @@ def on_package(self, cmd: str, args: dict): "password": self.password, }) + # We can process linked items on already-checked checks now that we have slot_data + if self.client.tracker: + checked_checks = set(self.client.tracker.all_checks) - set(self.client.tracker.remaining_checks) + self.add_linked_items(checked_checks) + # TODO - use watcher_event if cmd == "ReceivedItems": for index, item in enumerate(args["items"], start=args["index"]): @@ -641,6 +646,13 @@ async def sync(self): sync_msg = [{'cmd': 'Sync'}] await self.send_msgs(sync_msg) + def add_linked_items(self, checks: typing.List[Check]): + for check in checks: + if check.value and check.linkedItem: + linkedItem = check.linkedItem + if 'condition' not in linkedItem or (self.slot_data and linkedItem['condition'](self.slot_data)): + self.client.item_tracker.setExtraItem(check.linkedItem['item'], check.linkedItem['qty']) + item_id_lookup = get_locations_to_id() async def run_game_loop(self): @@ -649,11 +661,7 @@ def on_item_get(ladxr_checks): checkMetadataTable[check.id])] for check in ladxr_checks] self.new_checks(checks, [check.id for check in ladxr_checks]) - for check in ladxr_checks: - if check.value and check.linkedItem: - linkedItem = check.linkedItem - if 'condition' not in linkedItem or linkedItem['condition'](self.slot_data): - self.client.item_tracker.setExtraItem(check.linkedItem['item'], check.linkedItem['qty']) + self.add_linked_items(ladxr_checks) async def victory(): await self.send_victory() diff --git a/worlds/ladx/ItemTracker.py b/worlds/ladx/ItemTracker.py index b288bba84339..981fd42d2aaa 100644 --- a/worlds/ladx/ItemTracker.py +++ b/worlds/ladx/ItemTracker.py @@ -151,8 +151,7 @@ class ItemTracker: def __init__(self, gameboy) -> None: self.gameboy = gameboy self.loadItems() - pass - extraItems = {} + self.extraItems = {} async def readRamByte(self, byte): return (await self.gameboy.read_memory_cache([byte]))[byte] From b0f42466f0003ab02b408dda6189f94455f6f675 Mon Sep 17 00:00:00 2001 From: digiholic Date: Thu, 8 May 2025 11:31:00 -0600 Subject: [PATCH 029/183] MMBN3: Adds Beach Access to Help With Rehab Job Bonus Reward Check (#4963) --- worlds/mmbn3/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/worlds/mmbn3/__init__.py b/worlds/mmbn3/__init__.py index 08165a7df6e2..507ddbc21f7e 100644 --- a/worlds/mmbn3/__init__.py +++ b/worlds/mmbn3/__init__.py @@ -278,6 +278,9 @@ def can_unlock(state): return state.can_reach_region(RegionName.SciLab_Overworld self.multiworld.get_location(LocationName.Help_with_rehab, self.player).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) + self.multiworld.get_location(LocationName.Help_with_rehab_bonus, self.player).access_rule = \ + lambda state: \ + state.can_reach_region(RegionName.Beach_Overworld, self.player) self.multiworld.get_location(LocationName.Old_Master, self.player).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ From 9a8abeac2821d38920e177831b5fb49cb63a3e76 Mon Sep 17 00:00:00 2001 From: palex00 <32203971+palex00@users.noreply.github.com> Date: Fri, 9 May 2025 16:27:43 +0200 Subject: [PATCH 030/183] Add blurb about patch files to the host page (#4974) --- WebHostLib/templates/hostGame.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/WebHostLib/templates/hostGame.html b/WebHostLib/templates/hostGame.html index d7d0a9633129..38406351537b 100644 --- a/WebHostLib/templates/hostGame.html +++ b/WebHostLib/templates/hostGame.html @@ -17,7 +17,9 @@

Host Game

This page allows you to host a game which was not generated by the website. For example, if you have generated a game on your own computer, you may upload the zip file created by the generator to host the game here. This will also provide a tracker, and the ability for your players to download - their patch files. + their patch files if the game is core-verified. For Custom Games, you can find the patch files in + the output .zip file you are uploading here. You need to manually distribute those patch files to + your players.

In addition to the zip file created by the generator, you may upload a multidata file here as well.

From cbfcaeba8be2a2b740148f786f0d2b302bdc6f25 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sat, 10 May 2025 00:05:18 +0200 Subject: [PATCH 031/183] Subnautica: use less multiworld API (#4977) --- worlds/subnautica/rules.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/worlds/subnautica/rules.py b/worlds/subnautica/rules.py index ea9ec6a8058f..8f90af9b1385 100644 --- a/worlds/subnautica/rules.py +++ b/worlds/subnautica/rules.py @@ -254,8 +254,8 @@ def can_access_location(state: "CollectionState", player: int, loc: LocationDict return get_max_depth(state, player) >= depth -def set_location_rule(world, player: int, loc: LocationDict): - set_rule(world.get_location(loc["name"], player), lambda state: can_access_location(state, player, loc)) +def set_location_rule(world: "SubnauticaWorld", player: int, loc: LocationDict): + set_rule(world.get_location(loc["name"]), lambda state: can_access_location(state, player, loc)) def can_scan_creature(state: "CollectionState", player: int, creature: str) -> bool: @@ -264,8 +264,8 @@ def can_scan_creature(state: "CollectionState", player: int, creature: str) -> b return get_max_depth(state, player) >= all_creatures[creature] -def set_creature_rule(world, player: int, creature_name: str) -> "Location": - location = world.get_location(creature_name + suffix, player) +def set_creature_rule(world: "SubnauticaWorld", player: int, creature_name: str) -> "Location": + location = world.get_location(creature_name + suffix) set_rule(location, lambda state: can_scan_creature(state, player, creature_name)) return location @@ -290,16 +290,15 @@ def get_aggression_rule(option: AggressiveScanLogic, creature_name: str) -> \ def set_rules(subnautica_world: "SubnauticaWorld"): player = subnautica_world.player - multiworld = subnautica_world.multiworld for loc in location_table.values(): - set_location_rule(multiworld, player, loc) + set_location_rule(subnautica_world, player, loc) if subnautica_world.creatures_to_scan: - option = multiworld.worlds[player].options.creature_scan_logic + option = subnautica_world.options.creature_scan_logic for creature_name in subnautica_world.creatures_to_scan: - location = set_creature_rule(multiworld, player, creature_name) + location = set_creature_rule(subnautica_world, player, creature_name) if creature_name in containment: # there is no other way, hard-required containment add_rule(location, lambda state: has_containment(state, player)) elif creature_name in aggressive: @@ -309,7 +308,7 @@ def set_rules(subnautica_world: "SubnauticaWorld"): lambda state, loc_rule=get_aggression_rule(option, creature_name): loc_rule(state, player)) # Victory locations - set_rule(multiworld.get_location("Neptune Launch", player), + set_rule(subnautica_world.get_location("Neptune Launch"), lambda state: get_max_depth(state, player) >= 1444 and has_mobile_vehicle_bay(state, player) and @@ -322,14 +321,14 @@ def set_rules(subnautica_world: "SubnauticaWorld"): state.has("Ion Battery", player) and has_cyclops_shield(state, player)) - set_rule(multiworld.get_location("Disable Quarantine", player), + set_rule(subnautica_world.get_location("Disable Quarantine"), lambda state: get_max_depth(state, player) >= 1444) - set_rule(multiworld.get_location("Full Infection", player), + set_rule(subnautica_world.get_location("Full Infection"), lambda state: get_max_depth(state, player) >= 900) - room = multiworld.get_location("Aurora Drive Room - Upgrade Console", player) - set_rule(multiworld.get_location("Repair Aurora Drive", player), + room = subnautica_world.get_location("Aurora Drive Room - Upgrade Console") + set_rule(subnautica_world.get_location("Repair Aurora Drive"), lambda state: room.can_reach(state)) - multiworld.completion_condition[player] = lambda state: state.has("Victory", player) + subnautica_world.multiworld.completion_condition[player] = lambda state: state.has("Victory", player) From 4e61f1f23c14c20d244766c3c33c8a302d600f29 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Sat, 10 May 2025 04:11:39 +0200 Subject: [PATCH 032/183] Core: Institute limit of 10000 items on StartInventory (#4972) * Institute limit on StartInventory * Update Options.py * Update Options.py Co-authored-by: Scipio Wright * Update Options.py --------- Co-authored-by: Scipio Wright --- Options.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Options.py b/Options.py index bea3804d1ee5..41c2a77d3a4b 100644 --- a/Options.py +++ b/Options.py @@ -1353,6 +1353,7 @@ class StartInventory(ItemDict): verify_item_name = True display_name = "Start Inventory" rich_text_doc = True + max = 10000 class StartInventoryPool(StartInventory): From 5f24da7e181def3ac51930c931bca164dbc1910b Mon Sep 17 00:00:00 2001 From: Katelyn Gigante Date: Sat, 10 May 2025 23:20:43 +1000 Subject: [PATCH 033/183] Core: Use the location of Utils.py rather than __main__ to determine the AP Folder (#4009) --- Utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Utils.py b/Utils.py index a3a529d754d6..f930335b2483 100644 --- a/Utils.py +++ b/Utils.py @@ -139,8 +139,11 @@ def local_path(*path: str) -> str: local_path.cached_path = os.path.dirname(os.path.abspath(sys.argv[0])) else: import __main__ - if hasattr(__main__, "__file__") and os.path.isfile(__main__.__file__): + if globals().get("__file__") and os.path.isfile(__file__): # we are running in a normal Python environment + local_path.cached_path = os.path.dirname(os.path.abspath(__file__)) + elif hasattr(__main__, "__file__") and os.path.isfile(__main__.__file__): + # we are running in a normal Python environment, but AP was imported weirdly local_path.cached_path = os.path.dirname(os.path.abspath(__main__.__file__)) else: # pray From 8f71dac417a901f2175ee5ee65e2a9bbf8789596 Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Sat, 10 May 2025 17:57:24 -0400 Subject: [PATCH 034/183] Stardew valley: Add Trap Distribution setting (#4601) Co-authored-by: Jouramie <16137441+Jouramie@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/stardew_valley/__init__.py | 8 +- worlds/stardew_valley/items/__init__.py | 1 + .../{items.py => items/item_creation.py} | 200 ++++-------------- worlds/stardew_valley/items/item_data.py | 143 +++++++++++++ worlds/stardew_valley/options/__init__.py | 4 +- .../stardew_valley/options/option_groups.py | 3 +- worlds/stardew_valley/options/options.py | 61 +++++- worlds/stardew_valley/options/presets.py | 16 +- worlds/stardew_valley/test/TestGeneration.py | 20 +- worlds/stardew_valley/test/TestItemLink.py | 8 +- worlds/stardew_valley/test/TestOptions.py | 8 +- worlds/stardew_valley/test/TestTraps.py | 122 +++++++++++ worlds/stardew_valley/test/__init__.py | 27 ++- .../test/options/TestPresets.py | 8 +- worlds/stardew_valley/test/options/presets.py | 6 +- 15 files changed, 426 insertions(+), 209 deletions(-) create mode 100644 worlds/stardew_valley/items/__init__.py rename worlds/stardew_valley/{items.py => items/item_creation.py} (86%) create mode 100644 worlds/stardew_valley/items/item_data.py create mode 100644 worlds/stardew_valley/test/TestTraps.py diff --git a/worlds/stardew_valley/__init__.py b/worlds/stardew_valley/__init__.py index f48c9bc1a462..9a05c04d5107 100644 --- a/worlds/stardew_valley/__init__.py +++ b/worlds/stardew_valley/__init__.py @@ -10,11 +10,13 @@ from .bundles.bundles import get_all_bundles from .content import StardewContent, create_content from .early_items import setup_early_items -from .items import item_table, create_items, ItemData, Group, items_by_group, generate_filler_choice_pool +from .items import item_table, ItemData, Group, items_by_group +from .items.item_creation import create_items, get_all_filler_items, remove_limited_amount_packs, \ + generate_filler_choice_pool from .locations import location_table, create_locations, LocationData, locations_by_tag from .logic.logic import StardewLogic -from .options import StardewValleyOptions, SeasonRandomization, Goal, BundleRandomization, EnabledFillerBuffs, NumberOfMovementBuffs, \ - BuildingProgression, EntranceRandomization, FarmType +from .options import StardewValleyOptions, SeasonRandomization, Goal, BundleRandomization, EnabledFillerBuffs, \ + NumberOfMovementBuffs, BuildingProgression, EntranceRandomization, FarmType from .options.forced_options import force_change_options_if_incompatible from .options.option_groups import sv_option_groups from .options.presets import sv_options_presets diff --git a/worlds/stardew_valley/items/__init__.py b/worlds/stardew_valley/items/__init__.py new file mode 100644 index 000000000000..ddf5e69f68be --- /dev/null +++ b/worlds/stardew_valley/items/__init__.py @@ -0,0 +1 @@ +from .item_data import item_table, ItemData, Group, items_by_group, load_item_csv diff --git a/worlds/stardew_valley/items.py b/worlds/stardew_valley/items/item_creation.py similarity index 86% rename from worlds/stardew_valley/items.py rename to worlds/stardew_valley/items/item_creation.py index a0f901a20937..6928ca8b66cb 100644 --- a/worlds/stardew_valley/items.py +++ b/worlds/stardew_valley/items/item_creation.py @@ -1,165 +1,26 @@ -import csv -import enum import logging -from dataclasses import dataclass, field -from functools import reduce -from pathlib import Path from random import Random -from typing import Dict, List, Protocol, Union, Set, Optional +from typing import List, Set from BaseClasses import Item, ItemClassification -from . import data -from .content.feature import friendsanity -from .content.game_content import StardewContent -from .data.game_item import ItemTag -from .logic.logic_event import all_events -from .mods.mod_data import ModNames -from .options import StardewValleyOptions, TrapItems, FestivalLocations, ExcludeGingerIsland, SpecialOrderLocations, SeasonRandomization, Museumsanity, \ +from .item_data import StardewItemFactory, items_by_group, Group, item_table, ItemData +from ..content.feature import friendsanity +from ..content.game_content import StardewContent +from ..data.game_item import ItemTag +from ..mods.mod_data import ModNames +from ..options import StardewValleyOptions, FestivalLocations, ExcludeGingerIsland, SpecialOrderLocations, SeasonRandomization, Museumsanity, \ ElevatorProgression, BackpackProgression, ArcadeMachineLocations, Monstersanity, Goal, \ - Chefsanity, Craftsanity, BundleRandomization, EntranceRandomization, Shipsanity, Walnutsanity, EnabledFillerBuffs -from .strings.ap_names.ap_option_names import BuffOptionName, WalnutsanityOptionName -from .strings.ap_names.ap_weapon_names import APWeapon -from .strings.ap_names.buff_names import Buff -from .strings.ap_names.community_upgrade_names import CommunityUpgrade -from .strings.ap_names.mods.mod_items import SVEQuestItem -from .strings.currency_names import Currency -from .strings.tool_names import Tool -from .strings.wallet_item_names import Wallet - -ITEM_CODE_OFFSET = 717000 + Chefsanity, Craftsanity, BundleRandomization, EntranceRandomization, Shipsanity, Walnutsanity, EnabledFillerBuffs, TrapDifficulty +from ..strings.ap_names.ap_option_names import BuffOptionName, WalnutsanityOptionName +from ..strings.ap_names.ap_weapon_names import APWeapon +from ..strings.ap_names.buff_names import Buff +from ..strings.ap_names.community_upgrade_names import CommunityUpgrade +from ..strings.ap_names.mods.mod_items import SVEQuestItem +from ..strings.currency_names import Currency +from ..strings.tool_names import Tool +from ..strings.wallet_item_names import Wallet logger = logging.getLogger(__name__) -world_folder = Path(__file__).parent - - -class Group(enum.Enum): - RESOURCE_PACK = enum.auto() - FRIENDSHIP_PACK = enum.auto() - COMMUNITY_REWARD = enum.auto() - TRASH = enum.auto() - FOOTWEAR = enum.auto() - HATS = enum.auto() - RING = enum.auto() - WEAPON = enum.auto() - WEAPON_GENERIC = enum.auto() - WEAPON_SWORD = enum.auto() - WEAPON_CLUB = enum.auto() - WEAPON_DAGGER = enum.auto() - WEAPON_SLINGSHOT = enum.auto() - PROGRESSIVE_TOOLS = enum.auto() - SKILL_LEVEL_UP = enum.auto() - SKILL_MASTERY = enum.auto() - BUILDING = enum.auto() - WIZARD_BUILDING = enum.auto() - ARCADE_MACHINE_BUFFS = enum.auto() - BASE_RESOURCE = enum.auto() - WARP_TOTEM = enum.auto() - GEODE = enum.auto() - ORE = enum.auto() - FERTILIZER = enum.auto() - SEED = enum.auto() - CROPSANITY = enum.auto() - FISHING_RESOURCE = enum.auto() - SEASON = enum.auto() - TRAVELING_MERCHANT_DAY = enum.auto() - MUSEUM = enum.auto() - FRIENDSANITY = enum.auto() - FESTIVAL = enum.auto() - RARECROW = enum.auto() - TRAP = enum.auto() - BONUS = enum.auto() - MAXIMUM_ONE = enum.auto() - AT_LEAST_TWO = enum.auto() - DEPRECATED = enum.auto() - RESOURCE_PACK_USEFUL = enum.auto() - SPECIAL_ORDER_BOARD = enum.auto() - SPECIAL_ORDER_QI = enum.auto() - BABY = enum.auto() - GINGER_ISLAND = enum.auto() - WALNUT_PURCHASE = enum.auto() - TV_CHANNEL = enum.auto() - QI_CRAFTING_RECIPE = enum.auto() - CHEFSANITY = enum.auto() - CHEFSANITY_STARTER = enum.auto() - CHEFSANITY_QOS = enum.auto() - CHEFSANITY_PURCHASE = enum.auto() - CHEFSANITY_FRIENDSHIP = enum.auto() - CHEFSANITY_SKILL = enum.auto() - CRAFTSANITY = enum.auto() - BOOK_POWER = enum.auto() - LOST_BOOK = enum.auto() - PLAYER_BUFF = enum.auto() - # Mods - MAGIC_SPELL = enum.auto() - MOD_WARP = enum.auto() - - -@dataclass(frozen=True) -class ItemData: - code_without_offset: Optional[int] - name: str - classification: ItemClassification - mod_name: Optional[str] = None - groups: Set[Group] = field(default_factory=frozenset) - - def __post_init__(self): - if not isinstance(self.groups, frozenset): - super().__setattr__("groups", frozenset(self.groups)) - - @property - def code(self): - return ITEM_CODE_OFFSET + self.code_without_offset if self.code_without_offset is not None else None - - def has_any_group(self, *group: Group) -> bool: - groups = set(group) - return bool(groups.intersection(self.groups)) - - -class StardewItemFactory(Protocol): - def __call__(self, name: Union[str, ItemData], override_classification: ItemClassification = None) -> Item: - raise NotImplementedError - - -def load_item_csv(): - from importlib.resources import files - - items = [] - with files(data).joinpath("items.csv").open() as file: - item_reader = csv.DictReader(file) - for item in item_reader: - id = int(item["id"]) if item["id"] else None - classification = reduce((lambda a, b: a | b), {ItemClassification[str_classification] for str_classification in item["classification"].split(",")}) - groups = {Group[group] for group in item["groups"].split(",") if group} - mod_name = str(item["mod_name"]) if item["mod_name"] else None - items.append(ItemData(id, item["name"], classification, mod_name, groups)) - return items - - -events = [ - ItemData(None, e, ItemClassification.progression) - for e in sorted(all_events) -] - -all_items: List[ItemData] = load_item_csv() + events -item_table: Dict[str, ItemData] = {} -items_by_group: Dict[Group, List[ItemData]] = {} - - -def initialize_groups(): - for item in all_items: - for group in item.groups: - item_group = items_by_group.get(group, list()) - item_group.append(item) - items_by_group[group] = item_group - - -def initialize_item_table(): - item_table.update({item.name: item for item in all_items}) - - -initialize_item_table() -initialize_groups() - def get_too_many_items_error_message(locations_count: int, items_count: int) -> str: return f"There should be at least as many locations [{locations_count}] as there are mandatory items [{items_count}]" @@ -712,13 +573,15 @@ def weapons_count(options: StardewValleyOptions): def fill_with_resource_packs_and_traps(item_factory: StardewItemFactory, options: StardewValleyOptions, random: Random, items_already_added: List[Item], available_item_slots: int) -> List[Item]: - include_traps = options.trap_items != TrapItems.option_no_traps + include_traps = options.trap_difficulty != TrapDifficulty.option_no_traps items_already_added_names = [item.name for item in items_already_added] useful_resource_packs = [pack for pack in items_by_group[Group.RESOURCE_PACK_USEFUL] if pack.name not in items_already_added_names] trap_items = [trap for trap in items_by_group[Group.TRAP] if trap.name not in items_already_added_names and - (trap.mod_name is None or trap.mod_name in options.mods)] + Group.DEPRECATED not in trap.groups and + (trap.mod_name is None or trap.mod_name in options.mods) and + options.trap_distribution[trap.name] > 0] player_buffs = get_allowed_player_buffs(options.enabled_filler_buffs) priority_filler_items = [] @@ -750,11 +613,13 @@ def fill_with_resource_packs_and_traps(item_factory: StardewItemFactory, options (filler_pack.name not in [priority_item.name for priority_item in priority_filler_items] and filler_pack.name not in items_already_added_names)] + filler_weights = get_filler_weights(options, all_filler_packs) + while available_item_slots > 0: - resource_pack = random.choice(all_filler_packs) + resource_pack = random.choices(all_filler_packs, weights=filler_weights, k=1)[0] exactly_2 = Group.AT_LEAST_TWO in resource_pack.groups while exactly_2 and available_item_slots == 1: - resource_pack = random.choice(all_filler_packs) + resource_pack = random.choices(all_filler_packs, weights=filler_weights, k=1)[0] exactly_2 = Group.AT_LEAST_TWO in resource_pack.groups classification = ItemClassification.useful if resource_pack.classification == ItemClassification.progression else resource_pack.classification items.append(item_factory(resource_pack, classification)) @@ -763,11 +628,24 @@ def fill_with_resource_packs_and_traps(item_factory: StardewItemFactory, options items.append(item_factory(resource_pack, classification)) available_item_slots -= 1 if exactly_2 or Group.MAXIMUM_ONE in resource_pack.groups: - all_filler_packs.remove(resource_pack) + index = all_filler_packs.index(resource_pack) + all_filler_packs.pop(index) + filler_weights.pop(index) return items +def get_filler_weights(options: StardewValleyOptions, all_filler_packs: List[ItemData]): + weights = [] + for filler in all_filler_packs: + if filler.name in options.trap_distribution: + num = options.trap_distribution[filler.name] + else: + num = options.trap_distribution.default_weight + weights.append(num) + return weights + + def filter_deprecated_items(items: List[ItemData]) -> List[ItemData]: return [item for item in items if Group.DEPRECATED not in item.groups] @@ -792,7 +670,7 @@ def remove_excluded_items_island_mods(items, exclude_ginger_island: bool, mods: def generate_filler_choice_pool(options: StardewValleyOptions) -> list[str]: - include_traps = options.trap_items != TrapItems.option_no_traps + include_traps = options.trap_difficulty != TrapDifficulty.option_no_traps exclude_island = options.exclude_ginger_island == ExcludeGingerIsland.option_true available_filler = get_all_filler_items(include_traps, exclude_island) diff --git a/worlds/stardew_valley/items/item_data.py b/worlds/stardew_valley/items/item_data.py new file mode 100644 index 000000000000..e7c3779e275d --- /dev/null +++ b/worlds/stardew_valley/items/item_data.py @@ -0,0 +1,143 @@ +import csv +import enum +from dataclasses import dataclass, field +from functools import reduce +from pathlib import Path +from typing import Dict, List, Protocol, Union, Set, Optional + +from BaseClasses import Item, ItemClassification +from .. import data +from ..logic.logic_event import all_events + +ITEM_CODE_OFFSET = 717000 + +world_folder = Path(__file__).parent + + +class Group(enum.Enum): + RESOURCE_PACK = enum.auto() + FRIENDSHIP_PACK = enum.auto() + COMMUNITY_REWARD = enum.auto() + TRASH = enum.auto() + FOOTWEAR = enum.auto() + HATS = enum.auto() + RING = enum.auto() + WEAPON = enum.auto() + WEAPON_GENERIC = enum.auto() + WEAPON_SWORD = enum.auto() + WEAPON_CLUB = enum.auto() + WEAPON_DAGGER = enum.auto() + WEAPON_SLINGSHOT = enum.auto() + PROGRESSIVE_TOOLS = enum.auto() + SKILL_LEVEL_UP = enum.auto() + SKILL_MASTERY = enum.auto() + BUILDING = enum.auto() + WIZARD_BUILDING = enum.auto() + ARCADE_MACHINE_BUFFS = enum.auto() + BASE_RESOURCE = enum.auto() + WARP_TOTEM = enum.auto() + GEODE = enum.auto() + ORE = enum.auto() + FERTILIZER = enum.auto() + SEED = enum.auto() + CROPSANITY = enum.auto() + FISHING_RESOURCE = enum.auto() + SEASON = enum.auto() + TRAVELING_MERCHANT_DAY = enum.auto() + MUSEUM = enum.auto() + FRIENDSANITY = enum.auto() + FESTIVAL = enum.auto() + RARECROW = enum.auto() + TRAP = enum.auto() + BONUS = enum.auto() + MAXIMUM_ONE = enum.auto() + AT_LEAST_TWO = enum.auto() + DEPRECATED = enum.auto() + RESOURCE_PACK_USEFUL = enum.auto() + SPECIAL_ORDER_BOARD = enum.auto() + SPECIAL_ORDER_QI = enum.auto() + BABY = enum.auto() + GINGER_ISLAND = enum.auto() + WALNUT_PURCHASE = enum.auto() + TV_CHANNEL = enum.auto() + QI_CRAFTING_RECIPE = enum.auto() + CHEFSANITY = enum.auto() + CHEFSANITY_STARTER = enum.auto() + CHEFSANITY_QOS = enum.auto() + CHEFSANITY_PURCHASE = enum.auto() + CHEFSANITY_FRIENDSHIP = enum.auto() + CHEFSANITY_SKILL = enum.auto() + CRAFTSANITY = enum.auto() + BOOK_POWER = enum.auto() + LOST_BOOK = enum.auto() + PLAYER_BUFF = enum.auto() + # Mods + MAGIC_SPELL = enum.auto() + MOD_WARP = enum.auto() + + +@dataclass(frozen=True) +class ItemData: + code_without_offset: Optional[int] + name: str + classification: ItemClassification + mod_name: Optional[str] = None + groups: Set[Group] = field(default_factory=frozenset) + + def __post_init__(self): + if not isinstance(self.groups, frozenset): + super().__setattr__("groups", frozenset(self.groups)) + + @property + def code(self): + return ITEM_CODE_OFFSET + self.code_without_offset if self.code_without_offset is not None else None + + def has_any_group(self, *group: Group) -> bool: + groups = set(group) + return bool(groups.intersection(self.groups)) + + +class StardewItemFactory(Protocol): + def __call__(self, name: Union[str, ItemData], override_classification: ItemClassification = None) -> Item: + raise NotImplementedError + + +def load_item_csv(): + from importlib.resources import files + + items = [] + with files(data).joinpath("items.csv").open() as file: + item_reader = csv.DictReader(file) + for item in item_reader: + id = int(item["id"]) if item["id"] else None + classification = reduce((lambda a, b: a | b), {ItemClassification[str_classification] for str_classification in item["classification"].split(",")}) + groups = {Group[group] for group in item["groups"].split(",") if group} + mod_name = str(item["mod_name"]) if item["mod_name"] else None + items.append(ItemData(id, item["name"], classification, mod_name, groups)) + return items + + +events = [ + ItemData(None, e, ItemClassification.progression) + for e in sorted(all_events) +] + +all_items: List[ItemData] = load_item_csv() + events +item_table: Dict[str, ItemData] = {} +items_by_group: Dict[Group, List[ItemData]] = {} + + +def initialize_groups(): + for item in all_items: + for group in item.groups: + item_group = items_by_group.get(group, list()) + item_group.append(item) + items_by_group[group] = item_group + + +def initialize_item_table(): + item_table.update({item.name: item for item in all_items}) + + +initialize_item_table() +initialize_groups() diff --git a/worlds/stardew_valley/options/__init__.py b/worlds/stardew_valley/options/__init__.py index 713d3e9537a6..12c0d7c647ff 100644 --- a/worlds/stardew_valley/options/__init__.py +++ b/worlds/stardew_valley/options/__init__.py @@ -1,6 +1,6 @@ from .options import StardewValleyOption, Goal, FarmType, StartingMoney, ProfitMargin, BundleRandomization, BundlePrice, EntranceRandomization, \ SeasonRandomization, Cropsanity, BackpackProgression, ToolProgression, ElevatorProgression, SkillProgression, BuildingProgression, FestivalLocations, \ ArcadeMachineLocations, SpecialOrderLocations, QuestLocations, Fishsanity, Museumsanity, Monstersanity, Shipsanity, Cooksanity, Chefsanity, Craftsanity, \ - Friendsanity, FriendsanityHeartSize, Booksanity, Walnutsanity, NumberOfMovementBuffs, EnabledFillerBuffs, ExcludeGingerIsland, TrapItems, \ + Friendsanity, FriendsanityHeartSize, Booksanity, Walnutsanity, NumberOfMovementBuffs, EnabledFillerBuffs, ExcludeGingerIsland, TrapDifficulty, \ MultipleDaySleepEnabled, MultipleDaySleepCost, ExperienceMultiplier, FriendshipMultiplier, DebrisMultiplier, QuickStart, Gifting, Mods, BundlePlando, \ - StardewValleyOptions, enabled_mods, disabled_mods, all_mods + StardewValleyOptions, enabled_mods, disabled_mods, all_mods, TrapDistribution, TrapItems, StardewValleyOptions diff --git a/worlds/stardew_valley/options/option_groups.py b/worlds/stardew_valley/options/option_groups.py index bcb9bee77ff4..4ae1fc3c4d7e 100644 --- a/worlds/stardew_valley/options/option_groups.py +++ b/worlds/stardew_valley/options/option_groups.py @@ -52,7 +52,8 @@ options.DebrisMultiplier, options.NumberOfMovementBuffs, options.EnabledFillerBuffs, - options.TrapItems, + options.TrapDifficulty, + options.TrapDistribution, options.MultipleDaySleepEnabled, options.MultipleDaySleepCost, options.QuickStart, diff --git a/worlds/stardew_valley/options/options.py b/worlds/stardew_valley/options/options.py index 84026387c57f..f81cdaac813b 100644 --- a/worlds/stardew_valley/options/options.py +++ b/worlds/stardew_valley/options/options.py @@ -3,7 +3,8 @@ from dataclasses import dataclass from typing import Protocol, ClassVar -from Options import Range, NamedRange, Toggle, Choice, OptionSet, PerGameCommonOptions, DeathLink, OptionList, Visibility +from Options import Range, NamedRange, Toggle, Choice, OptionSet, PerGameCommonOptions, DeathLink, OptionList, Visibility, Removed, OptionCounter +from ..items import items_by_group, Group from ..mods.mod_data import ModNames from ..strings.ap_names.ap_option_names import BuffOptionName, WalnutsanityOptionName from ..strings.bundle_names import all_cc_bundle_names @@ -658,13 +659,29 @@ class ExcludeGingerIsland(Toggle): default = 0 -class TrapItems(Choice): - """When rolling filler items, including resource packs, the game can also roll trap items. - Trap items are negative items that cause problems or annoyances for the player - This setting is for choosing if traps will be in the item pool, and if so, how punishing they will be. +class TrapItems(Removed): + """Deprecated setting, replaced by TrapDifficulty """ internal_name = "trap_items" display_name = "Trap Items" + default = "" + visibility = Visibility.none + + def __init__(self, value: str): + if value: + raise Exception("Option trap_items was replaced by trap_difficulty, please update your options file") + super().__init__(value) + + +class TrapDifficulty(Choice): + """When rolling filler items, including resource packs, the game can also roll trap items. + Trap items are negative items that cause problems or annoyances for the player. + This setting is for choosing how punishing traps will be. + Lower difficulties will be on the funny annoyance side, higher difficulty will be on the extreme problems side. + Only play Nightmare at your own risk. + """ + internal_name = "trap_difficulty" + display_name = "Trap Difficulty" default = 2 option_no_traps = 0 option_easy = 1 @@ -674,6 +691,34 @@ class TrapItems(Choice): option_nightmare = 5 +trap_default_weight = 100 + + +class TrapDistribution(OptionCounter): + """ + Specify the weighted chance of rolling individual traps when rolling random filler items. + The average filler item should be considered to be "100", as in 100%. + So a trap on "200" will be twice as likely to roll as any filler item. A trap on "10" will be 10% as likely. + You can use weight "0" to disable this trap entirely. The maximum weight is 1000, for x10 chance + """ + internal_name = "trap_distribution" + display_name = "Trap Distribution" + default_weight = trap_default_weight + visibility = Visibility.all ^ Visibility.simple_ui + min = 0 + max = 1000 + valid_keys = frozenset({ + trap_data.name + for trap_data in items_by_group[Group.TRAP] + if Group.DEPRECATED not in trap_data.groups + }) + default = { + trap_data.name: trap_default_weight + for trap_data in items_by_group[Group.TRAP] + if Group.DEPRECATED not in trap_data.groups + } + + class MultipleDaySleepEnabled(Toggle): """Enable the ability to sleep automatically for multiple days straight?""" internal_name = "multiple_day_sleep_enabled" @@ -851,10 +896,14 @@ class StardewValleyOptions(PerGameCommonOptions): debris_multiplier: DebrisMultiplier movement_buff_number: NumberOfMovementBuffs enabled_filler_buffs: EnabledFillerBuffs - trap_items: TrapItems + trap_difficulty: TrapDifficulty + trap_distribution: TrapDistribution multiple_day_sleep_enabled: MultipleDaySleepEnabled multiple_day_sleep_cost: MultipleDaySleepCost gifting: Gifting mods: Mods bundle_plando: BundlePlando death_link: DeathLink + + # removed: + trap_items: TrapItems \ No newline at end of file diff --git a/worlds/stardew_valley/options/presets.py b/worlds/stardew_valley/options/presets.py index 3dbb5ab3f554..a711fe08ff86 100644 --- a/worlds/stardew_valley/options/presets.py +++ b/worlds/stardew_valley/options/presets.py @@ -38,7 +38,7 @@ options.Booksanity.internal_name: "random", options.NumberOfMovementBuffs.internal_name: "random", options.ExcludeGingerIsland.internal_name: "random", - options.TrapItems.internal_name: "random", + options.TrapDifficulty.internal_name: "random", options.MultipleDaySleepEnabled.internal_name: "random", options.MultipleDaySleepCost.internal_name: "random", options.ExperienceMultiplier.internal_name: "random", @@ -82,7 +82,7 @@ options.NumberOfMovementBuffs.internal_name: 8, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_easy, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_easy, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "free", options.ExperienceMultiplier.internal_name: "triple", @@ -126,7 +126,7 @@ options.NumberOfMovementBuffs.internal_name: 6, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_medium, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "free", options.ExperienceMultiplier.internal_name: "double", @@ -170,7 +170,7 @@ options.NumberOfMovementBuffs.internal_name: 4, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.default, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_hard, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_hard, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "cheap", options.ExperienceMultiplier.internal_name: "vanilla", @@ -214,7 +214,7 @@ options.NumberOfMovementBuffs.internal_name: 2, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_none, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_hell, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_hell, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "expensive", options.ExperienceMultiplier.internal_name: "half", @@ -258,7 +258,7 @@ options.NumberOfMovementBuffs.internal_name: 10, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_easy, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_easy, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "free", options.ExperienceMultiplier.internal_name: "quadruple", @@ -302,7 +302,7 @@ options.NumberOfMovementBuffs.internal_name: options.NumberOfMovementBuffs.default, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.default, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.default, + options.TrapDifficulty.internal_name: options.TrapDifficulty.default, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.default, options.MultipleDaySleepCost.internal_name: options.MultipleDaySleepCost.default, options.ExperienceMultiplier.internal_name: options.ExperienceMultiplier.default, @@ -346,7 +346,7 @@ options.NumberOfMovementBuffs.internal_name: 12, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.default, + options.TrapDifficulty.internal_name: options.TrapDifficulty.default, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.default, options.MultipleDaySleepCost.internal_name: options.MultipleDaySleepCost.default, options.ExperienceMultiplier.internal_name: options.ExperienceMultiplier.default, diff --git a/worlds/stardew_valley/test/TestGeneration.py b/worlds/stardew_valley/test/TestGeneration.py index 77092c78fcae..6d0846f8c1d5 100644 --- a/worlds/stardew_valley/test/TestGeneration.py +++ b/worlds/stardew_valley/test/TestGeneration.py @@ -2,8 +2,8 @@ from BaseClasses import ItemClassification, Item from . import SVTestBase -from .. import items, location_table, options -from ..items import Group, ItemData +from .. import location_table, options, items +from ..items import Group, ItemData, item_data from ..locations import LocationTags from ..options import Friendsanity, SpecialOrderLocations, Shipsanity, Chefsanity, SeasonRandomization, Craftsanity, ExcludeGingerIsland, SkillProgression, \ Booksanity, Walnutsanity @@ -15,10 +15,10 @@ def get_all_permanent_progression_items() -> List[ItemData]: """ return [ item - for item in items.all_items + for item in item_data.all_items if ItemClassification.progression in item.classification if item.mod_name is None - if item.name not in {event.name for event in items.events} + if item.name not in {event.name for event in item_data.events} if item.name not in {deprecated.name for deprecated in items.items_by_group[Group.DEPRECATED]} if item.name not in {season.name for season in items.items_by_group[Group.SEASON]} if item.name not in {weapon.name for weapon in items.items_by_group[Group.WEAPON]} @@ -54,19 +54,19 @@ def test_creates_as_many_item_as_non_event_locations(self): def test_does_not_create_deprecated_items(self): all_created_items = set(self.get_all_created_items()) - for deprecated_item in items.items_by_group[items.Group.DEPRECATED]: + for deprecated_item in item_data.items_by_group[item_data.Group.DEPRECATED]: with self.subTest(f"{deprecated_item.name}"): self.assertNotIn(deprecated_item.name, all_created_items) def test_does_not_create_more_than_one_maximum_one_items(self): all_created_items = self.get_all_created_items() - for maximum_one_item in items.items_by_group[items.Group.MAXIMUM_ONE]: + for maximum_one_item in item_data.items_by_group[item_data.Group.MAXIMUM_ONE]: with self.subTest(f"{maximum_one_item.name}"): self.assertLessEqual(all_created_items.count(maximum_one_item.name), 1) def test_does_not_create_or_create_two_of_exactly_two_items(self): all_created_items = self.get_all_created_items() - for exactly_two_item in items.items_by_group[items.Group.AT_LEAST_TWO]: + for exactly_two_item in item_data.items_by_group[item_data.Group.AT_LEAST_TWO]: with self.subTest(f"{exactly_two_item.name}"): count = all_created_items.count(exactly_two_item.name) self.assertTrue(count == 0 or count == 2) @@ -102,19 +102,19 @@ def test_creates_as_many_item_as_non_event_locations(self): def test_does_not_create_deprecated_items(self): all_created_items = self.get_all_created_items() - for deprecated_item in items.items_by_group[items.Group.DEPRECATED]: + for deprecated_item in item_data.items_by_group[item_data.Group.DEPRECATED]: with self.subTest(f"Deprecated item: {deprecated_item.name}"): self.assertNotIn(deprecated_item.name, all_created_items) def test_does_not_create_more_than_one_maximum_one_items(self): all_created_items = self.get_all_created_items() - for maximum_one_item in items.items_by_group[items.Group.MAXIMUM_ONE]: + for maximum_one_item in item_data.items_by_group[item_data.Group.MAXIMUM_ONE]: with self.subTest(f"{maximum_one_item.name}"): self.assertLessEqual(all_created_items.count(maximum_one_item.name), 1) def test_does_not_create_exactly_two_items(self): all_created_items = self.get_all_created_items() - for exactly_two_item in items.items_by_group[items.Group.AT_LEAST_TWO]: + for exactly_two_item in item_data.items_by_group[item_data.Group.AT_LEAST_TWO]: with self.subTest(f"{exactly_two_item.name}"): count = all_created_items.count(exactly_two_item.name) self.assertTrue(count == 0 or count == 2) diff --git a/worlds/stardew_valley/test/TestItemLink.py b/worlds/stardew_valley/test/TestItemLink.py index 3a0d976511f7..f1c8346142ad 100644 --- a/worlds/stardew_valley/test/TestItemLink.py +++ b/worlds/stardew_valley/test/TestItemLink.py @@ -6,7 +6,7 @@ class TestItemLinksEverythingIncluded(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_medium} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium} def test_filler_of_all_types_generated(self): max_number_filler = 114 @@ -33,7 +33,7 @@ def test_filler_of_all_types_generated(self): class TestItemLinksNoIsland(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_medium} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium} def test_filler_has_no_island_but_has_traps(self): max_number_filler = 109 @@ -57,7 +57,7 @@ def test_filler_has_no_island_but_has_traps(self): class TestItemLinksNoTraps(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_no_traps} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps} def test_filler_has_no_traps_but_has_island(self): max_number_filler = 99 @@ -81,7 +81,7 @@ def test_filler_has_no_traps_but_has_island(self): class TestItemLinksNoTrapsAndIsland(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_no_traps} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps} def test_filler_generated_without_island_or_traps(self): max_number_filler = 94 diff --git a/worlds/stardew_valley/test/TestOptions.py b/worlds/stardew_valley/test/TestOptions.py index 4894ea55f241..11b0a0141533 100644 --- a/worlds/stardew_valley/test/TestOptions.py +++ b/worlds/stardew_valley/test/TestOptions.py @@ -9,7 +9,7 @@ from .options.presets import allsanity_no_mods_6_x_x, allsanity_mods_6_x_x from .. import items_by_group, Group from ..locations import locations_by_tag, LocationTags, location_table -from ..options import ExcludeGingerIsland, ToolProgression, Goal, SeasonRandomization, TrapItems, SpecialOrderLocations, ArcadeMachineLocations +from ..options import ExcludeGingerIsland, ToolProgression, Goal, SeasonRandomization, TrapDifficulty, SpecialOrderLocations, ArcadeMachineLocations from ..strings.goal_names import Goal as GoalName from ..strings.season_names import Season from ..strings.special_order_names import SpecialOrder @@ -126,7 +126,7 @@ def test_given_choice_when_generate_exclude_ginger_island_then_ginger_island_is_ class TestTraps(SVTestCase): def test_given_no_traps_when_generate_then_no_trap_in_pool(self): world_options = allsanity_no_mods_6_x_x().copy() - world_options[TrapItems.internal_name] = TrapItems.option_no_traps + world_options[TrapDifficulty.internal_name] = TrapDifficulty.option_no_traps with solo_multiworld(world_options) as (multi_world, _): trap_items = [item_data.name for item_data in items_by_group[Group.TRAP]] multiworld_items = [item.name for item in multi_world.get_items()] @@ -136,12 +136,12 @@ def test_given_no_traps_when_generate_then_no_trap_in_pool(self): self.assertNotIn(item, multiworld_items) def test_given_traps_when_generate_then_all_traps_in_pool(self): - trap_option = TrapItems + trap_option = TrapDifficulty for value in trap_option.options: if value == "no_traps": continue world_options = allsanity_mods_6_x_x() - world_options.update({TrapItems.internal_name: trap_option.options[value]}) + world_options.update({TrapDifficulty.internal_name: trap_option.options[value]}) with solo_multiworld(world_options) as (multi_world, _): trap_items = [item_data.name for item_data in items_by_group[Group.TRAP] if Group.DEPRECATED not in item_data.groups and item_data.mod_name is None] diff --git a/worlds/stardew_valley/test/TestTraps.py b/worlds/stardew_valley/test/TestTraps.py new file mode 100644 index 000000000000..9df07a6d74c8 --- /dev/null +++ b/worlds/stardew_valley/test/TestTraps.py @@ -0,0 +1,122 @@ +import unittest + +from . import SVTestBase +from .assertion import WorldAssertMixin +from .. import options, items_by_group, Group +from ..options import TrapDistribution + +default_distribution = {trap.name: TrapDistribution.default_weight for trap in items_by_group[Group.TRAP] if Group.DEPRECATED not in trap.groups} +threshold_difference = 2 +threshold_ballpark = 3 + + +class TestTrapDifficultyCanRemoveAllTraps(WorldAssertMixin, SVTestBase): + options = { + options.QuestLocations.internal_name: 56, + options.Fishsanity.internal_name: options.Fishsanity.option_all, + options.Museumsanity.internal_name: options.Museumsanity.option_all, + options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, + options.Shipsanity.internal_name: options.Shipsanity.option_everything, + options.Cooksanity.internal_name: options.Cooksanity.option_all, + options.Craftsanity.internal_name: options.Craftsanity.option_all, + options.Mods.internal_name: frozenset(options.Mods.valid_keys), + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps, + } + + def test_no_traps_in_item_pool(self): + items = self.multiworld.get_items() + item_names = set(item.name for item in items) + for trap in items_by_group[Group.TRAP]: + if Group.DEPRECATED in trap.groups: + continue + self.assertNotIn(trap.name, item_names) + + +class TestDefaultDistributionHasAllTraps(WorldAssertMixin, SVTestBase): + options = { + options.QuestLocations.internal_name: 56, + options.Fishsanity.internal_name: options.Fishsanity.option_all, + options.Museumsanity.internal_name: options.Museumsanity.option_all, + options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, + options.Shipsanity.internal_name: options.Shipsanity.option_everything, + options.Cooksanity.internal_name: options.Cooksanity.option_all, + options.Craftsanity.internal_name: options.Craftsanity.option_all, + options.Mods.internal_name: frozenset(options.Mods.valid_keys), + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium, + } + + def test_all_traps_in_item_pool(self): + items = self.multiworld.get_items() + item_names = set(item.name for item in items) + for trap in items_by_group[Group.TRAP]: + if Group.DEPRECATED in trap.groups: + continue + self.assertIn(trap.name, item_names) + + +class TestDistributionIsRespectedAllTraps(WorldAssertMixin, SVTestBase): + options = { + options.QuestLocations.internal_name: 56, + options.Fishsanity.internal_name: options.Fishsanity.option_all, + options.Museumsanity.internal_name: options.Museumsanity.option_all, + options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, + options.Shipsanity.internal_name: options.Shipsanity.option_everything, + options.Cooksanity.internal_name: options.Cooksanity.option_all, + options.Craftsanity.internal_name: options.Craftsanity.option_all, + options.Mods.internal_name: frozenset(options.Mods.valid_keys), + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium, + options.TrapDistribution.internal_name: default_distribution | {"Nudge Trap": 100, "Bark Trap": 1, "Meow Trap": 1000, "Shuffle Trap": 0} + } + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + if cls.skip_long_tests: + raise unittest.SkipTest("Unstable tests disabled to not annoy anyone else when it rarely fails") + + def test_about_as_many_nudges_as_other_filler(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_nudge = len([item for item in item_names if item == "Nudge Trap"]) + other_fillers = ["Resource Pack: 4 Frozen Geode", "Resource Pack: 50 Wood", "Resource Pack: 5 Warp Totem: Farm", + "Resource Pack: 500 Money", "Resource Pack: 75 Copper Ore", "Resource Pack: 30 Speed-Gro"] + at_least_one_in_ballpark = False + for filler_item in other_fillers: + num_filler = len([item for item in item_names if item == filler_item]) + diff_num = abs(num_filler - num_nudge) + is_in_ballpark = diff_num <= threshold_ballpark + at_least_one_in_ballpark = at_least_one_in_ballpark or is_in_ballpark + self.assertTrue(at_least_one_in_ballpark) + + def test_fewer_barks_than_nudges_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_nudge = len([item for item in item_names if item == "Nudge Trap"]) + num_bark = len([item for item in item_names if item == "Bark Trap"]) + self.assertLess(num_bark, num_nudge - threshold_difference) + + def test_more_meows_than_nudges_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_nudge = len([item for item in item_names if item == "Nudge Trap"]) + num_meow = len([item for item in item_names if item == "Meow Trap"]) + self.assertGreater(num_meow, num_nudge + threshold_difference) + + def test_no_shuffles_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_shuffle = len([item for item in item_names if item == "Shuffle Trap"]) + self.assertEqual(0, num_shuffle) + + def test_omitted_item_same_as_nudge_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_time_flies = len([item for item in item_names if item == "Time Flies Trap"]) + num_debris = len([item for item in item_names if item == "Debris Trap"]) + num_bark = len([item for item in item_names if item == "Bark Trap"]) + num_meow = len([item for item in item_names if item == "Meow Trap"]) + self.assertLess(num_bark, num_time_flies - threshold_difference) + self.assertLess(num_bark, num_debris - threshold_difference) + self.assertGreater(num_meow, num_time_flies + threshold_difference) + self.assertGreater(num_meow, num_debris + threshold_difference) + diff --git a/worlds/stardew_valley/test/__init__.py b/worlds/stardew_valley/test/__init__.py index 702f590221f5..6a8011a37d5f 100644 --- a/worlds/stardew_valley/test/__init__.py +++ b/worlds/stardew_valley/test/__init__.py @@ -14,7 +14,7 @@ from .options.utils import fill_namespace_with_default, parse_class_option_keys, fill_dataclass_with_default from .. import StardewValleyWorld, StardewItem, StardewRule from ..logic.time_logic import MONTH_COEFFICIENT -from ..options import StardewValleyOption +from ..options import StardewValleyOption, options logger = logging.getLogger(__name__) @@ -221,9 +221,9 @@ def setup_solo_multiworld(test_options: Optional[Dict[Union[str, StardewValleyOp # Yes I reuse the worlds generated between tests, its speeds the execution by a couple seconds # If the simple dict caching ends up taking too much memory, we could replace it with some kind of lru cache. - should_cache = "start_inventory" not in test_options + should_cache = should_cache_world(test_options) if should_cache: - frozen_options = frozenset(test_options.items()).union({("seed", seed)}) + frozen_options = make_hashable(test_options, seed) cached_multi_world = search_world_cache(_cache, frozen_options) if cached_multi_world: print(f"Using cached solo multi world [Seed = {cached_multi_world.seed}] [Cache size = {len(_cache)}]") @@ -252,6 +252,27 @@ def setup_solo_multiworld(test_options: Optional[Dict[Union[str, StardewValleyOp return multiworld +def should_cache_world(test_options): + if "start_inventory" in test_options: + return False + + trap_distribution_key = "trap_distribution" + if trap_distribution_key not in test_options: + return True + + trap_distribution = test_options[trap_distribution_key] + for key in trap_distribution: + if trap_distribution[key] != options.TrapDistribution.default_weight: + return False + + return True + + + +def make_hashable(test_options, seed): + return frozenset(test_options.items()).union({("seed", seed)}) + + def search_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset) -> Optional[MultiWorld]: try: return cache[frozen_options] diff --git a/worlds/stardew_valley/test/options/TestPresets.py b/worlds/stardew_valley/test/options/TestPresets.py index 9384acd77060..5d9e89531c87 100644 --- a/worlds/stardew_valley/test/options/TestPresets.py +++ b/worlds/stardew_valley/test/options/TestPresets.py @@ -1,16 +1,16 @@ -from Options import PerGameCommonOptions, OptionSet +from Options import PerGameCommonOptions, OptionSet, OptionDict from .. import SVTestCase -from ...options import StardewValleyOptions +from ...options import StardewValleyOptions, TrapItems from ...options.presets import sv_options_presets class TestPresets(SVTestCase): def test_all_presets_explicitly_set_all_options(self): all_option_names = {option_key for option_key in StardewValleyOptions.type_hints} - omitted_option_names = {option_key for option_key in PerGameCommonOptions.type_hints} + omitted_option_names = {option_key for option_key in PerGameCommonOptions.type_hints} | {TrapItems.internal_name} mandatory_option_names = {option_key for option_key in all_option_names if option_key not in omitted_option_names and - not issubclass(StardewValleyOptions.type_hints[option_key], OptionSet)} + not issubclass(StardewValleyOptions.type_hints[option_key], OptionSet | OptionDict)} for preset_name in sv_options_presets: with self.subTest(f"{preset_name}"): diff --git a/worlds/stardew_valley/test/options/presets.py b/worlds/stardew_valley/test/options/presets.py index 57f8b0beb960..86b21c693e69 100644 --- a/worlds/stardew_valley/test/options/presets.py +++ b/worlds/stardew_valley/test/options/presets.py @@ -70,7 +70,7 @@ def allsanity_no_mods_6_x_x(): options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, options.ToolProgression.internal_name: options.ToolProgression.option_progressive, - options.TrapItems.internal_name: options.TrapItems.option_nightmare, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_nightmare, options.Walnutsanity.internal_name: options.Walnutsanity.preset_all } @@ -119,7 +119,7 @@ def get_minsanity_options(): options.SkillProgression.internal_name: options.SkillProgression.option_vanilla, options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_vanilla, options.ToolProgression.internal_name: options.ToolProgression.option_vanilla, - options.TrapItems.internal_name: options.TrapItems.option_no_traps, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps, options.Walnutsanity.internal_name: options.Walnutsanity.preset_none } @@ -156,7 +156,7 @@ def minimal_locations_maximal_items(): options.SkillProgression.internal_name: options.SkillProgression.option_vanilla, options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_vanilla, options.ToolProgression.internal_name: options.ToolProgression.option_vanilla, - options.TrapItems.internal_name: options.TrapItems.option_nightmare, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_nightmare, options.Walnutsanity.internal_name: options.Walnutsanity.preset_none } return min_max_options From 68ed20861364c4f734a21aa9aac91667b18d7818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Benedek=20Zolt=C3=A1n?= <99742992+TVV1GK@users.noreply.github.com> Date: Sun, 11 May 2025 00:31:05 +0200 Subject: [PATCH 035/183] DS3: "US: Homeward Bone - foot, drop overlook" (#4875) --- worlds/dark_souls_3/Locations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index c5cdbba85d82..7b30997581dc 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -706,7 +706,7 @@ def __init__( DS3LocationData("US: Whip - back alley, behind wooden wall", "Whip", hidden=True), DS3LocationData("US: Great Scythe - building by white tree, balcony", "Great Scythe"), DS3LocationData("US: Homeward Bone - foot, drop overlook", "Homeward Bone", - static='02,0:53100540::'), + static='02,0:53100950::'), DS3LocationData("US: Large Soul of a Deserted Corpse - around corner by Cliff Underside", "Large Soul of a Deserted Corpse", hidden=True), # Hidden corner DS3LocationData("US: Ember - behind burning tree", "Ember"), From a166dc77bcb2c3828d028bf8a69a1253ed894934 Mon Sep 17 00:00:00 2001 From: Silvris <58583688+Silvris@users.noreply.github.com> Date: Sat, 10 May 2025 17:49:49 -0500 Subject: [PATCH 036/183] Core: Plando Items "Rewrite" (#3046) --- BaseClasses.py | 37 +- Fill.py | 363 +++++++++--------- Generate.py | 14 +- Main.py | 14 +- Options.py | 140 ++++++- test/general/test_implemented.py | 16 + test/general/test_state.py | 2 +- worlds/alttp/EntranceRandomizer.py | 5 +- worlds/alttp/__init__.py | 37 +- worlds/blasphemous/__init__.py | 1 - worlds/hylics2/__init__.py | 4 + worlds/kh2/__init__.py | 4 + worlds/ladx/test/testShop.py | 12 +- worlds/oot/__init__.py | 4 +- worlds/pokemon_rb/__init__.py | 11 +- worlds/pokemon_rb/pokemon.py | 2 +- worlds/sc2/Locations.py | 7 +- worlds/shivers/__init__.py | 23 +- .../test/stability/TestUniversalTracker.py | 3 - worlds/witness/player_items.py | 25 +- 20 files changed, 455 insertions(+), 269 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index e59e96e17d1c..f480cbbda3de 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -9,8 +9,9 @@ from collections import Counter, deque from collections.abc import Collection, MutableSequence from enum import IntEnum, IntFlag -from typing import (AbstractSet, Any, Callable, ClassVar, Dict, Iterable, Iterator, List, Mapping, NamedTuple, +from typing import (AbstractSet, Any, Callable, ClassVar, Dict, Iterable, Iterator, List, Literal, Mapping, NamedTuple, Optional, Protocol, Set, Tuple, Union, TYPE_CHECKING) +import dataclasses from typing_extensions import NotRequired, TypedDict @@ -54,12 +55,21 @@ class HasNameAndPlayer(Protocol): player: int +@dataclasses.dataclass +class PlandoItemBlock: + player: int + from_pool: bool + force: bool | Literal["silent"] + worlds: set[int] = dataclasses.field(default_factory=set) + items: list[str] = dataclasses.field(default_factory=list) + locations: list[str] = dataclasses.field(default_factory=list) + resolved_locations: list[Location] = dataclasses.field(default_factory=list) + count: dict[str, int] = dataclasses.field(default_factory=dict) + + class MultiWorld(): debug_types = False player_name: Dict[int, str] - plando_texts: List[Dict[str, str]] - plando_items: List[List[Dict[str, Any]]] - plando_connections: List worlds: Dict[int, "AutoWorld.World"] groups: Dict[int, Group] regions: RegionManager @@ -83,6 +93,8 @@ class MultiWorld(): start_location_hints: Dict[int, Options.StartLocationHints] item_links: Dict[int, Options.ItemLinks] + plando_item_blocks: Dict[int, List[PlandoItemBlock]] + game: Dict[int, str] random: random.Random @@ -160,13 +172,12 @@ def __init__(self, players: int): self.local_early_items = {player: {} for player in self.player_ids} self.indirect_connections = {} self.start_inventory_from_pool: Dict[int, Options.StartInventoryPool] = {} + self.plando_item_blocks = {} for player in range(1, players + 1): def set_player_attr(attr: str, val) -> None: self.__dict__.setdefault(attr, {})[player] = val - set_player_attr('plando_items', []) - set_player_attr('plando_texts', {}) - set_player_attr('plando_connections', []) + set_player_attr('plando_item_blocks', []) set_player_attr('game', "Archipelago") set_player_attr('completion_condition', lambda state: True) self.worlds = {} @@ -427,7 +438,8 @@ def get_entrance(self, entrance_name: str, player: int) -> Entrance: def get_location(self, location_name: str, player: int) -> Location: return self.regions.location_cache[player][location_name] - def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False) -> CollectionState: + def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False, + collect_pre_fill_items: bool = True) -> CollectionState: cached = getattr(self, "_all_state", None) if use_cache and cached: return cached.copy() @@ -436,10 +448,11 @@ def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False) for item in self.itempool: self.worlds[item.player].collect(ret, item) - for player in self.player_ids: - subworld = self.worlds[player] - for item in subworld.get_pre_fill_items(): - subworld.collect(ret, item) + if collect_pre_fill_items: + for player in self.player_ids: + subworld = self.worlds[player] + for item in subworld.get_pre_fill_items(): + subworld.collect(ret, item) ret.sweep_for_advancements() if use_cache: diff --git a/Fill.py b/Fill.py index cce7aec2091e..ff59aa22cb47 100644 --- a/Fill.py +++ b/Fill.py @@ -4,7 +4,7 @@ import typing from collections import Counter, deque -from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld +from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld, PlandoItemBlock from Options import Accessibility from worlds.AutoWorld import call_all @@ -100,7 +100,7 @@ def fill_restrictive(multiworld: MultiWorld, base_state: CollectionState, locati # if minimal accessibility, only check whether location is reachable if game not beatable if multiworld.worlds[item_to_place.player].options.accessibility == Accessibility.option_minimal: perform_access_check = not multiworld.has_beaten_game(maximum_exploration_state, - item_to_place.player) \ + item_to_place.player) \ if single_player_placement else not has_beaten_game else: perform_access_check = True @@ -242,7 +242,7 @@ def remaining_fill(multiworld: MultiWorld, unplaced_items: typing.List[Item] = [] placements: typing.List[Location] = [] swapped_items: typing.Counter[typing.Tuple[int, str]] = Counter() - total = min(len(itempool), len(locations)) + total = min(len(itempool), len(locations)) placed = 0 # Optimisation: Decide whether to do full location.can_fill check (respect excluded), or only check the item rule @@ -343,8 +343,10 @@ def fast_fill(multiworld: MultiWorld, def accessibility_corrections(multiworld: MultiWorld, state: CollectionState, locations, pool=[]): maximum_exploration_state = sweep_from_pool(state, pool) - minimal_players = {player for player in multiworld.player_ids if multiworld.worlds[player].options.accessibility == "minimal"} - unreachable_locations = [location for location in multiworld.get_locations() if location.player in minimal_players and + minimal_players = {player for player in multiworld.player_ids if + multiworld.worlds[player].options.accessibility == "minimal"} + unreachable_locations = [location for location in multiworld.get_locations() if + location.player in minimal_players and not location.can_reach(maximum_exploration_state)] for location in unreachable_locations: if (location.item is not None and location.item.advancement and location.address is not None and not @@ -365,7 +367,7 @@ def inaccessible_location_rules(multiworld: MultiWorld, state: CollectionState, unreachable_locations = [location for location in locations if not location.can_reach(maximum_exploration_state)] if unreachable_locations: def forbid_important_item_rule(item: Item): - return not ((item.classification & 0b0011) and multiworld.worlds[item.player].options.accessibility != 'minimal') + return not ((item.classification & 0b0011) and multiworld.worlds[item.player].options.accessibility != "minimal") for location in unreachable_locations: add_item_rule(location, forbid_important_item_rule) @@ -677,9 +679,9 @@ def balance_multiworld_progression(multiworld: MultiWorld) -> None: if multiworld.worlds[player].options.progression_balancing > 0 } if not balanceable_players: - logging.info('Skipping multiworld progression balancing.') + logging.info("Skipping multiworld progression balancing.") else: - logging.info(f'Balancing multiworld progression for {len(balanceable_players)} Players.') + logging.info(f"Balancing multiworld progression for {len(balanceable_players)} Players.") logging.debug(balanceable_players) state: CollectionState = CollectionState(multiworld) checked_locations: typing.Set[Location] = set() @@ -777,7 +779,7 @@ def item_percentage(player: int, num: int) -> float: if player in threshold_percentages): break elif not balancing_sphere: - raise RuntimeError('Not all required items reachable. Something went terribly wrong here.') + raise RuntimeError("Not all required items reachable. Something went terribly wrong here.") # Gather a set of locations which we can swap items into unlocked_locations: typing.Dict[int, typing.Set[Location]] = collections.defaultdict(set) for l in unchecked_locations: @@ -793,8 +795,8 @@ def item_percentage(player: int, num: int) -> float: testing = items_to_test.pop() reducing_state = state.copy() for location in itertools.chain(( - l for l in items_to_replace - if l.item.player == player + l for l in items_to_replace + if l.item.player == player ), items_to_test): reducing_state.collect(location.item, True, location) @@ -867,52 +869,30 @@ def swap_location_item(location_1: Location, location_2: Location, check_locked: location_2.item.location = location_2 -def distribute_planned(multiworld: MultiWorld) -> None: - def warn(warning: str, force: typing.Union[bool, str]) -> None: - if force in [True, 'fail', 'failure', 'none', False, 'warn', 'warning']: - logging.warning(f'{warning}') +def parse_planned_blocks(multiworld: MultiWorld) -> dict[int, list[PlandoItemBlock]]: + def warn(warning: str, force: bool | str) -> None: + if isinstance(force, bool): + logging.warning(f"{warning}") else: - logging.debug(f'{warning}') + logging.debug(f"{warning}") - def failed(warning: str, force: typing.Union[bool, str]) -> None: - if force in [True, 'fail', 'failure']: + def failed(warning: str, force: bool | str) -> None: + if force is True: raise Exception(warning) else: warn(warning, force) - swept_state = multiworld.state.copy() - swept_state.sweep_for_advancements() - reachable = frozenset(multiworld.get_reachable_locations(swept_state)) - early_locations: typing.Dict[int, typing.List[str]] = collections.defaultdict(list) - non_early_locations: typing.Dict[int, typing.List[str]] = collections.defaultdict(list) - for loc in multiworld.get_unfilled_locations(): - if loc in reachable: - early_locations[loc.player].append(loc.name) - else: # not reachable with swept state - non_early_locations[loc.player].append(loc.name) - world_name_lookup = multiworld.world_name_lookup - block_value = typing.Union[typing.List[str], typing.Dict[str, typing.Any], str] - plando_blocks: typing.List[typing.Dict[str, typing.Any]] = [] - player_ids = set(multiworld.player_ids) + plando_blocks: dict[int, list[PlandoItemBlock]] = dict() + player_ids: set[int] = set(multiworld.player_ids) for player in player_ids: - for block in multiworld.plando_items[player]: - block['player'] = player - if 'force' not in block: - block['force'] = 'silent' - if 'from_pool' not in block: - block['from_pool'] = True - elif not isinstance(block['from_pool'], bool): - from_pool_type = type(block['from_pool']) - raise Exception(f'Plando "from_pool" has to be boolean, not {from_pool_type} for player {player}.') - if 'world' not in block: - target_world = False - else: - target_world = block['world'] - + plando_blocks[player] = [] + for block in multiworld.worlds[player].options.plando_items: + new_block: PlandoItemBlock = PlandoItemBlock(player, block.from_pool, block.force) + target_world = block.world if target_world is False or multiworld.players == 1: # target own world - worlds: typing.Set[int] = {player} + worlds: set[int] = {player} elif target_world is True: # target any worlds besides own worlds = set(multiworld.player_ids) - {player} elif target_world is None: # target all worlds @@ -922,172 +902,197 @@ def failed(warning: str, force: typing.Union[bool, str]) -> None: for listed_world in target_world: if listed_world not in world_name_lookup: failed(f"Cannot place item to {target_world}'s world as that world does not exist.", - block['force']) + block.force) continue worlds.add(world_name_lookup[listed_world]) elif type(target_world) == int: # target world by slot number if target_world not in range(1, multiworld.players + 1): failed( f"Cannot place item in world {target_world} as it is not in range of (1, {multiworld.players})", - block['force']) + block.force) continue worlds = {target_world} else: # target world by slot name if target_world not in world_name_lookup: failed(f"Cannot place item to {target_world}'s world as that world does not exist.", - block['force']) + block.force) continue worlds = {world_name_lookup[target_world]} - block['world'] = worlds - - items: block_value = [] - if "items" in block: - items = block["items"] - if 'count' not in block: - block['count'] = False - elif "item" in block: - items = block["item"] - if 'count' not in block: - block['count'] = 1 - else: - failed("You must specify at least one item to place items with plando.", block['force']) - continue + new_block.worlds = worlds + + items: list[str] | dict[str, typing.Any] = block.items if isinstance(items, dict): - item_list: typing.List[str] = [] + item_list: list[str] = [] for key, value in items.items(): if value is True: value = multiworld.itempool.count(multiworld.worlds[player].create_item(key)) item_list += [key] * value items = item_list - if isinstance(items, str): - items = [items] - block['items'] = items - - locations: block_value = [] - if 'location' in block: - locations = block['location'] # just allow 'location' to keep old yamls compatible - elif 'locations' in block: - locations = block['locations'] + new_block.items = items + + locations: list[str] = block.locations if isinstance(locations, str): locations = [locations] - if isinstance(locations, dict): - location_list = [] - for key, value in locations.items(): - location_list += [key] * value - locations = location_list + locations_from_groups: list[str] = [] + resolved_locations: list[Location] = [] + for target_player in worlds: + world_locations = multiworld.get_unfilled_locations(target_player) + for group in multiworld.worlds[target_player].location_name_groups: + if group in locations: + locations_from_groups.extend(multiworld.worlds[target_player].location_name_groups[group]) + resolved_locations.extend(location for location in world_locations + if location.name in [*locations, *locations_from_groups]) + new_block.locations = sorted(dict.fromkeys(locations)) + new_block.resolved_locations = sorted(set(resolved_locations)) + + count = block.count + if not count: + count = len(new_block.items) + if isinstance(count, int): + count = {"min": count, "max": count} + if "min" not in count: + count["min"] = 0 + if "max" not in count: + count["max"] = len(new_block.items) + + new_block.count = count + plando_blocks[player].append(new_block) + + return plando_blocks + + +def resolve_early_locations_for_planned(multiworld: MultiWorld): + def warn(warning: str, force: bool | str) -> None: + if isinstance(force, bool): + logging.warning(f"{warning}") + else: + logging.debug(f"{warning}") + + def failed(warning: str, force: bool | str) -> None: + if force is True: + raise Exception(warning) + else: + warn(warning, force) + swept_state = multiworld.state.copy() + swept_state.sweep_for_advancements() + reachable = frozenset(multiworld.get_reachable_locations(swept_state)) + early_locations: dict[int, list[Location]] = collections.defaultdict(list) + non_early_locations: dict[int, list[Location]] = collections.defaultdict(list) + for loc in multiworld.get_unfilled_locations(): + if loc in reachable: + early_locations[loc.player].append(loc) + else: # not reachable with swept state + non_early_locations[loc.player].append(loc) + + for player in multiworld.plando_item_blocks: + removed = [] + for block in multiworld.plando_item_blocks[player]: + locations = block.locations + resolved_locations = block.resolved_locations + worlds = block.worlds if "early_locations" in locations: - locations.remove("early_locations") for target_player in worlds: - locations += early_locations[target_player] + resolved_locations += early_locations[target_player] if "non_early_locations" in locations: - locations.remove("non_early_locations") for target_player in worlds: - locations += non_early_locations[target_player] - - block['locations'] = list(dict.fromkeys(locations)) - - if not block['count']: - block['count'] = (min(len(block['items']), len(block['locations'])) if - len(block['locations']) > 0 else len(block['items'])) - if isinstance(block['count'], int): - block['count'] = {'min': block['count'], 'max': block['count']} - if 'min' not in block['count']: - block['count']['min'] = 0 - if 'max' not in block['count']: - block['count']['max'] = (min(len(block['items']), len(block['locations'])) if - len(block['locations']) > 0 else len(block['items'])) - if block['count']['max'] > len(block['items']): - count = block['count'] - failed(f"Plando count {count} greater than items specified", block['force']) - block['count'] = len(block['items']) - if block['count']['max'] > len(block['locations']) > 0: - count = block['count'] - failed(f"Plando count {count} greater than locations specified", block['force']) - block['count'] = len(block['locations']) - block['count']['target'] = multiworld.random.randint(block['count']['min'], block['count']['max']) - - if block['count']['target'] > 0: - plando_blocks.append(block) + resolved_locations += non_early_locations[target_player] + + if block.count["max"] > len(block.items): + count = block.count["max"] + failed(f"Plando count {count} greater than items specified", block.force) + block.count["max"] = len(block.items) + if block.count["min"] > len(block.items): + block.count["min"] = len(block.items) + if block.count["max"] > len(block.resolved_locations) > 0: + count = block.count["max"] + failed(f"Plando count {count} greater than locations specified", block.force) + block.count["max"] = len(block.resolved_locations) + if block.count["min"] > len(block.resolved_locations): + block.count["min"] = len(block.resolved_locations) + block.count["target"] = multiworld.random.randint(block.count["min"], + block.count["max"]) + + if not block.count["target"]: + removed.append(block) + + for block in removed: + multiworld.plando_item_blocks[player].remove(block) + + +def distribute_planned_blocks(multiworld: MultiWorld, plando_blocks: list[PlandoItemBlock]): + def warn(warning: str, force: bool | str) -> None: + if isinstance(force, bool): + logging.warning(f"{warning}") + else: + logging.debug(f"{warning}") + + def failed(warning: str, force: bool | str) -> None: + if force is True: + raise Exception(warning) + else: + warn(warning, force) # shuffle, but then sort blocks by number of locations minus number of items, # so less-flexible blocks get priority multiworld.random.shuffle(plando_blocks) - plando_blocks.sort(key=lambda block: (len(block['locations']) - block['count']['target'] - if len(block['locations']) > 0 - else len(multiworld.get_unfilled_locations(player)) - block['count']['target'])) - + plando_blocks.sort(key=lambda block: (len(block.resolved_locations) - block.count["target"] + if len(block.resolved_locations) > 0 + else len(multiworld.get_unfilled_locations(block.player)) - + block.count["target"])) for placement in plando_blocks: - player = placement['player'] + player = placement.player try: - worlds = placement['world'] - locations = placement['locations'] - items = placement['items'] - maxcount = placement['count']['target'] - from_pool = placement['from_pool'] - - candidates = list(multiworld.get_unfilled_locations_for_players(locations, sorted(worlds))) - multiworld.random.shuffle(candidates) - multiworld.random.shuffle(items) - count = 0 - err: typing.List[str] = [] - successful_pairs: typing.List[typing.Tuple[int, Item, Location]] = [] - claimed_indices: typing.Set[typing.Optional[int]] = set() - for item_name in items: - index_to_delete: typing.Optional[int] = None - if from_pool: - try: - # If from_pool, try to find an existing item with this name & player in the itempool and use it - index_to_delete, item = next( - (i, item) for i, item in enumerate(multiworld.itempool) - if item.player == player and item.name == item_name and i not in claimed_indices - ) - except StopIteration: - warn( - f"Could not remove {item_name} from pool for {multiworld.player_name[player]} as it's already missing from it.", - placement['force']) - item = multiworld.worlds[player].create_item(item_name) - else: - item = multiworld.worlds[player].create_item(item_name) - - for location in reversed(candidates): - if (location.address is None) == (item.code is None): # either both None or both not None - if not location.item: - if location.item_rule(item): - if location.can_fill(multiworld.state, item, False): - successful_pairs.append((index_to_delete, item, location)) - claimed_indices.add(index_to_delete) - candidates.remove(location) - count = count + 1 - break - else: - err.append(f"Can't place item at {location} due to fill condition not met.") - else: - err.append(f"{item_name} not allowed at {location}.") - else: - err.append(f"Cannot place {item_name} into already filled location {location}.") + worlds = placement.worlds + locations = placement.resolved_locations + items = placement.items + maxcount = placement.count["target"] + from_pool = placement.from_pool + + item_candidates = [] + if from_pool: + instances = [item for item in multiworld.itempool if item.player == player and item.name in items] + for item in multiworld.random.sample(items, maxcount): + candidate = next((i for i in instances if i.name == item), None) + if candidate is None: + warn(f"Could not remove {item} from pool for {multiworld.player_name[player]} as " + f"it's already missing from it", placement.force) + candidate = multiworld.worlds[player].create_item(item) else: - err.append(f"Mismatch between {item_name} and {location}, only one is an event.") - - if count == maxcount: - break - if count < placement['count']['min']: - m = placement['count']['min'] - failed( - f"Plando block failed to place {m - count} of {m} item(s) for {multiworld.player_name[player]}, error(s): {' '.join(err)}", - placement['force']) - - # Sort indices in reverse so we can remove them one by one - successful_pairs = sorted(successful_pairs, key=lambda successful_pair: successful_pair[0] or 0, reverse=True) - - for (index, item, location) in successful_pairs: - multiworld.push_item(location, item, collect=False) - location.locked = True - logging.debug(f"Plando placed {item} at {location}") - if index is not None: # If this item is from_pool and was found in the pool, remove it. - multiworld.itempool.pop(index) - + multiworld.itempool.remove(candidate) + instances.remove(candidate) + item_candidates.append(candidate) + else: + item_candidates = [multiworld.worlds[player].create_item(item) + for item in multiworld.random.sample(items, maxcount)] + if any(item.code is None for item in item_candidates) \ + and not all(item.code is None for item in item_candidates): + failed(f"Plando block for player {player} ({multiworld.player_name[player]}) contains both " + f"event items and non-event items. " + f"Event items: {[item for item in item_candidates if item.code is None]}, " + f"Non-event items: {[item for item in item_candidates if item.code is not None]}", + placement.force) + continue + else: + is_real = item_candidates[0].code is not None + candidates = [candidate for candidate in locations if candidate.item is None + and bool(candidate.address) == is_real] + multiworld.random.shuffle(candidates) + allstate = multiworld.get_all_state(False) + mincount = placement.count["min"] + allowed_margin = len(item_candidates) - mincount + fill_restrictive(multiworld, allstate, candidates, item_candidates, lock=True, + allow_partial=True, name="Plando Main Fill") + + if len(item_candidates) > allowed_margin: + failed(f"Could not place {len(item_candidates)} " + f"of {mincount + allowed_margin} item(s) " + f"for {multiworld.player_name[player]}, " + f"remaining items: {item_candidates}", + placement.force) + if from_pool: + multiworld.itempool.extend([item for item in item_candidates if item.code is not None]) except Exception as e: raise Exception( f"Error running plando for player {player} ({multiworld.player_name[player]})") from e diff --git a/Generate.py b/Generate.py index 867a5b6c7a61..e72887c26c2c 100644 --- a/Generate.py +++ b/Generate.py @@ -334,12 +334,6 @@ def handle_name(name: str, player: int, name_counter: Counter): return new_name -def roll_percentage(percentage: Union[int, float]) -> bool: - """Roll a percentage chance. - percentage is expected to be in range [0, 100]""" - return random.random() < (float(percentage) / 100) - - def update_weights(weights: dict, new_weights: dict, update_type: str, name: str) -> dict: logging.debug(f'Applying {new_weights}') cleaned_weights = {} @@ -405,7 +399,7 @@ def roll_linked_options(weights: dict) -> dict: if "name" not in option_set: raise ValueError("One of your linked options does not have a name.") try: - if roll_percentage(option_set["percentage"]): + if Options.roll_percentage(option_set["percentage"]): logging.debug(f"Linked option {option_set['name']} triggered.") new_options = option_set["options"] for category_name, category_options in new_options.items(): @@ -438,7 +432,7 @@ def roll_triggers(weights: dict, triggers: list, valid_keys: set) -> dict: trigger_result = get_choice("option_result", option_set) result = get_choice(key, currently_targeted_weights) currently_targeted_weights[key] = result - if result == trigger_result and roll_percentage(get_choice("percentage", option_set, 100)): + if result == trigger_result and Options.roll_percentage(get_choice("percentage", option_set, 100)): for category_name, category_options in option_set["options"].items(): currently_targeted_weights = weights if category_name: @@ -542,10 +536,6 @@ def roll_settings(weights: dict, plando_options: PlandoOptions = PlandoOptions.b handle_option(ret, game_weights, option_key, option, plando_options) valid_keys.add(option_key) - # TODO remove plando_items after moving it to the options system - valid_keys.add("plando_items") - if PlandoOptions.items in plando_options: - ret.plando_items = copy.deepcopy(game_weights.get("plando_items", [])) if ret.game == "A Link to the Past": # TODO there are still more LTTP options not on the options system valid_keys |= {"sprite_pool", "sprite", "random_sprite_on_event"} diff --git a/Main.py b/Main.py index 5d9e1bc2110e..147fa382e249 100644 --- a/Main.py +++ b/Main.py @@ -11,8 +11,8 @@ import worlds from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld, Region -from Fill import FillError, balance_multiworld_progression, distribute_items_restrictive, distribute_planned, \ - flood_items +from Fill import FillError, balance_multiworld_progression, distribute_items_restrictive, flood_items, \ + parse_planned_blocks, distribute_planned_blocks, resolve_early_locations_for_planned from Options import StartInventoryPool from Utils import __version__, output_path, version_tuple, get_settings from settings import get_settings @@ -37,9 +37,6 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No logger = logging.getLogger() multiworld.set_seed(seed, args.race, str(args.outputname) if args.outputname else None) multiworld.plando_options = args.plando_options - multiworld.plando_items = args.plando_items.copy() - multiworld.plando_texts = args.plando_texts.copy() - multiworld.plando_connections = args.plando_connections.copy() multiworld.game = args.game.copy() multiworld.player_name = args.name.copy() multiworld.sprite = args.sprite.copy() @@ -135,6 +132,8 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No multiworld.worlds[1].options.non_local_items.value = set() multiworld.worlds[1].options.local_items.value = set() + multiworld.plando_item_blocks = parse_planned_blocks(multiworld) + AutoWorld.call_all(multiworld, "connect_entrances") AutoWorld.call_all(multiworld, "generate_basic") @@ -179,8 +178,9 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No multiworld._all_state = None logger.info("Running Item Plando.") - - distribute_planned(multiworld) + resolve_early_locations_for_planned(multiworld) + distribute_planned_blocks(multiworld, [x for player in multiworld.plando_item_blocks + for x in multiworld.plando_item_blocks[player]]) logger.info('Running Pre Main Fill.') diff --git a/Options.py b/Options.py index 41c2a77d3a4b..86e58ca64aba 100644 --- a/Options.py +++ b/Options.py @@ -24,6 +24,12 @@ import pathlib +def roll_percentage(percentage: int | float) -> bool: + """Roll a percentage chance. + percentage is expected to be in range [0, 100]""" + return random.random() < (float(percentage) / 100) + + class OptionError(ValueError): pass @@ -1019,7 +1025,7 @@ def from_any(cls, data: PlandoTextsFromAnyType) -> Self: if isinstance(data, typing.Iterable): for text in data: if isinstance(text, typing.Mapping): - if random.random() < float(text.get("percentage", 100)/100): + if roll_percentage(text.get("percentage", 100)): at = text.get("at", None) if at is not None: if isinstance(at, dict): @@ -1045,7 +1051,7 @@ def from_any(cls, data: PlandoTextsFromAnyType) -> Self: else: raise OptionError("\"at\" must be a valid string or weighted list of strings!") elif isinstance(text, PlandoText): - if random.random() < float(text.percentage/100): + if roll_percentage(text.percentage): texts.append(text) else: raise Exception(f"Cannot create plando text from non-dictionary type, got {type(text)}") @@ -1169,7 +1175,7 @@ def from_any(cls, data: PlandoConFromAnyType) -> Self: for connection in data: if isinstance(connection, typing.Mapping): percentage = connection.get("percentage", 100) - if random.random() < float(percentage / 100): + if roll_percentage(percentage): entrance = connection.get("entrance", None) if is_iterable_except_str(entrance): entrance = random.choice(sorted(entrance)) @@ -1187,7 +1193,7 @@ def from_any(cls, data: PlandoConFromAnyType) -> Self: percentage )) elif isinstance(connection, PlandoConnection): - if random.random() < float(connection.percentage / 100): + if roll_percentage(connection.percentage): value.append(connection) else: raise Exception(f"Cannot create connection from non-Dict type, got {type(connection)}.") @@ -1469,6 +1475,131 @@ def verify(self, world: typing.Type[World], player_name: str, plando_options: "P link["item_pool"] = list(pool) +@dataclass(frozen=True) +class PlandoItem: + items: list[str] | dict[str, typing.Any] + locations: list[str] + world: int | str | bool | None | typing.Iterable[str] | set[int] = False + from_pool: bool = True + force: bool | typing.Literal["silent"] = "silent" + count: int | bool | dict[str, int] = False + percentage: int = 100 + + +class PlandoItems(Option[typing.List[PlandoItem]]): + """Generic items plando.""" + default = () + supports_weighting = False + display_name = "Plando Items" + + def __init__(self, value: typing.Iterable[PlandoItem]) -> None: + self.value = list(deepcopy(value)) + super().__init__() + + @classmethod + def from_any(cls, data: typing.Any) -> Option[typing.List[PlandoItem]]: + if not isinstance(data, typing.Iterable): + raise OptionError(f"Cannot create plando items from non-Iterable type, got {type(data)}") + + value: typing.List[PlandoItem] = [] + for item in data: + if isinstance(item, typing.Mapping): + percentage = item.get("percentage", 100) + if not isinstance(percentage, int): + raise OptionError(f"Plando `percentage` has to be int, not {type(percentage)}.") + if not (0 <= percentage <= 100): + raise OptionError(f"Plando `percentage` has to be between 0 and 100 (inclusive) not {percentage}.") + if roll_percentage(percentage): + count = item.get("count", False) + items = item.get("items", []) + if not items: + items = item.get("item", None) # explicitly throw an error here if not present + if not items: + raise OptionError("You must specify at least one item to place items with plando.") + count = 1 + if isinstance(items, str): + items = [items] + elif not isinstance(items, (dict, list)): + raise OptionError(f"Plando 'items' has to be string, list, or " + f"dictionary, not {type(items)}") + locations = item.get("locations", []) + if not locations: + locations = item.get("location", ["Everywhere"]) + if locations: + count = 1 + if isinstance(locations, str): + locations = [locations] + if not isinstance(locations, list): + raise OptionError(f"Plando `location` has to be string or list, not {type(locations)}") + world = item.get("world", False) + from_pool = item.get("from_pool", True) + force = item.get("force", "silent") + if not isinstance(from_pool, bool): + raise OptionError(f"Plando 'from_pool' has to be true or false, not {from_pool!r}.") + if not (isinstance(force, bool) or force == "silent"): + raise OptionError(f"Plando `force` has to be true or false or `silent`, not {force!r}.") + value.append(PlandoItem(items, locations, world, from_pool, force, count, percentage)) + elif isinstance(item, PlandoItem): + if roll_percentage(item.percentage): + value.append(item) + else: + raise OptionError(f"Cannot create plando item from non-Dict type, got {type(item)}.") + return cls(value) + + def verify(self, world: typing.Type[World], player_name: str, plando_options: "PlandoOptions") -> None: + if not self.value: + return + from BaseClasses import PlandoOptions + if not (PlandoOptions.items & plando_options): + # plando is disabled but plando options were given so overwrite the options + self.value = [] + logging.warning(f"The plando items module is turned off, " + f"so items for {player_name} will be ignored.") + else: + # filter down item groups + for plando in self.value: + # confirm a valid count + if isinstance(plando.count, dict): + if "min" in plando.count and "max" in plando.count: + if plando.count["min"] > plando.count["max"]: + raise OptionError("Plando cannot have count `min` greater than `max`.") + items_copy = plando.items.copy() + if isinstance(plando.items, dict): + for item in items_copy: + if item in world.item_name_groups: + value = plando.items.pop(item) + group = world.item_name_groups[item] + filtered_items = sorted(group.difference(list(plando.items.keys()))) + if not filtered_items: + raise OptionError(f"Plando `items` contains the group \"{item}\" " + f"and every item in it. This is not allowed.") + if value is True: + for key in filtered_items: + plando.items[key] = True + else: + for key in random.choices(filtered_items, k=value): + plando.items[key] = plando.items.get(key, 0) + 1 + else: + assert isinstance(plando.items, list) # pycharm can't figure out the hinting without the hint + for item in items_copy: + if item in world.item_name_groups: + plando.items.remove(item) + plando.items.extend(sorted(world.item_name_groups[item])) + + @classmethod + def get_option_name(cls, value: list[PlandoItem]) -> str: + return ", ".join(["(%s: %s)" % (item.items, item.locations) for item in value]) #TODO: see what a better way to display would be + + def __getitem__(self, index: typing.SupportsIndex) -> PlandoItem: + return self.value.__getitem__(index) + + def __iter__(self) -> typing.Iterator[PlandoItem]: + yield from self.value + + def __len__(self) -> int: + return len(self.value) + + class Removed(FreeText): """This Option has been Removed.""" rich_text_doc = True @@ -1491,6 +1622,7 @@ class PerGameCommonOptions(CommonOptions): exclude_locations: ExcludeLocations priority_locations: PriorityLocations item_links: ItemLinks + plando_items: PlandoItems @dataclass diff --git a/test/general/test_implemented.py b/test/general/test_implemented.py index 1082a02912a8..b74f82b738b5 100644 --- a/test/general/test_implemented.py +++ b/test/general/test_implemented.py @@ -53,6 +53,22 @@ def test_no_failed_world_loads(self): if failed_world_loads: self.fail(f"The following worlds failed to load: {failed_world_loads}") + def test_prefill_items(self): + """Test that every world can reach every location from allstate before pre_fill.""" + for gamename, world_type in AutoWorldRegister.world_types.items(): + if gamename not in ("Archipelago", "Sudoku", "Final Fantasy", "Test Game"): + with self.subTest(gamename): + multiworld = setup_solo_multiworld(world_type, ("generate_early", "create_regions", "create_items", + "set_rules", "connect_entrances", "generate_basic")) + allstate = multiworld.get_all_state(False) + locations = multiworld.get_locations() + reachable = multiworld.get_reachable_locations(allstate) + unreachable = [location for location in locations if location not in reachable] + + self.assertTrue(not unreachable, + f"Locations were not reachable with all state before prefill: " + f"{unreachable}. Seed: {multiworld.seed}") + def test_explicit_indirect_conditions_spheres(self): """Tests that worlds using explicit indirect conditions produce identical spheres as when using implicit indirect conditions""" diff --git a/test/general/test_state.py b/test/general/test_state.py index 460fc3d60846..06c4046a6942 100644 --- a/test/general/test_state.py +++ b/test/general/test_state.py @@ -26,4 +26,4 @@ def test_all_state_is_available(self): for step in self.test_steps: with self.subTest("Step", step=step): call_all(multiworld, step) - self.assertTrue(multiworld.get_all_state(False, True)) + self.assertTrue(multiworld.get_all_state(False, allow_partial_entrances=True)) diff --git a/worlds/alttp/EntranceRandomizer.py b/worlds/alttp/EntranceRandomizer.py index e62088c1e05c..569e6a5d7ef3 100644 --- a/worlds/alttp/EntranceRandomizer.py +++ b/worlds/alttp/EntranceRandomizer.py @@ -54,16 +54,13 @@ def defval(value): ret = parser.parse_args(argv) # cannot be set through CLI currently - ret.plando_items = [] - ret.plando_texts = {} - ret.plando_connections = [] if multiargs.multi: defaults = copy.deepcopy(ret) for player in range(1, multiargs.multi + 1): playerargs = parse_arguments(shlex.split(getattr(ret, f"p{player}")), True) - for name in ["plando_items", "plando_texts", "plando_connections", "game", "sprite", "sprite_pool"]: + for name in ["game", "sprite", "sprite_pool"]: value = getattr(defaults, name) if getattr(playerargs, name) is None else getattr(playerargs, name) if player == 1: setattr(ret, name, {1: value}) diff --git a/worlds/alttp/__init__.py b/worlds/alttp/__init__.py index 1934138afa50..7f8d6ddf68ac 100644 --- a/worlds/alttp/__init__.py +++ b/worlds/alttp/__init__.py @@ -505,20 +505,20 @@ def collect_item(self, state: CollectionState, item: Item, remove=False): def pre_fill(self): from Fill import fill_restrictive, FillError attempts = 5 - world = self.multiworld - player = self.player - all_state = world.get_all_state(use_cache=True) + all_state = self.multiworld.get_all_state(use_cache=False) crystals = [self.create_item(name) for name in ['Red Pendant', 'Blue Pendant', 'Green Pendant', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 7', 'Crystal 5', 'Crystal 6']] - crystal_locations = [world.get_location('Turtle Rock - Prize', player), - world.get_location('Eastern Palace - Prize', player), - world.get_location('Desert Palace - Prize', player), - world.get_location('Tower of Hera - Prize', player), - world.get_location('Palace of Darkness - Prize', player), - world.get_location('Thieves\' Town - Prize', player), - world.get_location('Skull Woods - Prize', player), - world.get_location('Swamp Palace - Prize', player), - world.get_location('Ice Palace - Prize', player), - world.get_location('Misery Mire - Prize', player)] + for crystal in crystals: + all_state.remove(crystal) + crystal_locations = [self.get_location('Turtle Rock - Prize'), + self.get_location('Eastern Palace - Prize'), + self.get_location('Desert Palace - Prize'), + self.get_location('Tower of Hera - Prize'), + self.get_location('Palace of Darkness - Prize'), + self.get_location('Thieves\' Town - Prize'), + self.get_location('Skull Woods - Prize'), + self.get_location('Swamp Palace - Prize'), + self.get_location('Ice Palace - Prize'), + self.get_location('Misery Mire - Prize')] placed_prizes = {loc.item.name for loc in crystal_locations if loc.item} unplaced_prizes = [crystal for crystal in crystals if crystal.name not in placed_prizes] empty_crystal_locations = [loc for loc in crystal_locations if not loc.item] @@ -526,8 +526,8 @@ def pre_fill(self): try: prizepool = unplaced_prizes.copy() prize_locs = empty_crystal_locations.copy() - world.random.shuffle(prize_locs) - fill_restrictive(world, all_state, prize_locs, prizepool, True, lock=True, + self.multiworld.random.shuffle(prize_locs) + fill_restrictive(self.multiworld, all_state, prize_locs, prizepool, True, lock=True, name="LttP Dungeon Prizes") except FillError as e: lttp_logger.exception("Failed to place dungeon prizes (%s). Will retry %s more times", e, @@ -541,7 +541,7 @@ def pre_fill(self): if self.options.mode == 'standard' and self.options.small_key_shuffle \ and self.options.small_key_shuffle != small_key_shuffle.option_universal and \ self.options.small_key_shuffle != small_key_shuffle.option_own_dungeons: - world.local_early_items[player]["Small Key (Hyrule Castle)"] = 1 + self.multiworld.local_early_items[self.player]["Small Key (Hyrule Castle)"] = 1 @classmethod def stage_pre_fill(cls, world): @@ -811,12 +811,15 @@ def get_filler_item_name(self) -> str: return GetBeemizerItem(self.multiworld, self.player, item) def get_pre_fill_items(self): - res = [] + res = [self.create_item(name) for name in ('Red Pendant', 'Blue Pendant', 'Green Pendant', 'Crystal 1', + 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 7', 'Crystal 5', + 'Crystal 6')] if self.dungeon_local_item_names: for dungeon in self.dungeons.values(): for item in dungeon.all_items: if item.name in self.dungeon_local_item_names: res.append(item) + return res def fill_slot_data(self): diff --git a/worlds/blasphemous/__init__.py b/worlds/blasphemous/__init__.py index a643e91c9b89..9dffc6c6d286 100644 --- a/worlds/blasphemous/__init__.py +++ b/worlds/blasphemous/__init__.py @@ -207,7 +207,6 @@ def create_items(self): if not self.options.skill_randomizer: self.place_items_from_dict(skill_dict) - def place_items_from_set(self, location_set: Set[str], name: str): for loc in location_set: self.get_location(loc).place_locked_item(self.create_item(name)) diff --git a/worlds/hylics2/__init__.py b/worlds/hylics2/__init__.py index 18bcb0edc143..f94d9c225373 100644 --- a/worlds/hylics2/__init__.py +++ b/worlds/hylics2/__init__.py @@ -127,6 +127,10 @@ def pre_fill(self): tv = tvs.pop() self.get_location(tv).place_locked_item(self.create_item(gesture)) + def get_pre_fill_items(self) -> List["Item"]: + if self.options.gesture_shuffle: + return [self.create_item(gesture["name"]) for gesture in Items.gesture_item_table.values()] + return [] def fill_slot_data(self) -> Dict[str, Any]: slot_data: Dict[str, Any] = { diff --git a/worlds/kh2/__init__.py b/worlds/kh2/__init__.py index edc4305accaf..defb285d509c 100644 --- a/worlds/kh2/__init__.py +++ b/worlds/kh2/__init__.py @@ -436,6 +436,10 @@ def keyblade_pre_fill(self): for location in keyblade_locations: location.locked = True + def get_pre_fill_items(self) -> List["Item"]: + return [self.create_item(item) for item in [*DonaldAbility_Table.keys(), *GoofyAbility_Table.keys(), + *SupportAbility_Table.keys()]] + def starting_invo_verify(self): """ Making sure the player doesn't put too many abilities in their starting inventory. diff --git a/worlds/ladx/test/testShop.py b/worlds/ladx/test/testShop.py index 91d504d521b4..a28ba39b2f7c 100644 --- a/worlds/ladx/test/testShop.py +++ b/worlds/ladx/test/testShop.py @@ -1,6 +1,7 @@ from typing import Optional -from Fill import distribute_planned +from Fill import parse_planned_blocks, distribute_planned_blocks, resolve_early_locations_for_planned +from Options import PlandoItems from test.general import setup_solo_multiworld from worlds.AutoWorld import call_all from . import LADXTestBase @@ -19,14 +20,17 @@ class PlandoTest(LADXTestBase): ], }], } - + def world_setup(self, seed: Optional[int] = None) -> None: self.multiworld = setup_solo_multiworld( LinksAwakeningWorld, ("generate_early", "create_regions", "create_items", "set_rules", "generate_basic") ) - self.multiworld.plando_items[1] = self.options["plando_items"] - distribute_planned(self.multiworld) + self.multiworld.worlds[1].options.plando_items = PlandoItems.from_any(self.options["plando_items"]) + self.multiworld.plando_item_blocks = parse_planned_blocks(self.multiworld) + resolve_early_locations_for_planned(self.multiworld) + distribute_planned_blocks(self.multiworld, [x for player in self.multiworld.plando_item_blocks + for x in self.multiworld.plando_item_blocks[player]]) call_all(self.multiworld, "pre_fill") def test_planned(self): diff --git a/worlds/oot/__init__.py b/worlds/oot/__init__.py index 136439ee96f2..401c387d5e05 100644 --- a/worlds/oot/__init__.py +++ b/worlds/oot/__init__.py @@ -32,7 +32,7 @@ from settings import get_settings from BaseClasses import MultiWorld, CollectionState, Tutorial, LocationProgressType -from Options import Range, Toggle, VerifyKeys, Accessibility, PlandoConnections +from Options import Range, Toggle, VerifyKeys, Accessibility, PlandoConnections, PlandoItems from Fill import fill_restrictive, fast_fill, FillError from worlds.generic.Rules import exclusion_rules, add_item_rule from worlds.AutoWorld import World, AutoLogicRegister, WebWorld @@ -220,6 +220,8 @@ def generate_early(self): option_value = result.value elif isinstance(result, PlandoConnections): option_value = result.value + elif isinstance(result, PlandoItems): + option_value = result.value else: option_value = result.current_key setattr(self, option_name, option_value) diff --git a/worlds/pokemon_rb/__init__.py b/worlds/pokemon_rb/__init__.py index 6bf66a11064a..a455e38f2934 100644 --- a/worlds/pokemon_rb/__init__.py +++ b/worlds/pokemon_rb/__init__.py @@ -321,7 +321,7 @@ def fill_hook(self, progitempool, usefulitempool, filleritempool, fill_locations "Fuchsia Gym - Koga Prize", "Saffron Gym - Sabrina Prize", "Cinnabar Gym - Blaine Prize", "Viridian Gym - Giovanni Prize" ] if self.multiworld.get_location(loc, self.player).item is None] - state = self.multiworld.get_all_state(False) + state = self.multiworld.get_all_state(False, True, False) # Give it two tries to place badges with wild Pokemon and learnsets as-is. # If it can't, then try with all Pokemon collected, and we'll try to fix HM move availability after. if attempt > 1: @@ -395,7 +395,7 @@ def pre_fill(self) -> None: # Delete evolution events for Pokémon that are not in logic in an all_state so that accessibility check does not # fail. Re-use test_state from previous final loop. - all_state = self.multiworld.get_all_state(False) + all_state = self.multiworld.get_all_state(False, True, False) evolutions_region = self.multiworld.get_region("Evolution", self.player) for location in evolutions_region.locations.copy(): if not all_state.can_reach(location, player=self.player): @@ -448,7 +448,7 @@ def pre_fill(self) -> None: self.local_locs = locs - all_state = self.multiworld.get_all_state(False) + all_state = self.multiworld.get_all_state(False, True, False) reachable_mons = set() for mon in poke_data.pokemon_data: @@ -516,6 +516,11 @@ def pre_fill(self) -> None: loc.item = None loc.place_locked_item(self.pc_item) + def get_pre_fill_items(self) -> typing.List["Item"]: + pool = [self.create_item(mon) for mon in poke_data.pokemon_data] + pool.append(self.pc_item) + return pool + @classmethod def stage_post_fill(cls, multiworld): # Convert all but one of each instance of a wild Pokemon to useful classification. diff --git a/worlds/pokemon_rb/pokemon.py b/worlds/pokemon_rb/pokemon.py index e5d161a43310..f1c171b88deb 100644 --- a/worlds/pokemon_rb/pokemon.py +++ b/worlds/pokemon_rb/pokemon.py @@ -400,7 +400,7 @@ def number_of_zones(mon): last_intervene = None while True: intervene_move = None - test_state = multiworld.get_all_state(False) + test_state = multiworld.get_all_state(False, True, False) if not logic.can_learn_hm(test_state, world, "Surf", player): intervene_move = "Surf" elif not logic.can_learn_hm(test_state, world, "Strength", player): diff --git a/worlds/sc2/Locations.py b/worlds/sc2/Locations.py index b9c30bb70106..42b1dd4d4eb0 100644 --- a/worlds/sc2/Locations.py +++ b/worlds/sc2/Locations.py @@ -66,11 +66,8 @@ def get_plando_locations(world: World) -> List[str]: if world is None: return [] plando_locations = [] - for plando_setting in world.multiworld.plando_items[world.player]: - plando_locations += plando_setting.get("locations", []) - plando_setting_location = plando_setting.get("location", None) - if plando_setting_location is not None: - plando_locations.append(plando_setting_location) + for plando_setting in world.options.plando_items: + plando_locations += plando_setting.locations return plando_locations diff --git a/worlds/shivers/__init__.py b/worlds/shivers/__init__.py index 85f2cf1861a7..3430a5a02d4e 100644 --- a/worlds/shivers/__init__.py +++ b/worlds/shivers/__init__.py @@ -245,7 +245,7 @@ def pre_fill(self) -> None: storage_items += [self.create_item("Empty") for _ in range(3)] - state = self.multiworld.get_all_state(False) + state = self.multiworld.get_all_state(False, True, False) self.random.shuffle(storage_locs) self.random.shuffle(storage_items) @@ -255,6 +255,27 @@ def pre_fill(self) -> None: self.storage_placements = {location.name.replace("Storage: ", ""): location.item.name.replace(" DUPE", "") for location in storage_locs} + def get_pre_fill_items(self) -> List[Item]: + if self.options.full_pots == "pieces": + return [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_DUPLICATE] + elif self.options.full_pots == "complete": + return [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_COMPELTE_DUPLICATE] + else: + pool = [] + pieces = [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_DUPLICATE] + complete = [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_COMPELTE_DUPLICATE] + for i in range(10): + if self.pot_completed_list[i] == 0: + pool.append(pieces[i]) + pool.append(pieces[i + 10]) + else: + pool.append(complete[i]) + return pool + def fill_slot_data(self) -> dict: return { "StoragePlacements": self.storage_placements, diff --git a/worlds/stardew_valley/test/stability/TestUniversalTracker.py b/worlds/stardew_valley/test/stability/TestUniversalTracker.py index 0268d9e515ec..7590635aa193 100644 --- a/worlds/stardew_valley/test/stability/TestUniversalTracker.py +++ b/worlds/stardew_valley/test/stability/TestUniversalTracker.py @@ -35,9 +35,6 @@ def test_all_locations_and_items_are_the_same_between_two_generations(self): args.multi = 1 args.race = None args.plando_options = self.multiworld.plando_options - args.plando_items = self.multiworld.plando_items - args.plando_texts = self.multiworld.plando_texts - args.plando_connections = self.multiworld.plando_connections args.game = self.multiworld.game args.name = self.multiworld.player_name args.sprite = {} diff --git a/worlds/witness/player_items.py b/worlds/witness/player_items.py index 7b71e3c1f933..d13ebcafdcaf 100644 --- a/worlds/witness/player_items.py +++ b/worlds/witness/player_items.py @@ -214,20 +214,17 @@ def get_early_items(self) -> List[str]: # Remove items that are mentioned in any plando options. (Hopefully, in the future, plando will get resolved # before create_items so that we'll be able to check placed items instead of just removing all items mentioned # regardless of whether or not they actually wind up being manually placed. - for plando_setting in self._multiworld.plando_items[self._player_id]: - if plando_setting.get("from_pool", True): - for item_setting_key in [key for key in ["item", "items"] if key in plando_setting]: - if isinstance(plando_setting[item_setting_key], str): - output -= {plando_setting[item_setting_key]} - elif isinstance(plando_setting[item_setting_key], dict): - output -= {item for item, weight in plando_setting[item_setting_key].items() if weight} - else: - # Assume this is some other kind of iterable. - for inner_item in plando_setting[item_setting_key]: - if isinstance(inner_item, str): - output -= {inner_item} - elif isinstance(inner_item, dict): - output -= {item for item, weight in inner_item.items() if weight} + for plando_setting in self._world.options.plando_items: + if plando_setting.from_pool: + if isinstance(plando_setting.items, dict): + output -= {item for item, weight in plando_setting.items.items() if weight} + else: + # Assume this is some other kind of iterable. + for inner_item in plando_setting.items: + if isinstance(inner_item, str): + output -= {inner_item} + elif isinstance(inner_item, dict): + output -= {item for item, weight in inner_item.items() if weight} # Sort the output for consistency across versions if the implementation changes but the logic does not. return sorted(output) From 53defd310835e064c9ca10d142d13185be717ae3 Mon Sep 17 00:00:00 2001 From: qwint Date: Sat, 10 May 2025 17:51:44 -0500 Subject: [PATCH 037/183] MultiServer: More Guardrails for Nolocation Clients (#4470) --- MultiServer.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/MultiServer.py b/MultiServer.py index bdc6b8c84f1e..9bcf8f6f4caa 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -1826,7 +1826,7 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict): ctx.clients[team][slot].append(client) client.version = args['version'] client.tags = args['tags'] - client.no_locations = "TextOnly" in client.tags or "Tracker" in client.tags + client.no_locations = bool(client.tags & _non_game_messages.keys()) # set NoText for old PopTracker clients that predate the tag to save traffic client.no_text = "NoText" in client.tags or ("PopTracker" in client.tags and client.version < (0, 5, 1)) connected_packet = { @@ -1900,7 +1900,7 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict): old_tags = client.tags client.tags = args["tags"] if set(old_tags) != set(client.tags): - client.no_locations = 'TextOnly' in client.tags or 'Tracker' in client.tags + client.no_locations = bool(client.tags & _non_game_messages.keys()) client.no_text = "NoText" in client.tags or ( "PopTracker" in client.tags and client.version < (0, 5, 1) ) @@ -1990,9 +1990,14 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict): ctx.save() for slot in concerning_slots: ctx.on_changed_hints(client.team, slot) - + elif cmd == 'StatusUpdate': - update_client_status(ctx, client, args["status"]) + if client.no_locations and args["status"] == ClientStatus.CLIENT_GOAL: + await ctx.send_msgs(client, [{'cmd': 'InvalidPacket', "type": "cmd", + "text": "Trackers can't register Goal Complete", + "original_cmd": cmd}]) + else: + update_client_status(ctx, client, args["status"]) elif cmd == 'Say': if "text" not in args or type(args["text"]) is not str or not args["text"].isprintable(): From e809b9328bbbbf7c65599cb8d3bbb726f7f1ab0f Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Sat, 10 May 2025 17:57:16 -0500 Subject: [PATCH 038/183] The Messenger: do all empty state validation during portal shuffle (#4971) --- worlds/messenger/__init__.py | 6 ++-- worlds/messenger/portals.py | 6 ++-- worlds/messenger/subclasses.py | 17 ---------- worlds/messenger/transitions.py | 55 +++++++++++++++++---------------- 4 files changed, 34 insertions(+), 50 deletions(-) diff --git a/worlds/messenger/__init__.py b/worlds/messenger/__init__.py index 2382a46c314f..09911fd531dd 100644 --- a/worlds/messenger/__init__.py +++ b/worlds/messenger/__init__.py @@ -16,8 +16,8 @@ from .regions import LEVELS, MEGA_SHARDS, LOCATIONS, REGION_CONNECTIONS from .rules import MessengerHardRules, MessengerOOBRules, MessengerRules from .shop import FIGURINES, PROG_SHOP_ITEMS, SHOP_ITEMS, USEFUL_SHOP_ITEMS, shuffle_shop_prices -from .subclasses import MessengerEntrance, MessengerItem, MessengerRegion, MessengerShopLocation -from .transitions import shuffle_transitions +from .subclasses import MessengerItem, MessengerRegion, MessengerShopLocation +from .transitions import disconnect_entrances, shuffle_transitions components.append( Component("The Messenger", component_type=Type.CLIENT, func=launch_game, game_name="The Messenger", supports_uri=True) @@ -266,6 +266,8 @@ def set_rules(self) -> None: # MessengerOOBRules(self).set_messenger_rules() def connect_entrances(self) -> None: + if self.options.shuffle_transitions: + disconnect_entrances(self) add_closed_portal_reqs(self) # i need portal shuffle to happen after rules exist so i can validate it attempts = 5 diff --git a/worlds/messenger/portals.py b/worlds/messenger/portals.py index 704285896ccf..c04fc696e982 100644 --- a/worlds/messenger/portals.py +++ b/worlds/messenger/portals.py @@ -292,12 +292,10 @@ def disconnect_portals(world: "MessengerWorld") -> None: def validate_portals(world: "MessengerWorld") -> bool: - if world.options.shuffle_transitions: - return True - new_state = CollectionState(world.multiworld) + new_state = CollectionState(world.multiworld, True) new_state.update_reachable_regions(world.player) reachable_locs = 0 - for loc in world.multiworld.get_locations(world.player): + for loc in world.get_locations(): reachable_locs += loc.can_reach(new_state) if reachable_locs > 5: return True diff --git a/worlds/messenger/subclasses.py b/worlds/messenger/subclasses.py index 0138a3f07428..2e438fdbfdc7 100644 --- a/worlds/messenger/subclasses.py +++ b/worlds/messenger/subclasses.py @@ -10,25 +10,8 @@ from . import MessengerWorld -class MessengerEntrance(Entrance): - world: "MessengerWorld | None" = None - - def can_connect_to(self, other: Entrance, dead_end: bool, state: "ERPlacementState") -> bool: - can_connect = super().can_connect_to(other, dead_end, state) - world: MessengerWorld = getattr(self, "world", None) - if not world or world.reachable_locs or not can_connect: - return can_connect - empty_state = CollectionState(world.multiworld, True) - self.connected_region = other.connected_region - empty_state.update_reachable_regions(world.player) - world.reachable_locs = any(loc.can_reach(empty_state) and not loc.is_event for loc in world.get_locations()) - self.connected_region = None - return world.reachable_locs and (not state.coupled or self.name != other.name) - - class MessengerRegion(Region): parent: str | None - entrance_type = MessengerEntrance def __init__(self, name: str, world: "MessengerWorld", parent: str | None = None) -> None: super().__init__(name, world.player, world.multiworld) diff --git a/worlds/messenger/transitions.py b/worlds/messenger/transitions.py index 53cfd836d5ce..c0ae64c5489e 100644 --- a/worlds/messenger/transitions.py +++ b/worlds/messenger/transitions.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from BaseClasses import Region +from BaseClasses import Entrance, Region from entrance_rando import EntranceType, randomize_entrances from .connections import RANDOMIZED_CONNECTIONS, TRANSITIONS from .options import ShuffleTransitions, TransitionPlando @@ -9,6 +9,33 @@ from . import MessengerWorld +def disconnect_entrances(world: "MessengerWorld") -> None: + def disconnect_entrance() -> None: + child = entrance.connected_region.name + child_region = entrance.connected_region + child_region.entrances.remove(entrance) + entrance.connected_region = None + + er_type = EntranceType.ONE_WAY if child == "Glacial Peak - Left" else \ + EntranceType.TWO_WAY if child in RANDOMIZED_CONNECTIONS else EntranceType.ONE_WAY + if er_type == EntranceType.TWO_WAY: + mock_entrance = entrance.parent_region.create_er_target(entrance.name) + else: + mock_entrance = child_region.create_er_target(child) + + entrance.randomization_type = er_type + mock_entrance.randomization_type = er_type + + + for parent, child in RANDOMIZED_CONNECTIONS.items(): + if child == "Corrupted Future": + entrance = world.get_entrance("Artificer's Portal") + elif child == "Tower of Time - Left": + entrance = world.get_entrance("Artificer's Challenge") + else: + entrance = world.get_entrance(f"{parent} -> {child}") + disconnect_entrance() + def connect_plando(world: "MessengerWorld", plando_connections: TransitionPlando) -> None: def remove_dangling_exit(region: Region) -> None: # find the disconnected exit and remove references to it @@ -59,32 +86,6 @@ def remove_dangling_entrance(region: Region) -> None: def shuffle_transitions(world: "MessengerWorld") -> None: coupled = world.options.shuffle_transitions == ShuffleTransitions.option_coupled - def disconnect_entrance() -> None: - child_region.entrances.remove(entrance) - entrance.connected_region = None - - er_type = EntranceType.ONE_WAY if child == "Glacial Peak - Left" else \ - EntranceType.TWO_WAY if child in RANDOMIZED_CONNECTIONS else EntranceType.ONE_WAY - if er_type == EntranceType.TWO_WAY: - mock_entrance = parent_region.create_er_target(entrance.name) - else: - mock_entrance = child_region.create_er_target(child) - - entrance.randomization_type = er_type - mock_entrance.randomization_type = er_type - - for parent, child in RANDOMIZED_CONNECTIONS.items(): - if child == "Corrupted Future": - entrance = world.get_entrance("Artificer's Portal") - elif child == "Tower of Time - Left": - entrance = world.get_entrance("Artificer's Challenge") - else: - entrance = world.get_entrance(f"{parent} -> {child}") - parent_region = entrance.parent_region - child_region = entrance.connected_region - entrance.world = world - disconnect_entrance() - plando = world.options.plando_connections if plando: connect_plando(world, plando) From c0b3fa9ff74e89b33b668cbfe0201ebc65f1a31c Mon Sep 17 00:00:00 2001 From: lordlou <87331798+lordlou@users.noreply.github.com> Date: Sun, 11 May 2025 02:10:51 -0400 Subject: [PATCH 039/183] SMZ3: replace copyright credits music (#4978) --- worlds/smz3/data/zsm.ips | Bin 1470841 -> 1404088 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/worlds/smz3/data/zsm.ips b/worlds/smz3/data/zsm.ips index 87a4f924f1933fcf59493753c034192ef03a328c..54c558185045dd59fcfbeae1d71a2b8ad01303bd 100644 GIT binary patch delta 1027 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

TS6{ARUI;eo3BGM;K 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 Date: Sun, 11 May 2025 03:41:35 -0700 Subject: [PATCH 040/183] Docs: clarify that ModuleUpdate.py is a prerequisite for running tests (#4970) * Update tests.md Spelled out that tests will not run without running UpdateModule.py first and including a link to the instructions on how to do that. * Applied black-silver's feedback and also I ran into tests that don't run correctly unless you also have run Webhost.py once. I have included that in the documentation as well. * More black-silver feedback. --- docs/tests.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/tests.md b/docs/tests.md index a9a1962685b9..13d62b0132ef 100644 --- a/docs/tests.md +++ b/docs/tests.md @@ -119,8 +119,12 @@ variable to keep all the benefits of the test framework while not running the ma #### Using Pycharm In PyCharm, running all tests can be done by right-clicking the root test directory and selecting Run 'Archipelago Unittests'. -Unless you configured PyCharm to use pytest as a test runner, you may get import failures. To solve this, edit the run configuration, -and set the working directory to the Archipelago directory which contains all the project files. +If you have never previously run ModuleUpdate.py, then you will need to do this once before the tests will run. +You can run ModuleUpdate.py by right-clicking ModuleUpdate.py and selecting `Run 'ModuleUpdate'`. +After running ModuleUpdate.py you may still get a `ModuleNotFoundError: No module named 'flask'` for the webhost tests. +If this happens, run WebHost.py by right-clicking it and selecting `Run 'WebHost'`. Make sure to press enter when prompted. +Unless you configured PyCharm to use pytest as a test runner, you may get import failures. To solve this, +edit the run configuration, and set the working directory to the Archipelago directory which contains all the project files. If you only want to run your world's defined tests, repeat the steps for the test directory within your world. Your working directory should be the directory of your world in the worlds directory and the script should be the From 8340371f9c27d59f674369f079844736d75ade91 Mon Sep 17 00:00:00 2001 From: Justus Lind Date: Tue, 13 May 2025 08:47:19 +1000 Subject: [PATCH 041/183] Muse Dash: Update to Otaku Pack Vol 20 (#4924) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/musedash/MuseDashCollection.py | 2 ++ worlds/musedash/MuseDashData.py | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/worlds/musedash/MuseDashCollection.py b/worlds/musedash/MuseDashCollection.py index 96a506f2fa2a..2a9f56750e8a 100644 --- a/worlds/musedash/MuseDashCollection.py +++ b/worlds/musedash/MuseDashCollection.py @@ -36,6 +36,8 @@ class MuseDashCollections: "Yume Ou Mono Yo Secret", "Echo over you... Secret", "Tsukuyomi Ni Naru Replaced", + "Heart Message feat. Aoi Tokimori Secret", + "Meow Rock feat. Chun Ge, Yuan Shen", ] song_items = SONG_DATA diff --git a/worlds/musedash/MuseDashData.py b/worlds/musedash/MuseDashData.py index 71d69eecb58d..f2bcf1220fa1 100644 --- a/worlds/musedash/MuseDashData.py +++ b/worlds/musedash/MuseDashData.py @@ -627,10 +627,18 @@ "Sharp Bubbles": SongData(2900751, "83-3", "Cosmic Radio 2024", True, 7, 9, 11), "Replay": SongData(2900752, "83-4", "Cosmic Radio 2024", True, 5, 7, 9), "Cosmic Dusty Girl": SongData(2900753, "83-5", "Cosmic Radio 2024", True, 5, 7, 9), - "Meow Rock feat. Chun Ge, Yuan Shen": SongData(2900754, "84-0", "Muse Dash Legend", True, None, None, None), - "Even if you make an old radio song with AI": SongData(2900755, "84-1", "Muse Dash Legend", False, 3, 6, 8), - "Unusual Sketchbook": SongData(2900756, "84-2", "Muse Dash Legend", True, 6, 8, 11), - "TransientTears": SongData(2900757, "84-3", "Muse Dash Legend", True, 6, 8, 11), - "SHOOTING*STAR": SongData(2900758, "84-4", "Muse Dash Legend", False, 5, 7, 9), - "But the Blue Bird is Already Dead": SongData(2900759, "84-5", "Muse Dash Legend", False, 6, 8, 10), + "Meow Rock feat. Chun Ge, Yuan Shen": SongData(2900754, "84-0", "Muse Dash・Legend", True, None, None, None), + "Even if you make an old radio song with AI": SongData(2900755, "84-1", "Muse Dash・Legend", False, 3, 6, 8), + "Unusual Sketchbook": SongData(2900756, "84-2", "Muse Dash・Legend", True, 6, 8, 11), + "TransientTears": SongData(2900757, "84-3", "Muse Dash・Legend", True, 6, 8, 11), + "SHOOTING*STAR": SongData(2900758, "84-4", "Muse Dash・Legend", False, 5, 7, 9), + "But the Blue Bird is Already Dead": SongData(2900759, "84-5", "Muse Dash・Legend", False, 6, 8, 10), + "Heart Message feat. Aoi Tokimori Secret": SongData(2900760, "0-57", "Default Music", True, None, 7, 10), + "Heart Message feat. Aoi Tokimori": SongData(2900761, "0-58", "Default Music", True, 1, 3, 6), + "Aventyr": SongData(2900762, "85-0", "Happy Otaku Pack Vol.20", True, 4, 7, 10), + "Raintain": SongData(2900763, "85-1", "Happy Otaku Pack Vol.20", False, 6, 8, 10), + "Piercing the Clouds and Waves": SongData(2900764, "85-2", "Happy Otaku Pack Vol.20", True, 3, 6, 8), + "Save Yourself": SongData(2900765, "85-3", "Happy Otaku Pack Vol.20", True, 5, 7, 10), + "Menace": SongData(2900766, "85-4", "Happy Otaku Pack Vol.20", True, 7, 9, 11), + "Dangling": SongData(2900767, "85-5", "Happy Otaku Pack Vol.20", True, 6, 8, 10), } From feaed7ea00bcae83bebf0844ca4ee8e1bd1f83a6 Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Tue, 13 May 2025 07:49:43 +0000 Subject: [PATCH 042/183] Docs: tests: add naming / file naming conventions (#4982) * Docs: tests: add naming / file naming conventions Deprecates putting stuff into `__init__.py`. This may be relevant for test discovery in the future. * Docs: tests: fix class naming * Docs: tests: update examples * Punctuation is hard Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Revert part of one suggestion The first set of () make the sentence make less sense. * Docs: tests: clarify that __init__.py may be empty * Make sentence nicer to read I simply kept the original wording, but I agree that it reads somewhat odd Co-authored-by: Ixrec --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Ixrec --- docs/tests.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/tests.md b/docs/tests.md index 13d62b0132ef..78cedbc514d5 100644 --- a/docs/tests.md +++ b/docs/tests.md @@ -11,8 +11,13 @@ found in the [general test directory](/test/general). ## Defining World Tests In order to run tests from your world, you will need to create a `test` package within your world package. This can be -done by creating a `test` directory with a file named `__init__.py` inside it inside your world. By convention, a base -for your world tests can be created in this file that you can then import into other modules. +done by creating a `test` directory inside your world with an (empty) `__init__.py` inside it. By convention, a base +for your world tests can be created in `bases.py` or any file that does not start with `test`, that you can then import +into other modules. All tests should be defined in files named `test_*.py` (all lower case) and be member functions +(named `test_*`) of classes (named `Test*` or `*Test`) that inherit from `unittest.TestCase` or a test base. + +Defining anything inside `test/__init__.py` is deprecated. Defining TestBase there was previously the norm; however, +it complicates test discovery because some worlds also put actual tests into `__init__.py`. ### WorldTestBase @@ -21,7 +26,7 @@ interactions in the world interact as expected, you will want to use the [WorldT comes with the basics for test setup as well as a few preloaded tests that most worlds might want to check on varying options combinations. -Example `/worlds//test/__init__.py`: +Example `/worlds//test/bases.py`: ```python from test.bases import WorldTestBase @@ -49,7 +54,7 @@ with `test_`. Example `/worlds//test/test_chest_access.py`: ```python -from . import MyGameTestBase +from .bases import MyGameTestBase class TestChestAccess(MyGameTestBase): From 7d5693e0fb6c09d185d02850a3c69d3a2508ea6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Tue, 13 May 2025 03:58:03 -0400 Subject: [PATCH 043/183] Stardew Valley: Move BaseTest out of `__init__.py` to comply with future conventions (#4991) * move everything out of init; fix from imports and some typing errors * why is there a change in multiserver * fix some relative shits --- worlds/stardew_valley/test/TestBackpack.py | 2 +- worlds/stardew_valley/test/TestBooksanity.py | 2 +- worlds/stardew_valley/test/TestBundles.py | 3 +- worlds/stardew_valley/test/TestCrops.py | 2 +- .../stardew_valley/test/TestDynamicGoals.py | 2 +- worlds/stardew_valley/test/TestFarmType.py | 4 +- worlds/stardew_valley/test/TestFill.py | 2 +- worlds/stardew_valley/test/TestFishsanity.py | 2 +- .../stardew_valley/test/TestFriendsanity.py | 2 +- worlds/stardew_valley/test/TestGeneration.py | 2 +- worlds/stardew_valley/test/TestItemLink.py | 2 +- worlds/stardew_valley/test/TestItems.py | 2 +- worlds/stardew_valley/test/TestLogic.py | 2 +- .../test/TestMultiplePlayers.py | 2 +- .../test/TestNumberLocations.py | 2 +- worlds/stardew_valley/test/TestOptionFlags.py | 2 +- worlds/stardew_valley/test/TestOptions.py | 2 +- .../stardew_valley/test/TestOptionsPairs.py | 2 +- .../stardew_valley/test/TestRandomWorlds.py | 2 +- worlds/stardew_valley/test/TestRegions.py | 2 +- .../stardew_valley/test/TestStartInventory.py | 2 +- worlds/stardew_valley/test/TestTraps.py | 3 +- .../stardew_valley/test/TestWalnutsanity.py | 2 +- worlds/stardew_valley/test/__init__.py | 308 ------------------ worlds/stardew_valley/test/bases.py | 306 +++++++++++++++++ .../test/content/TestGingerIsland.py | 2 +- .../test/content/mods/TestSVE.py | 2 +- .../stardew_valley/test/long/TestModsLong.py | 2 +- .../test/long/TestOptionsLong.py | 2 +- .../test/long/TestPreRolledRandomness.py | 2 +- .../test/mods/TestBiggerBackpack.py | 2 +- worlds/stardew_valley/test/mods/TestMods.py | 2 +- .../stardew_valley/test/mods/TestModsFill.py | 2 +- worlds/stardew_valley/test/mods/TestSVE.py | 2 +- .../test/options/TestPresets.py | 2 +- .../test/performance/TestPerformance.py | 2 +- .../stardew_valley/test/rules/TestArcades.py | 2 +- worlds/stardew_valley/test/rules/TestBooks.py | 2 +- .../test/rules/TestBuildings.py | 2 +- .../stardew_valley/test/rules/TestBundles.py | 2 +- .../test/rules/TestCookingRecipes.py | 2 +- .../test/rules/TestCraftingRecipes.py | 2 +- .../test/rules/TestDonations.py | 2 +- .../stardew_valley/test/rules/TestFishing.py | 2 +- .../test/rules/TestFriendship.py | 2 +- .../stardew_valley/test/rules/TestMuseum.py | 2 +- .../stardew_valley/test/rules/TestShipping.py | 2 +- .../stardew_valley/test/rules/TestSkills.py | 2 +- .../test/rules/TestStateRules.py | 2 +- worlds/stardew_valley/test/rules/TestTools.py | 2 +- .../stardew_valley/test/rules/TestWeapons.py | 2 +- .../test/script/benchmark_locations.py | 9 +- .../test/stability/StabilityOutputScript.py | 2 +- .../test/stability/TestStability.py | 2 +- .../test/stability/TestUniversalTracker.py | 6 +- 55 files changed, 367 insertions(+), 368 deletions(-) create mode 100644 worlds/stardew_valley/test/bases.py diff --git a/worlds/stardew_valley/test/TestBackpack.py b/worlds/stardew_valley/test/TestBackpack.py index 378c90e40a7f..bccafd15e55f 100644 --- a/worlds/stardew_valley/test/TestBackpack.py +++ b/worlds/stardew_valley/test/TestBackpack.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import options diff --git a/worlds/stardew_valley/test/TestBooksanity.py b/worlds/stardew_valley/test/TestBooksanity.py index c25924aa3b62..f1678de0db16 100644 --- a/worlds/stardew_valley/test/TestBooksanity.py +++ b/worlds/stardew_valley/test/TestBooksanity.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from ..options import ExcludeGingerIsland, Booksanity, Shipsanity from ..strings.book_names import Book, LostBook diff --git a/worlds/stardew_valley/test/TestBundles.py b/worlds/stardew_valley/test/TestBundles.py index 091f39b2568e..5b70158f5f54 100644 --- a/worlds/stardew_valley/test/TestBundles.py +++ b/worlds/stardew_valley/test/TestBundles.py @@ -1,6 +1,6 @@ import unittest -from . import SVTestBase +from .bases import SVTestBase from .. import BundleRandomization from ..data.bundle_data import all_bundle_items_except_money, quality_crops_items_thematic, quality_foraging_items, quality_fish_items from ..options import BundlePlando @@ -87,4 +87,3 @@ def test_all_plando_bundles_are_there(self): for bundle_name in self.fish_bundle_names: with self.subTest(f"{bundle_name}"): self.assertIn(bundle_name, location_names) - diff --git a/worlds/stardew_valley/test/TestCrops.py b/worlds/stardew_valley/test/TestCrops.py index 53048259ab0e..bf8f4f719e8a 100644 --- a/worlds/stardew_valley/test/TestCrops.py +++ b/worlds/stardew_valley/test/TestCrops.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import options from ..strings.ap_names.transport_names import Transportation from ..strings.building_names import Building diff --git a/worlds/stardew_valley/test/TestDynamicGoals.py b/worlds/stardew_valley/test/TestDynamicGoals.py index b0e6d6c62655..23f453e9f073 100644 --- a/worlds/stardew_valley/test/TestDynamicGoals.py +++ b/worlds/stardew_valley/test/TestDynamicGoals.py @@ -1,7 +1,7 @@ from typing import List, Tuple -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options, StardewItem from ..strings.ap_names.ap_weapon_names import APWeapon from ..strings.ap_names.transport_names import Transportation diff --git a/worlds/stardew_valley/test/TestFarmType.py b/worlds/stardew_valley/test/TestFarmType.py index 1bb4404ae61f..2c4fe4ec36d2 100644 --- a/worlds/stardew_valley/test/TestFarmType.py +++ b/worlds/stardew_valley/test/TestFarmType.py @@ -1,7 +1,7 @@ from collections import Counter -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options @@ -13,7 +13,7 @@ class TestStartInventoryStandardFarm(WorldAssertMixin, SVTestBase): def test_start_inventory_progressive_coops(self): start_items = Counter((i.name for i in self.multiworld.precollected_items[self.player])) items = Counter((i.name for i in self.multiworld.itempool)) - + self.assertIn("Progressive Coop", items) self.assertEqual(items["Progressive Coop"], 3) self.assertNotIn("Progressive Coop", start_items) diff --git a/worlds/stardew_valley/test/TestFill.py b/worlds/stardew_valley/test/TestFill.py index f8565f4f218d..2205c49cdfbb 100644 --- a/worlds/stardew_valley/test/TestFill.py +++ b/worlds/stardew_valley/test/TestFill.py @@ -1,5 +1,5 @@ -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .options.presets import minimal_locations_maximal_items from .. import options from ..mods.mod_data import ModNames diff --git a/worlds/stardew_valley/test/TestFishsanity.py b/worlds/stardew_valley/test/TestFishsanity.py index c5d87c0f8dd7..953255c4d077 100644 --- a/worlds/stardew_valley/test/TestFishsanity.py +++ b/worlds/stardew_valley/test/TestFishsanity.py @@ -1,8 +1,8 @@ import unittest from typing import ClassVar, Set -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from ..content.feature import fishsanity from ..mods.mod_data import ModNames from ..options import Fishsanity, ExcludeGingerIsland, Mods, SpecialOrderLocations, Goal, QuestLocations diff --git a/worlds/stardew_valley/test/TestFriendsanity.py b/worlds/stardew_valley/test/TestFriendsanity.py index 842c0edd0980..a346df7d2aec 100644 --- a/worlds/stardew_valley/test/TestFriendsanity.py +++ b/worlds/stardew_valley/test/TestFriendsanity.py @@ -2,7 +2,7 @@ from collections import Counter from typing import ClassVar, Set -from . import SVTestBase +from .bases import SVTestBase from ..content.feature import friendsanity from ..options import Friendsanity, FriendsanityHeartSize diff --git a/worlds/stardew_valley/test/TestGeneration.py b/worlds/stardew_valley/test/TestGeneration.py index 6d0846f8c1d5..1e843ea69094 100644 --- a/worlds/stardew_valley/test/TestGeneration.py +++ b/worlds/stardew_valley/test/TestGeneration.py @@ -1,7 +1,7 @@ from typing import List from BaseClasses import ItemClassification, Item -from . import SVTestBase +from .bases import SVTestBase from .. import location_table, options, items from ..items import Group, ItemData, item_data from ..locations import LocationTags diff --git a/worlds/stardew_valley/test/TestItemLink.py b/worlds/stardew_valley/test/TestItemLink.py index f1c8346142ad..c3029b60704d 100644 --- a/worlds/stardew_valley/test/TestItemLink.py +++ b/worlds/stardew_valley/test/TestItemLink.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import options, item_table, Group max_iterations = 2000 diff --git a/worlds/stardew_valley/test/TestItems.py b/worlds/stardew_valley/test/TestItems.py index 1d6f9689553b..d4fa9e832a8e 100644 --- a/worlds/stardew_valley/test/TestItems.py +++ b/worlds/stardew_valley/test/TestItems.py @@ -1,5 +1,5 @@ from BaseClasses import MultiWorld, get_seed, ItemClassification -from . import setup_solo_multiworld, SVTestCase, solo_multiworld +from .bases import SVTestCase, solo_multiworld, setup_solo_multiworld from .options.presets import allsanity_no_mods_6_x_x, get_minsanity_options from .. import StardewValleyWorld from ..items import Group, item_table diff --git a/worlds/stardew_valley/test/TestLogic.py b/worlds/stardew_valley/test/TestLogic.py index 7a6b81ea7402..047e0226c6e0 100644 --- a/worlds/stardew_valley/test/TestLogic.py +++ b/worlds/stardew_valley/test/TestLogic.py @@ -3,8 +3,8 @@ from unittest import TestCase, SkipTest from BaseClasses import MultiWorld -from . import setup_solo_multiworld from .assertion import RuleAssertMixin +from .bases import setup_solo_multiworld from .options.presets import allsanity_mods_6_x_x, minimal_locations_maximal_items from .. import StardewValleyWorld from ..data.bundle_data import all_bundle_items_except_money diff --git a/worlds/stardew_valley/test/TestMultiplePlayers.py b/worlds/stardew_valley/test/TestMultiplePlayers.py index d8db616f66f4..3b5710559548 100644 --- a/worlds/stardew_valley/test/TestMultiplePlayers.py +++ b/worlds/stardew_valley/test/TestMultiplePlayers.py @@ -1,4 +1,4 @@ -from . import SVTestCase, setup_multiworld +from .bases import SVTestCase, setup_multiworld from .. import True_ from ..options import FestivalLocations, StartingMoney from ..strings.festival_check_names import FestivalCheck diff --git a/worlds/stardew_valley/test/TestNumberLocations.py b/worlds/stardew_valley/test/TestNumberLocations.py index 2ed528086ab8..dd57a5e39b7b 100644 --- a/worlds/stardew_valley/test/TestNumberLocations.py +++ b/worlds/stardew_valley/test/TestNumberLocations.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .options.presets import default_6_x_x, allsanity_no_mods_6_x_x, allsanity_mods_6_x_x_exclude_disabled, get_minsanity_options, \ minimal_locations_maximal_items, minimal_locations_maximal_items_with_island from .. import location_table diff --git a/worlds/stardew_valley/test/TestOptionFlags.py b/worlds/stardew_valley/test/TestOptionFlags.py index 2833649e35fa..d93015756486 100644 --- a/worlds/stardew_valley/test/TestOptionFlags.py +++ b/worlds/stardew_valley/test/TestOptionFlags.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import BuildingProgression from ..options import ToolProgression diff --git a/worlds/stardew_valley/test/TestOptions.py b/worlds/stardew_valley/test/TestOptions.py index 11b0a0141533..738753fe8362 100644 --- a/worlds/stardew_valley/test/TestOptions.py +++ b/worlds/stardew_valley/test/TestOptions.py @@ -3,8 +3,8 @@ from BaseClasses import ItemClassification from test.param import classvar_matrix -from . import SVTestCase, solo_multiworld, SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestCase, SVTestBase, solo_multiworld from .options.option_names import all_option_choices from .options.presets import allsanity_no_mods_6_x_x, allsanity_mods_6_x_x from .. import items_by_group, Group diff --git a/worlds/stardew_valley/test/TestOptionsPairs.py b/worlds/stardew_valley/test/TestOptionsPairs.py index d489ab1ff282..addd748c424c 100644 --- a/worlds/stardew_valley/test/TestOptionsPairs.py +++ b/worlds/stardew_valley/test/TestOptionsPairs.py @@ -1,5 +1,5 @@ -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options diff --git a/worlds/stardew_valley/test/TestRandomWorlds.py b/worlds/stardew_valley/test/TestRandomWorlds.py index 550ae14b5520..0c4ad6ae2999 100644 --- a/worlds/stardew_valley/test/TestRandomWorlds.py +++ b/worlds/stardew_valley/test/TestRandomWorlds.py @@ -2,8 +2,8 @@ from BaseClasses import MultiWorld, get_seed from test.param import classvar_matrix -from . import SVTestCase, skip_long_tests, solo_multiworld from .assertion import GoalAssertMixin, OptionAssertMixin, WorldAssertMixin +from .bases import skip_long_tests, SVTestCase, solo_multiworld from .options.option_names import generate_random_world_options diff --git a/worlds/stardew_valley/test/TestRegions.py b/worlds/stardew_valley/test/TestRegions.py index bd1b67297473..07e3094fb2e2 100644 --- a/worlds/stardew_valley/test/TestRegions.py +++ b/worlds/stardew_valley/test/TestRegions.py @@ -3,7 +3,7 @@ from typing import Set from BaseClasses import get_seed -from . import SVTestCase +from .bases import SVTestCase from .options.utils import fill_dataclass_with_default from .. import create_content from ..options import EntranceRandomization, ExcludeGingerIsland, SkillProgression diff --git a/worlds/stardew_valley/test/TestStartInventory.py b/worlds/stardew_valley/test/TestStartInventory.py index dc44a1bb4598..43ee0e132961 100644 --- a/worlds/stardew_valley/test/TestStartInventory.py +++ b/worlds/stardew_valley/test/TestStartInventory.py @@ -1,5 +1,5 @@ -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options diff --git a/worlds/stardew_valley/test/TestTraps.py b/worlds/stardew_valley/test/TestTraps.py index 9df07a6d74c8..130674a35da4 100644 --- a/worlds/stardew_valley/test/TestTraps.py +++ b/worlds/stardew_valley/test/TestTraps.py @@ -1,7 +1,7 @@ import unittest -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options, items_by_group, Group from ..options import TrapDistribution @@ -119,4 +119,3 @@ def test_omitted_item_same_as_nudge_in_item_pool(self): self.assertLess(num_bark, num_debris - threshold_difference) self.assertGreater(num_meow, num_time_flies + threshold_difference) self.assertGreater(num_meow, num_debris + threshold_difference) - diff --git a/worlds/stardew_valley/test/TestWalnutsanity.py b/worlds/stardew_valley/test/TestWalnutsanity.py index 5cc2f79e91bc..e3411edd0224 100644 --- a/worlds/stardew_valley/test/TestWalnutsanity.py +++ b/worlds/stardew_valley/test/TestWalnutsanity.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from ..options import ExcludeGingerIsland, Walnutsanity, ToolProgression, SkillProgression from ..strings.ap_names.ap_option_names import WalnutsanityOptionName diff --git a/worlds/stardew_valley/test/__init__.py b/worlds/stardew_valley/test/__init__.py index 6a8011a37d5f..e69de29bb2d1 100644 --- a/worlds/stardew_valley/test/__init__.py +++ b/worlds/stardew_valley/test/__init__.py @@ -1,308 +0,0 @@ -import itertools -import logging -import os -import threading -import unittest -from contextlib import contextmanager -from typing import Dict, ClassVar, Iterable, Tuple, Optional, List, Union, Any - -from BaseClasses import MultiWorld, CollectionState, get_seed, Location, Item -from test.bases import WorldTestBase -from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld -from worlds.AutoWorld import call_all -from .assertion import RuleAssertMixin -from .options.utils import fill_namespace_with_default, parse_class_option_keys, fill_dataclass_with_default -from .. import StardewValleyWorld, StardewItem, StardewRule -from ..logic.time_logic import MONTH_COEFFICIENT -from ..options import StardewValleyOption, options - -logger = logging.getLogger(__name__) - -DEFAULT_TEST_SEED = get_seed() -logger.info(f"Default Test Seed: {DEFAULT_TEST_SEED}") - - -def skip_default_tests() -> bool: - return not bool(os.environ.get("base", False)) - - -def skip_long_tests() -> bool: - return not bool(os.environ.get("long", False)) - - -class SVTestCase(unittest.TestCase): - skip_default_tests: bool = skip_default_tests() - """Set False to not skip the base fill tests""" - skip_long_tests: bool = skip_long_tests() - """Set False to run tests that take long""" - - @contextmanager - def solo_world_sub_test(self, msg: Optional[str] = None, - /, - world_options: Optional[Dict[Union[str, StardewValleyOption], Any]] = None, - *, - seed=DEFAULT_TEST_SEED, - world_caching=True, - **kwargs) -> Tuple[MultiWorld, StardewValleyWorld]: - if msg is not None: - msg += " " - else: - msg = "" - msg += f"[Seed = {seed}]" - - with self.subTest(msg, **kwargs): - with solo_multiworld(world_options, seed=seed, world_caching=world_caching) as (multiworld, world): - yield multiworld, world - - -class SVTestBase(RuleAssertMixin, WorldTestBase, SVTestCase): - game = "Stardew Valley" - world: StardewValleyWorld - player: ClassVar[int] = 1 - - seed = DEFAULT_TEST_SEED - - @classmethod - def setUpClass(cls) -> None: - if cls is SVTestBase: - raise unittest.SkipTest("No running tests on SVTestBase import.") - - super().setUpClass() - - def world_setup(self, *args, **kwargs): - self.options = parse_class_option_keys(self.options) - - self.multiworld = setup_solo_multiworld(self.options, seed=self.seed) - self.multiworld.lock.acquire() - world = self.multiworld.worlds[self.player] - - self.original_state = self.multiworld.state.copy() - self.original_itempool = self.multiworld.itempool.copy() - self.unfilled_locations = self.multiworld.get_unfilled_locations(1) - if self.constructed: - self.world = world # noqa - - def tearDown(self) -> None: - self.multiworld.state = self.original_state - self.multiworld.itempool = self.original_itempool - for location in self.unfilled_locations: - location.item = None - - self.multiworld.lock.release() - - @property - def run_default_tests(self) -> bool: - if self.skip_default_tests: - return False - return super().run_default_tests - - def collect_months(self, months: int) -> None: - real_total_prog_items = self.world.total_progression_items - percent = months * MONTH_COEFFICIENT - self.collect("Stardrop", real_total_prog_items * 100 // percent) - self.world.total_progression_items = real_total_prog_items - - def collect_lots_of_money(self, percent: float = 0.25): - self.collect("Shipping Bin") - real_total_prog_items = self.world.total_progression_items - required_prog_items = int(round(real_total_prog_items * percent)) - self.collect("Stardrop", required_prog_items) - - def collect_all_the_money(self): - self.collect_lots_of_money(0.95) - - def collect_everything(self): - non_event_items = [item for item in self.multiworld.get_items() if item.code] - for item in non_event_items: - self.multiworld.state.collect(item) - - def collect_all_except(self, item_to_not_collect: str): - non_event_items = [item for item in self.multiworld.get_items() if item.code] - for item in non_event_items: - if item.name != item_to_not_collect: - self.multiworld.state.collect(item) - - def get_real_locations(self) -> List[Location]: - return [location for location in self.multiworld.get_locations(self.player) if location.address is not None] - - def get_real_location_names(self) -> List[str]: - return [location.name for location in self.get_real_locations()] - - def collect(self, item: Union[str, Item, Iterable[Item]], count: int = 1) -> Union[None, Item, List[Item]]: - assert count > 0 - - if not isinstance(item, str): - super().collect(item) - return - - if count == 1: - item = self.create_item(item) - self.multiworld.state.collect(item) - return item - - items = [] - for i in range(count): - item = self.create_item(item) - self.multiworld.state.collect(item) - items.append(item) - - return items - - def create_item(self, item: str) -> StardewItem: - return self.world.create_item(item) - - def get_all_created_items(self) -> list[str]: - return [item.name for item in itertools.chain(self.multiworld.get_items(), self.multiworld.precollected_items[self.player])] - - def remove_one_by_name(self, item: str) -> None: - self.remove(self.create_item(item)) - - def reset_collection_state(self) -> None: - self.multiworld.state = self.original_state.copy() - - def assert_rule_true(self, rule: StardewRule, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_rule_true(rule, state) - - def assert_rule_false(self, rule: StardewRule, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_rule_false(rule, state) - - def assert_can_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_can_reach_location(location, state) - - def assert_cannot_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_cannot_reach_location(location, state) - - -pre_generated_worlds = {} - - -@contextmanager -def solo_multiworld(world_options: Optional[Dict[Union[str, StardewValleyOption], Any]] = None, - *, - seed=DEFAULT_TEST_SEED, - world_caching=True) -> Tuple[MultiWorld, StardewValleyWorld]: - if not world_caching: - multiworld = setup_solo_multiworld(world_options, seed, _cache={}) - yield multiworld, multiworld.worlds[1] - else: - multiworld = setup_solo_multiworld(world_options, seed) - try: - multiworld.lock.acquire() - world = multiworld.worlds[1] - - original_state = multiworld.state.copy() - original_itempool = multiworld.itempool.copy() - unfilled_locations = multiworld.get_unfilled_locations(1) - - yield multiworld, world - - multiworld.state = original_state - multiworld.itempool = original_itempool - for location in unfilled_locations: - location.item = None - finally: - multiworld.lock.release() - - -# Mostly a copy of test.general.setup_solo_multiworld, I just don't want to change the core. -def setup_solo_multiworld(test_options: Optional[Dict[Union[str, StardewValleyOption], str]] = None, - seed=DEFAULT_TEST_SEED, - _cache: Dict[frozenset, MultiWorld] = {}, # noqa - _steps=gen_steps) -> MultiWorld: - test_options = parse_class_option_keys(test_options) - - # Yes I reuse the worlds generated between tests, its speeds the execution by a couple seconds - # If the simple dict caching ends up taking too much memory, we could replace it with some kind of lru cache. - should_cache = should_cache_world(test_options) - if should_cache: - frozen_options = make_hashable(test_options, seed) - cached_multi_world = search_world_cache(_cache, frozen_options) - if cached_multi_world: - print(f"Using cached solo multi world [Seed = {cached_multi_world.seed}] [Cache size = {len(_cache)}]") - return cached_multi_world - - multiworld = setup_base_solo_multiworld(StardewValleyWorld, (), seed=seed) - # print(f"Seed: {multiworld.seed}") # Uncomment to print the seed for every test - - args = fill_namespace_with_default(test_options) - multiworld.set_options(args) - - if "start_inventory" in test_options: - for item, amount in test_options["start_inventory"].items(): - for _ in range(amount): - multiworld.push_precollected(multiworld.create_item(item, 1)) - - for step in _steps: - call_all(multiworld, step) - - if should_cache: - add_to_world_cache(_cache, frozen_options, multiworld) # noqa - - # Lock is needed for multi-threading tests - setattr(multiworld, "lock", threading.Lock()) - - return multiworld - - -def should_cache_world(test_options): - if "start_inventory" in test_options: - return False - - trap_distribution_key = "trap_distribution" - if trap_distribution_key not in test_options: - return True - - trap_distribution = test_options[trap_distribution_key] - for key in trap_distribution: - if trap_distribution[key] != options.TrapDistribution.default_weight: - return False - - return True - - - -def make_hashable(test_options, seed): - return frozenset(test_options.items()).union({("seed", seed)}) - - -def search_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset) -> Optional[MultiWorld]: - try: - return cache[frozen_options] - except KeyError: - for cached_options, multi_world in cache.items(): - if frozen_options.issubset(cached_options): - return multi_world - return None - - -def add_to_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset, multi_world: MultiWorld) -> None: - # We could complete the key with all the default options, but that does not seem to improve performances. - cache[frozen_options] = multi_world - - -def setup_multiworld(test_options: Iterable[Dict[str, int]] = None, seed=None) -> MultiWorld: # noqa - if test_options is None: - test_options = [] - - multiworld = MultiWorld(len(test_options)) - multiworld.player_name = {} - multiworld.set_seed(seed) - multiworld.state = CollectionState(multiworld) - for i in range(1, len(test_options) + 1): - multiworld.game[i] = StardewValleyWorld.game - multiworld.player_name.update({i: f"Tester{i}"}) - args = fill_namespace_with_default(test_options) - multiworld.set_options(args) - - for step in gen_steps: - call_all(multiworld, step) - - return multiworld diff --git a/worlds/stardew_valley/test/bases.py b/worlds/stardew_valley/test/bases.py new file mode 100644 index 000000000000..64ada395682c --- /dev/null +++ b/worlds/stardew_valley/test/bases.py @@ -0,0 +1,306 @@ +import itertools +import logging +import os +import threading +import typing +import unittest +from contextlib import contextmanager +from typing import Optional, Dict, Union, Any, List, Iterable + +from BaseClasses import get_seed, MultiWorld, Location, Item, CollectionState +from test.bases import WorldTestBase +from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld +from worlds.AutoWorld import call_all +from .assertion import RuleAssertMixin +from .options.utils import parse_class_option_keys, fill_namespace_with_default +from .. import StardewValleyWorld, StardewItem, StardewRule +from ..logic.time_logic import MONTH_COEFFICIENT +from ..options import StardewValleyOption, options + +logger = logging.getLogger(__name__) +DEFAULT_TEST_SEED = get_seed() +logger.info(f"Default Test Seed: {DEFAULT_TEST_SEED}") + + +def skip_default_tests() -> bool: + return not bool(os.environ.get("base", False)) + + +def skip_long_tests() -> bool: + return not bool(os.environ.get("long", False)) + + +class SVTestCase(unittest.TestCase): + skip_default_tests: bool = skip_default_tests() + """Set False to not skip the base fill tests""" + skip_long_tests: bool = skip_long_tests() + """Set False to run tests that take long""" + + @contextmanager + def solo_world_sub_test(self, msg: str | None = None, + /, + world_options: dict[str | type[StardewValleyOption], Any] | None = None, + *, + seed=DEFAULT_TEST_SEED, + world_caching=True, + **kwargs) -> Iterable[tuple[MultiWorld, StardewValleyWorld]]: + if msg is not None: + msg += " " + else: + msg = "" + msg += f"[Seed = {seed}]" + + with self.subTest(msg, **kwargs): + with solo_multiworld(world_options, seed=seed, world_caching=world_caching) as (multiworld, world): + yield multiworld, world + + +class SVTestBase(RuleAssertMixin, WorldTestBase, SVTestCase): + game = "Stardew Valley" + world: StardewValleyWorld + + seed = DEFAULT_TEST_SEED + + @classmethod + def setUpClass(cls) -> None: + if cls is SVTestBase: + raise unittest.SkipTest("No running tests on SVTestBase import.") + + super().setUpClass() + + def world_setup(self, *args, **kwargs): + self.options = parse_class_option_keys(self.options) + + self.multiworld = setup_solo_multiworld(self.options, seed=self.seed) + self.multiworld.lock.acquire() + world = self.multiworld.worlds[self.player] + + self.original_state = self.multiworld.state.copy() + self.original_itempool = self.multiworld.itempool.copy() + self.unfilled_locations = self.multiworld.get_unfilled_locations(1) + if self.constructed: + self.world = world # noqa + + def tearDown(self) -> None: + self.multiworld.state = self.original_state + self.multiworld.itempool = self.original_itempool + for location in self.unfilled_locations: + location.item = None + + self.multiworld.lock.release() + + @property + def run_default_tests(self) -> bool: + if self.skip_default_tests: + return False + return super().run_default_tests + + def collect_months(self, months: int) -> None: + real_total_prog_items = self.world.total_progression_items + percent = months * MONTH_COEFFICIENT + self.collect("Stardrop", real_total_prog_items * 100 // percent) + self.world.total_progression_items = real_total_prog_items + + def collect_lots_of_money(self, percent: float = 0.25): + self.collect("Shipping Bin") + real_total_prog_items = self.world.total_progression_items + required_prog_items = int(round(real_total_prog_items * percent)) + self.collect("Stardrop", required_prog_items) + + def collect_all_the_money(self): + self.collect_lots_of_money(0.95) + + def collect_everything(self): + non_event_items = [item for item in self.multiworld.get_items() if item.code] + for item in non_event_items: + self.multiworld.state.collect(item) + + def collect_all_except(self, item_to_not_collect: str): + non_event_items = [item for item in self.multiworld.get_items() if item.code] + for item in non_event_items: + if item.name != item_to_not_collect: + self.multiworld.state.collect(item) + + def get_real_locations(self) -> List[Location]: + return [location for location in self.multiworld.get_locations(self.player) if location.address is not None] + + def get_real_location_names(self) -> List[str]: + return [location.name for location in self.get_real_locations()] + + def collect(self, item: Union[str, Item, Iterable[Item]], count: int = 1) -> Union[None, Item, List[Item]]: + assert count > 0 + + if not isinstance(item, str): + super().collect(item) + return + + if count == 1: + item = self.create_item(item) + self.multiworld.state.collect(item) + return item + + items = [] + for i in range(count): + item = self.create_item(item) + self.multiworld.state.collect(item) + items.append(item) + + return items + + def create_item(self, item: str) -> StardewItem: + return self.world.create_item(item) + + def get_all_created_items(self) -> list[str]: + return [item.name for item in itertools.chain(self.multiworld.get_items(), self.multiworld.precollected_items[self.player])] + + def remove_one_by_name(self, item: str) -> None: + self.remove(self.create_item(item)) + + def reset_collection_state(self) -> None: + self.multiworld.state = self.original_state.copy() + + def assert_rule_true(self, rule: StardewRule, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_rule_true(rule, state) + + def assert_rule_false(self, rule: StardewRule, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_rule_false(rule, state) + + def assert_can_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_can_reach_location(location, state) + + def assert_cannot_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_cannot_reach_location(location, state) + + +pre_generated_worlds = {} + + +@contextmanager +def solo_multiworld(world_options: dict[str | type[StardewValleyOption], Any] | None = None, + *, + seed=DEFAULT_TEST_SEED, + world_caching=True) -> Iterable[tuple[MultiWorld, StardewValleyWorld]]: + if not world_caching: + multiworld = setup_solo_multiworld(world_options, seed, _cache={}) + yield multiworld, typing.cast(StardewValleyWorld, multiworld.worlds[1]) + else: + multiworld = setup_solo_multiworld(world_options, seed) + try: + multiworld.lock.acquire() + world = multiworld.worlds[1] + + original_state = multiworld.state.copy() + original_itempool = multiworld.itempool.copy() + unfilled_locations = multiworld.get_unfilled_locations(1) + + yield multiworld, typing.cast(StardewValleyWorld, world) + + multiworld.state = original_state + multiworld.itempool = original_itempool + for location in unfilled_locations: + location.item = None + finally: + multiworld.lock.release() + + +# Mostly a copy of test.general.setup_solo_multiworld, I just don't want to change the core. +def setup_solo_multiworld(test_options: Optional[Dict[Union[str, StardewValleyOption], str]] = None, + seed=DEFAULT_TEST_SEED, + _cache: Dict[frozenset, MultiWorld] = {}, # noqa + _steps=gen_steps) -> MultiWorld: + test_options = parse_class_option_keys(test_options) + + # Yes I reuse the worlds generated between tests, its speeds the execution by a couple seconds + # If the simple dict caching ends up taking too much memory, we could replace it with some kind of lru cache. + should_cache = should_cache_world(test_options) + if should_cache: + frozen_options = make_hashable(test_options, seed) + cached_multi_world = search_world_cache(_cache, frozen_options) + if cached_multi_world: + print(f"Using cached solo multi world [Seed = {cached_multi_world.seed}] [Cache size = {len(_cache)}]") + return cached_multi_world + + multiworld = setup_base_solo_multiworld(StardewValleyWorld, (), seed=seed) + # print(f"Seed: {multiworld.seed}") # Uncomment to print the seed for every test + + args = fill_namespace_with_default(test_options) + multiworld.set_options(args) + + if "start_inventory" in test_options: + for item, amount in test_options["start_inventory"].items(): + for _ in range(amount): + multiworld.push_precollected(multiworld.create_item(item, 1)) + + for step in _steps: + call_all(multiworld, step) + + if should_cache: + add_to_world_cache(_cache, frozen_options, multiworld) # noqa + + # Lock is needed for multi-threading tests + setattr(multiworld, "lock", threading.Lock()) + + return multiworld + + +def should_cache_world(test_options): + if "start_inventory" in test_options: + return False + + trap_distribution_key = "trap_distribution" + if trap_distribution_key not in test_options: + return True + + trap_distribution = test_options[trap_distribution_key] + for key in trap_distribution: + if trap_distribution[key] != options.TrapDistribution.default_weight: + return False + + return True + + +def make_hashable(test_options, seed): + return frozenset(test_options.items()).union({("seed", seed)}) + + +def search_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset) -> Optional[MultiWorld]: + try: + return cache[frozen_options] + except KeyError: + for cached_options, multi_world in cache.items(): + if frozen_options.issubset(cached_options): + return multi_world + return None + + +def add_to_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset, multi_world: MultiWorld) -> None: + # We could complete the key with all the default options, but that does not seem to improve performances. + cache[frozen_options] = multi_world + + +def setup_multiworld(test_options: Iterable[Dict[str, int]] = None, seed=None) -> MultiWorld: # noqa + if test_options is None: + test_options = [] + + multiworld = MultiWorld(len(test_options)) + multiworld.player_name = {} + multiworld.set_seed(seed) + multiworld.state = CollectionState(multiworld) + for i in range(1, len(test_options) + 1): + multiworld.game[i] = StardewValleyWorld.game + multiworld.player_name.update({i: f"Tester{i}"}) + args = fill_namespace_with_default(test_options) + multiworld.set_options(args) + + for step in gen_steps: + call_all(multiworld, step) + + return multiworld diff --git a/worlds/stardew_valley/test/content/TestGingerIsland.py b/worlds/stardew_valley/test/content/TestGingerIsland.py index 7e7f866dfc8e..c1f16b48c4f8 100644 --- a/worlds/stardew_valley/test/content/TestGingerIsland.py +++ b/worlds/stardew_valley/test/content/TestGingerIsland.py @@ -1,5 +1,5 @@ from . import SVContentPackTestBase -from .. import SVTestBase +from ..bases import SVTestBase from ... import options from ...content import content_packs from ...data.artisan import MachineSource diff --git a/worlds/stardew_valley/test/content/mods/TestSVE.py b/worlds/stardew_valley/test/content/mods/TestSVE.py index 4065498d6be7..7cd0a822a152 100644 --- a/worlds/stardew_valley/test/content/mods/TestSVE.py +++ b/worlds/stardew_valley/test/content/mods/TestSVE.py @@ -1,5 +1,5 @@ from .. import SVContentPackTestBase -from ... import SVTestBase +from ...bases import SVTestBase from .... import options from ....content import content_packs from ....mods.mod_data import ModNames diff --git a/worlds/stardew_valley/test/long/TestModsLong.py b/worlds/stardew_valley/test/long/TestModsLong.py index bc5e8bfff8ac..d14af8bc5501 100644 --- a/worlds/stardew_valley/test/long/TestModsLong.py +++ b/worlds/stardew_valley/test/long/TestModsLong.py @@ -4,8 +4,8 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestCase, solo_multiworld, skip_long_tests from ..assertion import WorldAssertMixin, ModAssertMixin +from ..bases import skip_long_tests, SVTestCase, solo_multiworld from ..options.option_names import all_option_choices from ... import options from ...mods.mod_data import ModNames diff --git a/worlds/stardew_valley/test/long/TestOptionsLong.py b/worlds/stardew_valley/test/long/TestOptionsLong.py index db467964e7c4..3c9690e2e6bf 100644 --- a/worlds/stardew_valley/test/long/TestOptionsLong.py +++ b/worlds/stardew_valley/test/long/TestOptionsLong.py @@ -4,8 +4,8 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestCase, solo_multiworld, skip_long_tests from ..assertion.world_assert import WorldAssertMixin +from ..bases import skip_long_tests, SVTestCase, solo_multiworld from ..options.option_names import all_option_choices from ... import options diff --git a/worlds/stardew_valley/test/long/TestPreRolledRandomness.py b/worlds/stardew_valley/test/long/TestPreRolledRandomness.py index 3b6f818ec43c..3d3e0da13bf7 100644 --- a/worlds/stardew_valley/test/long/TestPreRolledRandomness.py +++ b/worlds/stardew_valley/test/long/TestPreRolledRandomness.py @@ -3,8 +3,8 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestCase, solo_multiworld, skip_long_tests from ..assertion import WorldAssertMixin +from ..bases import skip_long_tests, SVTestCase, solo_multiworld from ... import options if skip_long_tests(): diff --git a/worlds/stardew_valley/test/mods/TestBiggerBackpack.py b/worlds/stardew_valley/test/mods/TestBiggerBackpack.py index f6d312976c45..8ec2e539b7e1 100644 --- a/worlds/stardew_valley/test/mods/TestBiggerBackpack.py +++ b/worlds/stardew_valley/test/mods/TestBiggerBackpack.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ...mods.mod_data import ModNames from ...options import Mods, BackpackProgression diff --git a/worlds/stardew_valley/test/mods/TestMods.py b/worlds/stardew_valley/test/mods/TestMods.py index bd5d7d626dfc..be6ce710768d 100644 --- a/worlds/stardew_valley/test/mods/TestMods.py +++ b/worlds/stardew_valley/test/mods/TestMods.py @@ -3,9 +3,9 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestBase, SVTestCase, solo_multiworld from ..TestGeneration import get_all_permanent_progression_items from ..assertion import ModAssertMixin, WorldAssertMixin +from ..bases import SVTestCase, SVTestBase, solo_multiworld from ..options.presets import allsanity_mods_6_x_x from ..options.utils import fill_dataclass_with_default from ... import options, Group, create_content diff --git a/worlds/stardew_valley/test/mods/TestModsFill.py b/worlds/stardew_valley/test/mods/TestModsFill.py index a140f5abae14..334a4ff9e47d 100644 --- a/worlds/stardew_valley/test/mods/TestModsFill.py +++ b/worlds/stardew_valley/test/mods/TestModsFill.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ... import options diff --git a/worlds/stardew_valley/test/mods/TestSVE.py b/worlds/stardew_valley/test/mods/TestSVE.py index ca63dcb351aa..a6b6f6a3dc99 100644 --- a/worlds/stardew_valley/test/mods/TestSVE.py +++ b/worlds/stardew_valley/test/mods/TestSVE.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ... import options from ...mods.mod_data import ModNames from ...strings.ap_names.mods.mod_items import SVEQuestItem diff --git a/worlds/stardew_valley/test/options/TestPresets.py b/worlds/stardew_valley/test/options/TestPresets.py index 5d9e89531c87..5c1cee4a58b9 100644 --- a/worlds/stardew_valley/test/options/TestPresets.py +++ b/worlds/stardew_valley/test/options/TestPresets.py @@ -1,5 +1,5 @@ from Options import PerGameCommonOptions, OptionSet, OptionDict -from .. import SVTestCase +from ..bases import SVTestCase from ...options import StardewValleyOptions, TrapItems from ...options.presets import sv_options_presets diff --git a/worlds/stardew_valley/test/performance/TestPerformance.py b/worlds/stardew_valley/test/performance/TestPerformance.py index ca63ee5e2c73..2951e6d00a70 100644 --- a/worlds/stardew_valley/test/performance/TestPerformance.py +++ b/worlds/stardew_valley/test/performance/TestPerformance.py @@ -8,7 +8,7 @@ from BaseClasses import get_seed from Fill import distribute_items_restrictive, balance_multiworld_progression from worlds import AutoWorld -from .. import SVTestCase, setup_multiworld +from ..bases import SVTestCase, setup_multiworld from ..options.presets import default_6_x_x, allsanity_no_mods_6_x_x, allsanity_mods_6_x_x, minimal_locations_maximal_items assert default_6_x_x diff --git a/worlds/stardew_valley/test/rules/TestArcades.py b/worlds/stardew_valley/test/rules/TestArcades.py index 5fdf7df13d5d..407f299992c3 100644 --- a/worlds/stardew_valley/test/rules/TestArcades.py +++ b/worlds/stardew_valley/test/rules/TestArcades.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ... import options -from ...test import SVTestBase class TestArcadeMachinesLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestBooks.py b/worlds/stardew_valley/test/rules/TestBooks.py index 4cd84a77a278..eb26b2744492 100644 --- a/worlds/stardew_valley/test/rules/TestBooks.py +++ b/worlds/stardew_valley/test/rules/TestBooks.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ... import options -from ...test import SVTestBase class TestBooksLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestBuildings.py b/worlds/stardew_valley/test/rules/TestBuildings.py index 8eeb9d295af1..0b1f41d2c56b 100644 --- a/worlds/stardew_valley/test/rules/TestBuildings.py +++ b/worlds/stardew_valley/test/rules/TestBuildings.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ...options import BuildingProgression, FarmType -from ...test import SVTestBase class TestBuildingLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestBundles.py b/worlds/stardew_valley/test/rules/TestBundles.py index 918cb8aba6a7..357269a25ba0 100644 --- a/worlds/stardew_valley/test/rules/TestBundles.py +++ b/worlds/stardew_valley/test/rules/TestBundles.py @@ -1,7 +1,7 @@ +from ..bases import SVTestBase from ... import options from ...options import BundleRandomization from ...strings.bundle_names import BundleName -from ...test import SVTestBase class TestBundlesLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestCookingRecipes.py b/worlds/stardew_valley/test/rules/TestCookingRecipes.py index b3aafdb690a3..b468a72d4117 100644 --- a/worlds/stardew_valley/test/rules/TestCookingRecipes.py +++ b/worlds/stardew_valley/test/rules/TestCookingRecipes.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ... import options from ...options import BuildingProgression, ExcludeGingerIsland, Chefsanity -from ...test import SVTestBase class TestRecipeLearnLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestCraftingRecipes.py b/worlds/stardew_valley/test/rules/TestCraftingRecipes.py index 94d6bc145ae2..f875dc539d46 100644 --- a/worlds/stardew_valley/test/rules/TestCraftingRecipes.py +++ b/worlds/stardew_valley/test/rules/TestCraftingRecipes.py @@ -1,7 +1,7 @@ +from ..bases import SVTestBase from ... import options from ...data.craftable_data import all_crafting_recipes_by_name from ...options import BuildingProgression, ExcludeGingerIsland, Craftsanity, SeasonRandomization -from ...test import SVTestBase class TestCraftsanityLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestDonations.py b/worlds/stardew_valley/test/rules/TestDonations.py index d50f87d3e9a6..2cddcad39521 100644 --- a/worlds/stardew_valley/test/rules/TestDonations.py +++ b/worlds/stardew_valley/test/rules/TestDonations.py @@ -1,8 +1,8 @@ +from ..bases import SVTestBase from ... import options from ...locations import locations_by_tag, LocationTags, location_table from ...strings.entrance_names import Entrance from ...strings.region_names import Region -from ...test import SVTestBase class TestDonationLogicAll(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestFishing.py b/worlds/stardew_valley/test/rules/TestFishing.py index 6a6a4bb3159d..3649592301c4 100644 --- a/worlds/stardew_valley/test/rules/TestFishing.py +++ b/worlds/stardew_valley/test/rules/TestFishing.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ...options import SeasonRandomization, Fishsanity, ExcludeGingerIsland, SkillProgression, ToolProgression, ElevatorProgression, SpecialOrderLocations from ...strings.fish_names import Fish -from ...test import SVTestBase class TestNeedRegionToCatchFish(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestFriendship.py b/worlds/stardew_valley/test/rules/TestFriendship.py index 9cd3127aa355..dc5935580ad0 100644 --- a/worlds/stardew_valley/test/rules/TestFriendship.py +++ b/worlds/stardew_valley/test/rules/TestFriendship.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ...options import SeasonRandomization, Friendsanity, FriendsanityHeartSize -from ...test import SVTestBase class TestFriendsanityDatingRules(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestMuseum.py b/worlds/stardew_valley/test/rules/TestMuseum.py index 35dad8f43ebc..231bbafe2290 100644 --- a/worlds/stardew_valley/test/rules/TestMuseum.py +++ b/worlds/stardew_valley/test/rules/TestMuseum.py @@ -1,7 +1,7 @@ from collections import Counter +from ..bases import SVTestBase from ...options import Museumsanity -from .. import SVTestBase class TestMuseumMilestones(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestShipping.py b/worlds/stardew_valley/test/rules/TestShipping.py index fc61ae8e2a99..c1f29d934255 100644 --- a/worlds/stardew_valley/test/rules/TestShipping.py +++ b/worlds/stardew_valley/test/rules/TestShipping.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ...locations import LocationTags, location_table from ...options import BuildingProgression, Shipsanity -from ...test import SVTestBase class TestShipsanityNone(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestSkills.py b/worlds/stardew_valley/test/rules/TestSkills.py index a5957488a1a2..fd513a1becc7 100644 --- a/worlds/stardew_valley/test/rules/TestSkills.py +++ b/worlds/stardew_valley/test/rules/TestSkills.py @@ -1,7 +1,7 @@ +from ..bases import SVTestBase from ... import HasProgressionPercent, StardewLogic from ...options import ToolProgression, SkillProgression, Mods from ...strings.skill_names import all_skills, all_vanilla_skills, Skill -from ...test import SVTestBase class TestSkillProgressionVanilla(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestStateRules.py b/worlds/stardew_valley/test/rules/TestStateRules.py index db56e8220c05..57573c7f8b55 100644 --- a/worlds/stardew_valley/test/rules/TestStateRules.py +++ b/worlds/stardew_valley/test/rules/TestStateRules.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ..options.presets import allsanity_mods_6_x_x from ...stardew_rule import HasProgressionPercent diff --git a/worlds/stardew_valley/test/rules/TestTools.py b/worlds/stardew_valley/test/rules/TestTools.py index bda29e3d74c6..54b9ec8f2f26 100644 --- a/worlds/stardew_valley/test/rules/TestTools.py +++ b/worlds/stardew_valley/test/rules/TestTools.py @@ -1,6 +1,6 @@ from collections import Counter -from .. import SVTestBase +from ..bases import SVTestBase from ... import options from ...options import ToolProgression, SeasonRandomization from ...strings.entrance_names import Entrance diff --git a/worlds/stardew_valley/test/rules/TestWeapons.py b/worlds/stardew_valley/test/rules/TestWeapons.py index 383f26e841d2..e95e706ded12 100644 --- a/worlds/stardew_valley/test/rules/TestWeapons.py +++ b/worlds/stardew_valley/test/rules/TestWeapons.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ... import options from ...options import ToolProgression -from ...test import SVTestBase class TestWeaponsLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/script/benchmark_locations.py b/worlds/stardew_valley/test/script/benchmark_locations.py index 04553e39968e..3dcfc4dbebfb 100644 --- a/worlds/stardew_valley/test/script/benchmark_locations.py +++ b/worlds/stardew_valley/test/script/benchmark_locations.py @@ -15,8 +15,9 @@ from BaseClasses import CollectionState, Location from Utils import init_logging -from worlds.stardew_valley.stardew_rule.rule_explain import explain -from ... import test +from ..bases import setup_solo_multiworld +from ..options import presets +from ...stardew_rule.rule_explain import explain def run_locations_benchmark(): @@ -56,12 +57,12 @@ def main(self): parser.add_argument('--state', help="Define the state in which the location will be benchmarked.", type=str, default=None) args = parser.parse_args() options_set = args.options - options = getattr(test, options_set)() + options = getattr(presets, options_set)() seed = args.seed location = args.location state = args.state - multiworld = test.setup_solo_multiworld(options, seed) + multiworld = setup_solo_multiworld(options, seed) gc.collect() if location: diff --git a/worlds/stardew_valley/test/stability/StabilityOutputScript.py b/worlds/stardew_valley/test/stability/StabilityOutputScript.py index 9b4b608d4e0d..29fd90309511 100644 --- a/worlds/stardew_valley/test/stability/StabilityOutputScript.py +++ b/worlds/stardew_valley/test/stability/StabilityOutputScript.py @@ -1,7 +1,7 @@ import argparse import json -from .. import setup_solo_multiworld +from ..bases import setup_solo_multiworld from ..options.presets import allsanity_mods_6_x_x_exclude_disabled from ...options import FarmType, EntranceRandomization diff --git a/worlds/stardew_valley/test/stability/TestStability.py b/worlds/stardew_valley/test/stability/TestStability.py index b4d0f30ea51f..f3dfb9fdaae7 100644 --- a/worlds/stardew_valley/test/stability/TestStability.py +++ b/worlds/stardew_valley/test/stability/TestStability.py @@ -5,7 +5,7 @@ import unittest from BaseClasses import get_seed -from .. import SVTestCase +from ..bases import SVTestCase # at 0x102ca98a0> lambda_regex = re.compile(r"^ at (.*)>$") diff --git a/worlds/stardew_valley/test/stability/TestUniversalTracker.py b/worlds/stardew_valley/test/stability/TestUniversalTracker.py index 7590635aa193..301abfff22bc 100644 --- a/worlds/stardew_valley/test/stability/TestUniversalTracker.py +++ b/worlds/stardew_valley/test/stability/TestUniversalTracker.py @@ -1,9 +1,11 @@ import unittest from unittest.mock import Mock -from .. import SVTestBase, fill_namespace_with_default, skip_long_tests +from ..bases import skip_long_tests, SVTestBase from ..options.presets import allsanity_mods_6_x_x -from ... import STARDEW_VALLEY, FarmType, BundleRandomization, EntranceRandomization +from ..options.utils import fill_namespace_with_default +from ... import STARDEW_VALLEY +from ...options import FarmType, BundleRandomization, EntranceRandomization @unittest.skipIf(skip_long_tests(), "Long tests disabled") From 0994afa25bc393b3d68dbaffc2a79b9f9afd8b74 Mon Sep 17 00:00:00 2001 From: Ixrec Date: Tue, 13 May 2025 08:59:41 +0100 Subject: [PATCH 044/183] Tests: actually run tests in __init__.py files (#4969) * demonstrate our pytest/CI configuration missing a __init__ test failure * tell pytest/CI to run tests in __init__.py files * revert the demonstration test failure --------- Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> --- pytest.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytest.ini b/pytest.ini index cd8fd8dfce37..4469a7c30d64 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,5 +1,5 @@ [pytest] -python_files = test_*.py Test*.py # TODO: remove Test* once all worlds have been ported +python_files = test_*.py Test*.py __init__.py # TODO: remove Test* once all worlds have been ported python_classes = Test python_functions = test testpaths = From b71c8005e7b38e42fa76b27869b7b1862de21886 Mon Sep 17 00:00:00 2001 From: Duck <31627079+duckboycool@users.noreply.github.com> Date: Wed, 14 May 2025 05:18:36 -0600 Subject: [PATCH 045/183] AHiT: Fix Client Argument Handling (#4992) --- AHITClient.py | 3 ++- worlds/ahit/Client.py | 4 ++-- worlds/ahit/__init__.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/AHITClient.py b/AHITClient.py index 6ed7d7b49d48..edcbbd842e56 100644 --- a/AHITClient.py +++ b/AHITClient.py @@ -1,3 +1,4 @@ +import sys from worlds.ahit.Client import launch import Utils import ModuleUpdate @@ -5,4 +6,4 @@ if __name__ == "__main__": Utils.init_logging("AHITClient", exception_logger="Client") - launch() + launch(*sys.argv[1:]) diff --git a/worlds/ahit/Client.py b/worlds/ahit/Client.py index 0a9d8d6042a3..64c1124fa853 100644 --- a/worlds/ahit/Client.py +++ b/worlds/ahit/Client.py @@ -238,10 +238,10 @@ async def proxy_loop(ctx: AHITContext): logger.info("Aborting AHIT Proxy Client due to errors") -def launch(): +def launch(*launch_args: str): async def main(): parser = get_base_parser() - args = parser.parse_args() + args = parser.parse_args(launch_args) ctx = AHITContext(args.connect, args.password) logger.info("Starting A Hat in Time proxy server") diff --git a/worlds/ahit/__init__.py b/worlds/ahit/__init__.py index 16b54064c691..1bcc840ae6cb 100644 --- a/worlds/ahit/__init__.py +++ b/worlds/ahit/__init__.py @@ -16,9 +16,9 @@ from Utils import local_path -def launch_client(): +def launch_client(*args: str): from .Client import launch - launch_component(launch, name="AHITClient") + launch_component(launch, name="AHITClient", args=args) components.append(Component("A Hat in Time Client", "AHITClient", func=launch_client, From 72854cde44dff707109ad66e489fa100e7db18ee Mon Sep 17 00:00:00 2001 From: Ixrec Date: Wed, 14 May 2025 12:21:40 +0100 Subject: [PATCH 046/183] Docs: Add a "Missable Locations" Question to apworld FAQ (#4965) * Docs: add a "missable locations" question to apworld_dev_faq.md Basically turning the conversation at https://discord.com/channels/731205301247803413/1214608557077700720/1368996789260128388 into a FAQ entry. * feedback * qwint feedback * Update docs/apworld_dev_faq.md Co-authored-by: Scipio Wright --------- Co-authored-by: Scipio Wright --- docs/apworld_dev_faq.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/apworld_dev_faq.md b/docs/apworld_dev_faq.md index 50bee148c60e..6e1c102c6a36 100644 --- a/docs/apworld_dev_faq.md +++ b/docs/apworld_dev_faq.md @@ -122,3 +122,21 @@ Concrete examples of soft logic include: - Buying expensive shop items might logically require access to a place where you can quickly farm money, or logically require access to enough parts of the game that checking other locations should naturally generate enough money without grinding. Remember that all items referenced by logic (however hard or soft) must be `progression`. Since you typically don't want to turn a ton of `filler` items into `progression` just for this, it's common to e.g. write money logic using only the rare "$100" item, so the dozens of "$1" and "$10" items in your world can remain `filler`. + +--- + +### What if my game has "missable" or "one-time-only" locations or region connections? + +Archipelago logic assumes that once a region or location becomes reachable, it stays reachable forever, no matter what +the player does in-game. Slightly more formally: Receiving an AP item must never cause a region connection or location +to "go out of logic" (become unreachable when it was previously reachable), and receiving AP items is the only kind of +state change that AP logic acknowledges. No other actions or events can change reachability. + +So when the game itself does not follow this assumption, the options are: +- Modify the game to make that location/connection repeatable +- If there are both missable and repeatable ways to check the location/traverse the connection, then write logic for + only the repeatable ways +- Don't generate the missable location/connection at all + - For connections, any logical regions will still need to be reachable through other, *repeatable* connections + - For locations, this may require game changes to remove the vanilla item if it affects logic +- Decide that resetting the save file is part of the game's logic, and warn players about that From 11842d396ab11ca5099a8f071c38e004438eeae7 Mon Sep 17 00:00:00 2001 From: Natalie Weizenbaum Date: Wed, 14 May 2025 04:23:12 -0700 Subject: [PATCH 047/183] DS3: Fix the Name of "Red and White Round Shield" (#4994) This item name is unusual in that it loses the word "round" when it's infused, *and* the only guaranteed drop in the base game is the infused "Blessed Red and White Round Shield +1". But since we're just listing the uninfused version, we should use the uninfused name. --- worlds/dark_souls_3/Items.py | 2 +- worlds/dark_souls_3/Locations.py | 5 +++-- worlds/dark_souls_3/docs/locations_en.md | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/worlds/dark_souls_3/Items.py b/worlds/dark_souls_3/Items.py index 044e3616f703..0980781ae882 100644 --- a/worlds/dark_souls_3/Items.py +++ b/worlds/dark_souls_3/Items.py @@ -511,7 +511,7 @@ def event(name: str, player: int) -> "DarkSouls3Item": DS3ItemData("Elkhorn Round Shield", 0x0133C510, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Warrior's Round Shield", 0x0133EC20, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Caduceus Round Shield", 0x01341330, DS3ItemCategory.SHIELD_INFUSIBLE), - DS3ItemData("Red and White Shield", 0x01343A40, DS3ItemCategory.SHIELD_INFUSIBLE), + DS3ItemData("Red and White Round Shield", 0x01343A40, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Blessed Red and White Shield+1", 0x01343FB9, DS3ItemCategory.SHIELD), DS3ItemData("Plank Shield", 0x01346150, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Leather Shield", 0x01348860, DS3ItemCategory.SHIELD_INFUSIBLE), diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index 7b30997581dc..c84d91e516c2 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -732,8 +732,9 @@ def __init__( missable=True), # requires projectile DS3LocationData("US: Flame Stoneplate Ring - hanging corpse by Mound-Maker transport", "Flame Stoneplate Ring"), - DS3LocationData("US: Red and White Shield - chasm, hanging corpse", "Red and White Shield", - static="02,0:53100740::", missable=True), # requires projectile + DS3LocationData("US: Red and White Round Shield - chasm, hanging corpse", + "Red and White Round Shield", static="02,0:53100740::", + missable=True), # requires projectile DS3LocationData("US: Small Leather Shield - first building, hanging corpse by entrance", "Small Leather Shield"), DS3LocationData("US: Pale Tongue - tower village, hanging corpse", "Pale Tongue"), diff --git a/worlds/dark_souls_3/docs/locations_en.md b/worlds/dark_souls_3/docs/locations_en.md index 8411b8c42aa0..4f0160a96d99 100644 --- a/worlds/dark_souls_3/docs/locations_en.md +++ b/worlds/dark_souls_3/docs/locations_en.md @@ -2239,7 +2239,7 @@ static _Dark Souls III_ randomizer]. US: Pyromancy Flame - CornyxGiven by Cornyx in Firelink Shrine or dropped. US: Red Bug Pellet - tower village building, basementOn the floor of the building after the Fire Demon encounter US: Red Hilted Halberd - chasm cryptIn the skeleton area accessible from Grave Key or dropping down from near Eygon -US: Red and White Shield - chasm, hanging corpseOn a hanging corpse in the ravine accessible with the Grave Key or dropping down near Eygon, to the entrance of Irina's prison. Must be shot down with an arrow or projective. +US: Red and White Round Shield - chasm, hanging corpseOn a hanging corpse in the ravine accessible with the Grave Key or dropping down near Eygon, to the entrance of Irina's prison. Must be shot down with an arrow or projective. US: Reinforced Club - by white treeNear the Birch Tree where giant shoots arrows US: Repair Powder - first building, balconyOn the balcony of the first Undead Settlement building US: Rusted Coin - awning above Dilapidated BridgeOn a wooden ledge near the Dilapidated Bridge bonfire. Must be jumped to from near Cathedral Evangelist enemy From a87fec0cbd682148b7ee1aad84bea2552070af14 Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Wed, 14 May 2025 07:27:15 -0400 Subject: [PATCH 048/183] SDV: Add Missing Marriage Requirement for Spouse Stardrop (#4988) --- worlds/stardew_valley/rules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/stardew_valley/rules.py b/worlds/stardew_valley/rules.py index 51f69a1af853..ba71c058742a 100644 --- a/worlds/stardew_valley/rules.py +++ b/worlds/stardew_valley/rules.py @@ -864,7 +864,7 @@ def set_friendsanity_rules(logic: StardewLogic, multiworld: MultiWorld, player: if not content.features.friendsanity.is_enabled: return set_rule(multiworld.get_location("Spouse Stardrop", player), - logic.relationship.has_hearts_with_any_bachelor(13)) + logic.relationship.has_hearts_with_any_bachelor(13) & logic.relationship.can_get_married()) set_rule(multiworld.get_location("Have a Baby", player), logic.relationship.can_reproduce(1)) set_rule(multiworld.get_location("Have Another Baby", player), From 02fd75c018b7172ddad306a2851af482a753cfef Mon Sep 17 00:00:00 2001 From: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Date: Wed, 14 May 2025 07:40:38 -0400 Subject: [PATCH 049/183] Core: Update Some Outdated Typing (#4986) --- Generate.py | 14 +++++----- Launcher.py | 13 +++++----- Main.py | 21 ++++++++------- settings.py | 59 ++++++++++++++++++++++--------------------- setup.py | 46 ++++++++++++++++----------------- test/hosting/world.py | 3 +-- 6 files changed, 77 insertions(+), 79 deletions(-) diff --git a/Generate.py b/Generate.py index e72887c26c2c..9bc8d1066f59 100644 --- a/Generate.py +++ b/Generate.py @@ -10,8 +10,8 @@ import urllib.parse import urllib.request from collections import Counter -from typing import Any, Dict, Tuple, Union from itertools import chain +from typing import Any import ModuleUpdate @@ -77,7 +77,7 @@ def get_seed_name(random_source) -> str: return f"{random_source.randint(0, pow(10, seeddigits) - 1)}".zfill(seeddigits) -def main(args=None) -> Tuple[argparse.Namespace, int]: +def main(args=None) -> tuple[argparse.Namespace, int]: # __name__ == "__main__" check so unittests that already imported worlds don't trip this. if __name__ == "__main__" and "worlds" in sys.modules: raise Exception("Worlds system should not be loaded before logging init.") @@ -95,7 +95,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: logging.info("Race mode enabled. Using non-deterministic random source.") random.seed() # reset to time-based random source - weights_cache: Dict[str, Tuple[Any, ...]] = {} + weights_cache: dict[str, tuple[Any, ...]] = {} if args.weights_file_path and os.path.exists(args.weights_file_path): try: weights_cache[args.weights_file_path] = read_weights_yamls(args.weights_file_path) @@ -180,7 +180,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: erargs.name = {} erargs.csv_output = args.csv_output - settings_cache: Dict[str, Tuple[argparse.Namespace, ...]] = \ + settings_cache: dict[str, tuple[argparse.Namespace, ...]] = \ {fname: (tuple(roll_settings(yaml, args.plando) for yaml in yamls) if args.sameoptions else None) for fname, yamls in weights_cache.items()} @@ -212,7 +212,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: path = player_path_cache[player] if path: try: - settings: Tuple[argparse.Namespace, ...] = settings_cache[path] if settings_cache[path] else \ + settings: tuple[argparse.Namespace, ...] = settings_cache[path] if settings_cache[path] else \ tuple(roll_settings(yaml, args.plando) for yaml in weights_cache[path]) for settingsObject in settings: for k, v in vars(settingsObject).items(): @@ -242,7 +242,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: return erargs, seed -def read_weights_yamls(path) -> Tuple[Any, ...]: +def read_weights_yamls(path) -> tuple[Any, ...]: try: if urllib.parse.urlparse(path).scheme in ('https', 'file'): yaml = str(urllib.request.urlopen(path).read(), "utf-8-sig") @@ -378,7 +378,7 @@ def update_weights(weights: dict, new_weights: dict, update_type: str, name: str return weights -def roll_meta_option(option_key, game: str, category_dict: Dict) -> Any: +def roll_meta_option(option_key, game: str, category_dict: dict) -> Any: from worlds import AutoWorldRegister if not game: diff --git a/Launcher.py b/Launcher.py index 594286fac576..503490243d87 100644 --- a/Launcher.py +++ b/Launcher.py @@ -16,9 +16,10 @@ import sys import urllib.parse import webbrowser +from collections.abc import Callable, Sequence from os.path import isfile from shutil import which -from typing import Callable, Optional, Sequence, Tuple, Union, Any +from typing import Any if __name__ == "__main__": import ModuleUpdate @@ -114,7 +115,7 @@ def update_settings(): ]) -def handle_uri(path: str, launch_args: Tuple[str, ...]) -> None: +def handle_uri(path: str, launch_args: tuple[str, ...]) -> None: url = urllib.parse.urlparse(path) queries = urllib.parse.parse_qs(url.query) launch_args = (path, *launch_args) @@ -162,7 +163,7 @@ def handle_uri(path: str, launch_args: Tuple[str, ...]) -> None: ).open() -def identify(path: Union[None, str]) -> Tuple[Union[None, str], Union[None, Component]]: +def identify(path: None | str) -> tuple[None | str, None | Component]: if path is None: return None, None for component in components: @@ -173,7 +174,7 @@ def identify(path: Union[None, str]) -> Tuple[Union[None, str], Union[None, Comp return None, None -def get_exe(component: Union[str, Component]) -> Optional[Sequence[str]]: +def get_exe(component: str | Component) -> Sequence[str] | None: if isinstance(component, str): name = component component = None @@ -226,7 +227,7 @@ def create_shortcut(button: Any, component: Component) -> None: button.menu.dismiss() -refresh_components: Optional[Callable[[], None]] = None +refresh_components: Callable[[], None] | None = None def run_gui(path: str, args: Any) -> None: @@ -451,7 +452,7 @@ def run_component(component: Component, *args): logging.warning(f"Component {component} does not appear to be executable.") -def main(args: Optional[Union[argparse.Namespace, dict]] = None): +def main(args: argparse.Namespace | dict | None = None): if isinstance(args, argparse.Namespace): args = {k: v for k, v in args._get_kwargs()} elif not args: diff --git a/Main.py b/Main.py index 147fa382e249..442c2ff40441 100644 --- a/Main.py +++ b/Main.py @@ -7,14 +7,13 @@ import time import zipfile import zlib -from typing import Dict, List, Optional, Set, Tuple, Union import worlds -from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld, Region +from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld from Fill import FillError, balance_multiworld_progression, distribute_items_restrictive, flood_items, \ parse_planned_blocks, distribute_planned_blocks, resolve_early_locations_for_planned from Options import StartInventoryPool -from Utils import __version__, output_path, version_tuple, get_settings +from Utils import __version__, output_path, version_tuple from settings import get_settings from worlds import AutoWorld from worlds.generic.Rules import exclusion_rules, locality_rules @@ -22,7 +21,7 @@ __all__ = ["main"] -def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = None): +def main(args, seed=None, baked_server_options: dict[str, object] | None = None): if not baked_server_options: baked_server_options = get_settings().server_options.as_dict() assert isinstance(baked_server_options, dict) @@ -140,7 +139,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No # remove starting inventory from pool items. # Because some worlds don't actually create items during create_items this has to be as late as possible. fallback_inventory = StartInventoryPool({}) - depletion_pool: Dict[int, Dict[str, int]] = { + depletion_pool: dict[int, dict[str, int]] = { player: getattr(multiworld.worlds[player].options, "start_inventory_from_pool", fallback_inventory).value.copy() for player in multiworld.player_ids } @@ -149,7 +148,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No } if target_per_player: - new_itempool: List[Item] = [] + new_itempool: list[Item] = [] # Make new itempool with start_inventory_from_pool items removed for item in multiworld.itempool: @@ -233,7 +232,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No pool.submit(AutoWorld.call_single, multiworld, "generate_output", player, temp_dir)) # collect ER hint info - er_hint_data: Dict[int, Dict[int, str]] = {} + er_hint_data: dict[int, dict[int, str]] = {} AutoWorld.call_all(multiworld, 'extend_hint_information', er_hint_data) def write_multidata(): @@ -274,7 +273,7 @@ def precollect_hint(location: Location, auto_status: HintStatus): for player in multiworld.groups[location.item.player]["players"]: precollected_hints[player].add(hint) - locations_data: Dict[int, Dict[int, Tuple[int, int, int]]] = {player: {} for player in multiworld.player_ids} + locations_data: dict[int, dict[int, tuple[int, int, int]]] = {player: {} for player in multiworld.player_ids} for location in multiworld.get_filled_locations(): if type(location.address) == int: assert location.item.code is not None, "item code None should be event, " \ @@ -303,12 +302,12 @@ def precollect_hint(location: Location, auto_status: HintStatus): } data_package["Archipelago"] = worlds.network_data_package["games"]["Archipelago"] - checks_in_area: Dict[int, Dict[str, Union[int, List[int]]]] = {} + checks_in_area: dict[int, dict[str, int | list[int]]] = {} # get spheres -> filter address==None -> skip empty - spheres: List[Dict[int, Set[int]]] = [] + spheres: list[dict[int, set[int]]] = [] for sphere in multiworld.get_sendable_spheres(): - current_sphere: Dict[int, Set[int]] = collections.defaultdict(set) + current_sphere: dict[int, set[int]] = collections.defaultdict(set) for sphere_location in sphere: current_sphere[sphere_location.player].add(sphere_location.address) diff --git a/settings.py b/settings.py index 255c537fe09a..ef1ea9adf741 100644 --- a/settings.py +++ b/settings.py @@ -10,9 +10,10 @@ import types import typing import warnings +from collections.abc import Iterator, Sequence from enum import IntEnum from threading import Lock -from typing import cast, Any, BinaryIO, ClassVar, Dict, Iterator, List, Optional, TextIO, Tuple, Union, TypeVar +from typing import cast, Any, BinaryIO, ClassVar, TextIO, TypeVar, Union __all__ = [ "get_settings", "fmt_doc", "no_gui", @@ -23,7 +24,7 @@ no_gui = False skip_autosave = False -_world_settings_name_cache: Dict[str, str] = {} # TODO: cache on disk and update when worlds change +_world_settings_name_cache: dict[str, str] = {} # TODO: cache on disk and update when worlds change _world_settings_name_cache_updated = False _lock = Lock() @@ -53,7 +54,7 @@ def fmt_doc(cls: type, level: int) -> str: class Group: - _type_cache: ClassVar[Optional[Dict[str, Any]]] = None + _type_cache: ClassVar[dict[str, Any] | None] = None _dumping: bool = False _has_attr: bool = False _changed: bool = False @@ -106,7 +107,7 @@ def changed(self) -> bool: self.__dict__.values())) @classmethod - def get_type_hints(cls) -> Dict[str, Any]: + def get_type_hints(cls) -> dict[str, Any]: """Returns resolved type hints for the class""" if cls._type_cache is None: if not cls.__annotations__ or not isinstance(next(iter(cls.__annotations__.values())), str): @@ -124,10 +125,10 @@ def get(self, key: str, default: Any = None) -> Any: return self[key] return default - def items(self) -> List[Tuple[str, Any]]: + def items(self) -> list[tuple[str, Any]]: return [(key, getattr(self, key)) for key in self] - def update(self, dct: Dict[str, Any]) -> None: + def update(self, dct: dict[str, Any]) -> None: assert isinstance(dct, dict), f"{self.__class__.__name__}.update called with " \ f"{dct.__class__.__name__} instead of dict." @@ -196,7 +197,7 @@ def update(self, dct: Dict[str, Any]) -> None: warnings.warn(f"{self.__class__.__name__}.{k} " f"assigned from incompatible type {type(v).__name__}") - def as_dict(self, *args: str, downcast: bool = True) -> Dict[str, Any]: + def as_dict(self, *args: str, downcast: bool = True) -> dict[str, Any]: return { name: _to_builtin(cast(object, getattr(self, name))) if downcast else getattr(self, name) for name in self if not args or name in args @@ -211,7 +212,7 @@ def _dump_value(cls, value: Any, f: TextIO, indent: str) -> None: f.write(f"{indent}{yaml_line}") @classmethod - def _dump_item(cls, name: Optional[str], attr: object, f: TextIO, level: int) -> None: + def _dump_item(cls, name: str | None, attr: object, f: TextIO, level: int) -> None: """Write a group, dict or sequence item to f, where attr can be a scalar or a collection""" # lazy construction of yaml Dumper to avoid loading Utils early @@ -223,7 +224,7 @@ class Dumper(BaseDumper): def represent_mapping(self, tag: str, mapping: Any, flow_style: Any = None) -> MappingNode: from yaml import ScalarNode res: MappingNode = super().represent_mapping(tag, mapping, flow_style) - pairs = cast(List[Tuple[ScalarNode, Any]], res.value) + pairs = cast(list[tuple[ScalarNode, Any]], res.value) for k, v in pairs: k.style = None # remove quotes from keys return res @@ -329,9 +330,9 @@ class Path(str): """Marks the file as required and opens a file browser when missing""" is_exe: bool = False """Special cross-platform handling for executables""" - description: Optional[str] = None + description: str | None = None """Title to display when browsing for the file""" - copy_to: Optional[str] = None + copy_to: str | None = None """If not None, copy to AP folder instead of linking it""" @classmethod @@ -339,7 +340,7 @@ def validate(cls, path: str) -> None: """Overload and raise to validate input files from browse""" pass - def browse(self: T, **kwargs: Any) -> Optional[T]: + def browse(self: T, **kwargs: Any) -> T | None: """Opens a file browser to search for the file""" raise NotImplementedError(f"Please use a subclass of Path for {self.__class__.__name__}") @@ -369,12 +370,12 @@ def resolve(self) -> str: class FilePath(Path): # path to a file - md5s: ClassVar[List[Union[str, bytes]]] = [] + md5s: ClassVar[list[str | bytes]] = [] """MD5 hashes for default validator.""" def browse(self: T, - filetypes: Optional[typing.Sequence[typing.Tuple[str, typing.Sequence[str]]]] = None, **kwargs: Any)\ - -> Optional[T]: + filetypes: Sequence[tuple[str, Sequence[str]]] | None = None, **kwargs: Any)\ + -> T | None: from Utils import open_filename, is_windows if not filetypes: if self.is_exe: @@ -439,7 +440,7 @@ def validate(cls, path: str) -> None: class FolderPath(Path): # path to a folder - def browse(self: T, **kwargs: Any) -> Optional[T]: + def browse(self: T, **kwargs: Any) -> T | None: from Utils import open_directory res = open_directory(f"Select {self.description or self.__class__.__name__}", self) if res: @@ -597,16 +598,16 @@ class LogNetwork(IntEnum): OFF = 0 ON = 1 - host: Optional[str] = None + host: str | None = None port: int = 38281 - password: Optional[str] = None - multidata: Optional[str] = None - savefile: Optional[str] = None + password: str | None = None + multidata: str | None = None + savefile: str | None = None disable_save: bool = False loglevel: str = "info" logtime: bool = False - server_password: Optional[ServerPassword] = None - disable_item_cheat: Union[DisableItemCheat, bool] = False + server_password: ServerPassword | None = None + disable_item_cheat: DisableItemCheat | bool = False location_check_points: LocationCheckPoints = LocationCheckPoints(1) hint_cost: HintCost = HintCost(10) release_mode: ReleaseMode = ReleaseMode("auto") @@ -702,7 +703,7 @@ class SnesRomStart(str): """ sni_path: SNIPath = SNIPath("SNI") - snes_rom_start: Union[SnesRomStart, bool] = True + snes_rom_start: SnesRomStart | bool = True class BizHawkClientOptions(Group): @@ -721,7 +722,7 @@ class RomStart(str): """ emuhawk_path: EmuHawkPath = EmuHawkPath(None) - rom_start: Union[RomStart, bool] = True + rom_start: RomStart | bool = True # Top-level group with lazy loading of worlds @@ -733,7 +734,7 @@ class Settings(Group): sni_options: SNIOptions = SNIOptions() bizhawkclient_options: BizHawkClientOptions = BizHawkClientOptions() - _filename: Optional[str] = None + _filename: str | None = None def __getattribute__(self, key: str) -> Any: if key.startswith("_") or key in self.__class__.__dict__: @@ -787,7 +788,7 @@ def __getattribute__(self, key: str) -> Any: return super().__getattribute__(key) - def __init__(self, location: Optional[str]): # change to PathLike[str] once we drop 3.8? + def __init__(self, location: str | None): # change to PathLike[str] once we drop 3.8? super().__init__() if location: from Utils import parse_yaml @@ -821,7 +822,7 @@ def autosave() -> None: import atexit atexit.register(autosave) - def save(self, location: Optional[str] = None) -> None: # as above + def save(self, location: str | None = None) -> None: # as above from Utils import parse_yaml location = location or self._filename assert location, "No file specified" @@ -854,7 +855,7 @@ def dump(self, f: TextIO, level: int = 0) -> None: super().dump(f, level) @property - def filename(self) -> Optional[str]: + def filename(self) -> str | None: return self._filename @@ -867,7 +868,7 @@ def get_settings() -> Settings: if not res: from Utils import user_path, local_path filenames = ("options.yaml", "host.yaml") - locations: List[str] = [] + locations: list[str] = [] if os.path.join(os.getcwd()) != local_path(): locations += filenames # use files from cwd only if it's not the local_path locations += [user_path(filename) for filename in filenames] diff --git a/setup.py b/setup.py index 8d415932d05d..2654cc69da92 100644 --- a/setup.py +++ b/setup.py @@ -1,22 +1,20 @@ import base64 import datetime +import io +import json import os import platform import shutil +import subprocess import sys import sysconfig +import threading +import urllib.request import warnings import zipfile -import urllib.request -import io -import json -import threading -import subprocess - +from collections.abc import Iterable, Sequence from hashlib import sha3_512 from pathlib import Path -from typing import Dict, Iterable, List, Optional, Sequence, Set, Tuple, Union - # This is a bit jank. We need cx-Freeze to be able to run anything from this script, so install it requirement = 'cx-Freeze==8.0.0' @@ -60,7 +58,7 @@ # On Python < 3.10 LogicMixin is not currently supported. -non_apworlds: Set[str] = { +non_apworlds: set[str] = { "A Link to the Past", "Adventure", "ArchipIDLE", @@ -147,7 +145,7 @@ def download_SNI() -> None: print(f"No SNI found for system spec {platform_name} {machine_name}") -signtool: Optional[str] +signtool: str | None if os.path.exists("X:/pw.txt"): print("Using signtool") with open("X:/pw.txt", encoding="utf-8-sig") as f: @@ -205,7 +203,7 @@ def remove_sprites_from_folder(folder: Path) -> None: os.remove(folder / file) -def _threaded_hash(filepath: Union[str, Path]) -> str: +def _threaded_hash(filepath: str | Path) -> str: hasher = sha3_512() hasher.update(open(filepath, "rb").read()) return base64.b85encode(hasher.digest()).decode() @@ -255,7 +253,7 @@ def finalize_options(self) -> None: self.libfolder = Path(self.buildfolder, "lib") self.library = Path(self.libfolder, "library.zip") - def installfile(self, path: Path, subpath: Optional[Union[str, Path]] = None, keep_content: bool = False) -> None: + def installfile(self, path: Path, subpath: str | Path | None = None, keep_content: bool = False) -> None: folder = self.buildfolder if subpath: folder /= subpath @@ -374,7 +372,7 @@ def run(self) -> None: from worlds.AutoWorld import AutoWorldRegister assert not non_apworlds - set(AutoWorldRegister.world_types), \ f"Unknown world {non_apworlds - set(AutoWorldRegister.world_types)} designated for .apworld" - folders_to_remove: List[str] = [] + folders_to_remove: list[str] = [] disabled_worlds_folder = "worlds_disabled" for entry in os.listdir(disabled_worlds_folder): if os.path.isdir(os.path.join(disabled_worlds_folder, entry)): @@ -446,12 +444,12 @@ class AppImageCommand(setuptools.Command): ("app-exec=", None, "The application to run inside the image."), ("yes", "y", 'Answer "yes" to all questions.'), ] - build_folder: Optional[Path] - dist_file: Optional[Path] - app_dir: Optional[Path] + build_folder: Path | None + dist_file: Path | None + app_dir: Path | None app_name: str - app_exec: Optional[Path] - app_icon: Optional[Path] # source file + app_exec: Path | None + app_icon: Path | None # source file app_id: str # lower case name, used for icon and .desktop yes: bool @@ -493,7 +491,7 @@ def write_launcher(self, default_exe: Path) -> None: """) launcher_filename.chmod(0o755) - def install_icon(self, src: Path, name: Optional[str] = None, symlink: Optional[Path] = None) -> None: + def install_icon(self, src: Path, name: str | None = None, symlink: Path | None = None) -> None: assert self.app_dir, "Invalid app_dir" try: from PIL import Image @@ -556,7 +554,7 @@ def run(self) -> None: subprocess.call(f'ARCH={build_arch} ./appimagetool -n "{self.app_dir}" "{self.dist_file}"', shell=True) -def find_libs(*args: str) -> Sequence[Tuple[str, str]]: +def find_libs(*args: str) -> Sequence[tuple[str, str]]: """Try to find system libraries to be included.""" if not args: return [] @@ -564,7 +562,7 @@ def find_libs(*args: str) -> Sequence[Tuple[str, str]]: arch = build_arch.replace('_', '-') libc = 'libc6' # we currently don't support musl - def parse(line: str) -> Tuple[Tuple[str, str, str], str]: + def parse(line: str) -> tuple[tuple[str, str, str], str]: lib, path = line.strip().split(' => ') lib, typ = lib.split(' ', 1) for test_arch in ('x86-64', 'i386', 'aarch64'): @@ -589,8 +587,8 @@ def parse(line: str) -> Tuple[Tuple[str, str, str], str]: k: v for k, v in (parse(line) for line in data if "=>" in line) } - def find_lib(lib: str, arch: str, libc: str) -> Optional[str]: - cache: Dict[Tuple[str, str, str], str] = getattr(find_libs, "cache") + def find_lib(lib: str, arch: str, libc: str) -> str | None: + cache: dict[tuple[str, str, str], str] = getattr(find_libs, "cache") for k, v in cache.items(): if k == (lib, arch, libc): return v @@ -599,7 +597,7 @@ def find_lib(lib: str, arch: str, libc: str) -> Optional[str]: return v return None - res: List[Tuple[str, str]] = [] + res: list[tuple[str, str]] = [] for arg in args: # try exact match, empty libc, empty arch, empty arch and libc file = find_lib(arg, arch, libc) diff --git a/test/hosting/world.py b/test/hosting/world.py index e083e027fee1..74126412017e 100644 --- a/test/hosting/world.py +++ b/test/hosting/world.py @@ -1,13 +1,12 @@ import re import shutil from pathlib import Path -from typing import Dict __all__ = ["copy", "delete"] -_new_worlds: Dict[str, str] = {} +_new_worlds: dict[str, str] = {} def copy(src: str, dst: str) -> None: From 2a0d0b4224eb818f83d0426f7c042a334608b41b Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Wed, 14 May 2025 07:55:45 -0400 Subject: [PATCH 050/183] Noita: Modernization Refactor (#4980) --- worlds/noita/__init__.py | 2 +- worlds/noita/events.py | 10 +++---- worlds/noita/items.py | 42 ++++++++++------------------ worlds/noita/locations.py | 10 +++---- worlds/noita/regions.py | 23 ++++++--------- worlds/noita/rules.py | 59 +++++++++++++++++---------------------- 6 files changed, 59 insertions(+), 87 deletions(-) diff --git a/worlds/noita/__init__.py b/worlds/noita/__init__.py index af2921768d6a..a0b94458c205 100644 --- a/worlds/noita/__init__.py +++ b/worlds/noita/__init__.py @@ -38,7 +38,7 @@ class NoitaWorld(World): web = NoitaWeb() def generate_early(self) -> None: - if not self.multiworld.get_player_name(self.player).isascii(): + if not self.player_name.isascii(): raise Exception("Noita yaml's slot name has invalid character(s).") # Returned items will be sent over to the client diff --git a/worlds/noita/events.py b/worlds/noita/events.py index 4ec04e98b457..2ae524d9ec87 100644 --- a/worlds/noita/events.py +++ b/worlds/noita/events.py @@ -1,4 +1,4 @@ -from typing import Dict, TYPE_CHECKING +from typing import TYPE_CHECKING from BaseClasses import Item, ItemClassification, Location, Region from . import items, locations @@ -6,7 +6,7 @@ from . import NoitaWorld -def create_event(player: int, name: str) -> Item: +def create_event_item(player: int, name: str) -> Item: return items.NoitaItem(name, ItemClassification.progression, None, player) @@ -16,13 +16,13 @@ def create_location(player: int, name: str, region: Region) -> Location: def create_locked_location_event(player: int, region: Region, item: str) -> Location: new_location = create_location(player, item, region) - new_location.place_locked_item(create_event(player, item)) + new_location.place_locked_item(create_event_item(player, item)) region.locations.append(new_location) return new_location -def create_all_events(world: "NoitaWorld", created_regions: Dict[str, Region]) -> None: +def create_all_events(world: "NoitaWorld", created_regions: dict[str, Region]) -> None: for region_name, event in event_locks.items(): region = created_regions[region_name] create_locked_location_event(world.player, region, event) @@ -31,7 +31,7 @@ def create_all_events(world: "NoitaWorld", created_regions: Dict[str, Region]) - # Maps region names to event names -event_locks: Dict[str, str] = { +event_locks: dict[str, str] = { "The Work": "Victory", "Mines": "Portal to Holy Mountain 1", "Coal Pits": "Portal to Holy Mountain 2", diff --git a/worlds/noita/items.py b/worlds/noita/items.py index 20d9ff1930de..4cd0b5ef87ff 100644 --- a/worlds/noita/items.py +++ b/worlds/noita/items.py @@ -1,6 +1,6 @@ import itertools from collections import Counter -from typing import Dict, List, NamedTuple, Set, TYPE_CHECKING +from typing import NamedTuple, TYPE_CHECKING from BaseClasses import Item, ItemClassification from .options import BossesAsChecks, VictoryCondition, ExtraOrbs @@ -27,12 +27,12 @@ def create_item(player: int, name: str) -> Item: return NoitaItem(name, item_data.classification, item_data.code, player) -def create_fixed_item_pool() -> List[str]: - required_items: Dict[str, int] = {name: data.required_num for name, data in item_table.items()} +def create_fixed_item_pool() -> list[str]: + required_items: dict[str, int] = {name: data.required_num for name, data in item_table.items()} return list(Counter(required_items).elements()) -def create_orb_items(victory_condition: VictoryCondition, extra_orbs: ExtraOrbs) -> List[str]: +def create_orb_items(victory_condition: VictoryCondition, extra_orbs: ExtraOrbs) -> list[str]: orb_count = extra_orbs.value if victory_condition == VictoryCondition.option_pure_ending: orb_count = orb_count + 11 @@ -41,15 +41,15 @@ def create_orb_items(victory_condition: VictoryCondition, extra_orbs: ExtraOrbs) return ["Orb" for _ in range(orb_count)] -def create_spatial_awareness_item(bosses_as_checks: BossesAsChecks) -> List[str]: +def create_spatial_awareness_item(bosses_as_checks: BossesAsChecks) -> list[str]: return ["Spatial Awareness Perk"] if bosses_as_checks.value >= BossesAsChecks.option_all_bosses else [] -def create_kantele(victory_condition: VictoryCondition) -> List[str]: +def create_kantele(victory_condition: VictoryCondition) -> list[str]: return ["Kantele"] if victory_condition.value >= VictoryCondition.option_pure_ending else [] -def create_random_items(world: NoitaWorld, weights: Dict[str, int], count: int) -> List[str]: +def create_random_items(world: NoitaWorld, weights: dict[str, int], count: int) -> list[str]: filler_pool = weights.copy() if not world.options.bad_effects: filler_pool["Trap"] = 0 @@ -87,7 +87,7 @@ def create_all_items(world: NoitaWorld) -> None: # 110000 - 110032 -item_table: Dict[str, ItemData] = { +item_table: dict[str, ItemData] = { "Trap": ItemData(110000, "Traps", ItemClassification.trap), "Extra Max HP": ItemData(110001, "Pickups", ItemClassification.useful), "Spell Refresher": ItemData(110002, "Pickups", ItemClassification.filler), @@ -122,7 +122,7 @@ def create_all_items(world: NoitaWorld) -> None: "Broken Wand": ItemData(110031, "Items", ItemClassification.filler), } -shop_only_filler_weights: Dict[str, int] = { +shop_only_filler_weights: dict[str, int] = { "Trap": 15, "Extra Max HP": 25, "Spell Refresher": 20, @@ -135,7 +135,7 @@ def create_all_items(world: NoitaWorld) -> None: "Extra Life Perk": 10, } -filler_weights: Dict[str, int] = { +filler_weights: dict[str, int] = { **shop_only_filler_weights, "Gold (200)": 15, "Gold (1000)": 6, @@ -152,22 +152,10 @@ def create_all_items(world: NoitaWorld) -> None: } -# These helper functions make the comprehensions below more readable -def get_item_group(item_name: str) -> str: - return item_table[item_name].group +filler_items: list[str] = list(filter(lambda item: item_table[item].classification == ItemClassification.filler, + item_table.keys())) +item_name_to_id: dict[str, int] = {name: data.code for name, data in item_table.items()} - -def item_is_filler(item_name: str) -> bool: - return item_table[item_name].classification == ItemClassification.filler - - -def item_is_perk(item_name: str) -> bool: - return item_table[item_name].group == "Perks" - - -filler_items: List[str] = list(filter(item_is_filler, item_table.keys())) -item_name_to_id: Dict[str, int] = {name: data.code for name, data in item_table.items()} - -item_name_groups: Dict[str, Set[str]] = { - group: set(item_names) for group, item_names in itertools.groupby(item_table, get_item_group) +item_name_groups: dict[str, set[str]] = { + group: set(item_names) for group, item_names in itertools.groupby(item_table, lambda item: item_table[item].group) } diff --git a/worlds/noita/locations.py b/worlds/noita/locations.py index 5dd87b5b0387..319955769ad0 100644 --- a/worlds/noita/locations.py +++ b/worlds/noita/locations.py @@ -1,6 +1,6 @@ # Locations are specific points that you would obtain an item at. from enum import IntEnum -from typing import Dict, NamedTuple, Optional, Set +from typing import NamedTuple from BaseClasses import Location @@ -27,7 +27,7 @@ class LocationFlag(IntEnum): # Only the first Hidden Chest and Pedestal are mapped here, the others are created in Regions. # ltype key: "Chest" = Hidden Chests, "Pedestal" = Pedestals, "Boss" = Boss, "Orb" = Orb. # 110000-110671 -location_region_mapping: Dict[str, Dict[str, LocationData]] = { +location_region_mapping: dict[str, dict[str, LocationData]] = { "Coal Pits Holy Mountain": { "Coal Pits Holy Mountain Shop Item 1": LocationData(110000), "Coal Pits Holy Mountain Shop Item 2": LocationData(110001), @@ -207,15 +207,15 @@ class LocationFlag(IntEnum): } -def make_location_range(location_name: str, base_id: int, amt: int) -> Dict[str, int]: +def make_location_range(location_name: str, base_id: int, amt: int) -> dict[str, int]: if amt == 1: return {location_name: base_id} return {f"{location_name} {i+1}": base_id + i for i in range(amt)} -location_name_groups: Dict[str, Set[str]] = {"Shop": set(), "Orb": set(), "Boss": set(), "Chest": set(), +location_name_groups: dict[str, set[str]] = {"Shop": set(), "Orb": set(), "Boss": set(), "Chest": set(), "Pedestal": set()} -location_name_to_id: Dict[str, int] = {} +location_name_to_id: dict[str, int] = {} for region_name, location_group in location_region_mapping.items(): diff --git a/worlds/noita/regions.py b/worlds/noita/regions.py index 184cd96018cf..55a0ad1fc8e1 100644 --- a/worlds/noita/regions.py +++ b/worlds/noita/regions.py @@ -1,5 +1,5 @@ # Regions are areas in your game that you travel to. -from typing import Dict, List, TYPE_CHECKING +from typing import TYPE_CHECKING from BaseClasses import Entrance, Region from . import locations @@ -36,28 +36,21 @@ def create_region(world: "NoitaWorld", region_name: str) -> Region: return new_region -def create_regions(world: "NoitaWorld") -> Dict[str, Region]: +def create_regions(world: "NoitaWorld") -> dict[str, Region]: return {name: create_region(world, name) for name in noita_regions} -# An "Entrance" is really just a connection between two regions -def create_entrance(player: int, source: str, destination: str, regions: Dict[str, Region]) -> Entrance: - entrance = Entrance(player, f"From {source} To {destination}", regions[source]) - entrance.connect(regions[destination]) - return entrance - - # Creates connections based on our access mapping in `noita_connections`. -def create_connections(player: int, regions: Dict[str, Region]) -> None: +def create_connections(regions: dict[str, Region]) -> None: for source, destinations in noita_connections.items(): - new_entrances = [create_entrance(player, source, destination, regions) for destination in destinations] - regions[source].exits = new_entrances + for destination in destinations: + regions[source].connect(regions[destination]) # Creates all regions and connections. Called from NoitaWorld. def create_all_regions_and_connections(world: "NoitaWorld") -> None: created_regions = create_regions(world) - create_connections(world.player, created_regions) + create_connections(created_regions) create_all_events(world, created_regions) world.multiworld.regions += created_regions.values() @@ -75,7 +68,7 @@ def create_all_regions_and_connections(world: "NoitaWorld") -> None: # - Lake is connected to The Laboratory, since the bosses are hard without specific set-ups (which means late game) # - Snowy Depths connects to Lava Lake orb since you need digging for it, so fairly early is acceptable # - Ancient Laboratory is connected to the Coal Pits, so that Ylialkemisti isn't sphere 1 -noita_connections: Dict[str, List[str]] = { +noita_connections: dict[str, list[str]] = { "Menu": ["Forest"], "Forest": ["Mines", "Floating Island", "Desert", "Snowy Wasteland"], "Frozen Vault": ["The Vault"], @@ -117,4 +110,4 @@ def create_all_regions_and_connections(world: "NoitaWorld") -> None: ### } -noita_regions: List[str] = sorted(set(noita_connections.keys()).union(*noita_connections.values())) +noita_regions: list[str] = sorted(set(noita_connections.keys()).union(*noita_connections.values())) diff --git a/worlds/noita/rules.py b/worlds/noita/rules.py index 65871a804ea0..c2c483248804 100644 --- a/worlds/noita/rules.py +++ b/worlds/noita/rules.py @@ -1,6 +1,5 @@ -from typing import List, NamedTuple, Set, TYPE_CHECKING +from typing import NamedTuple, TYPE_CHECKING -from BaseClasses import CollectionState from . import items, locations from .options import BossesAsChecks, VictoryCondition from worlds.generic import Rules as GenericRules @@ -16,7 +15,7 @@ class EntranceLock(NamedTuple): items_needed: int -entrance_locks: List[EntranceLock] = [ +entrance_locks: list[EntranceLock] = [ EntranceLock("Mines", "Coal Pits Holy Mountain", "Portal to Holy Mountain 1", 1), EntranceLock("Coal Pits", "Snowy Depths Holy Mountain", "Portal to Holy Mountain 2", 2), EntranceLock("Snowy Depths", "Hiisi Base Holy Mountain", "Portal to Holy Mountain 3", 3), @@ -27,7 +26,7 @@ class EntranceLock(NamedTuple): ] -holy_mountain_regions: List[str] = [ +holy_mountain_regions: list[str] = [ "Coal Pits Holy Mountain", "Snowy Depths Holy Mountain", "Hiisi Base Holy Mountain", @@ -38,7 +37,7 @@ class EntranceLock(NamedTuple): ] -wand_tiers: List[str] = [ +wand_tiers: list[str] = [ "Wand (Tier 1)", # Coal Pits "Wand (Tier 2)", # Snowy Depths "Wand (Tier 3)", # Hiisi Base @@ -48,29 +47,21 @@ class EntranceLock(NamedTuple): ] -items_hidden_from_shops: Set[str] = {"Gold (200)", "Gold (1000)", "Potion", "Random Potion", "Secret Potion", +items_hidden_from_shops: set[str] = {"Gold (200)", "Gold (1000)", "Potion", "Random Potion", "Secret Potion", "Chaos Die", "Greed Die", "Kammi", "Refreshing Gourd", "Sädekivi", "Broken Wand", "Powder Pouch"} -perk_list: List[str] = list(filter(items.item_is_perk, items.item_table.keys())) +perk_list: list[str] = list(filter(lambda item: items.item_table[item].group == "Perks", items.item_table.keys())) # ---------------- -# Helper Functions +# Helper Function # ---------------- -def has_perk_count(state: CollectionState, player: int, amount: int) -> bool: - return sum(state.count(perk, player) for perk in perk_list) >= amount - - -def has_orb_count(state: CollectionState, player: int, amount: int) -> bool: - return state.count("Orb", player) >= amount - - -def forbid_items_at_locations(world: "NoitaWorld", shop_locations: Set[str], forbidden_items: Set[str]) -> None: +def forbid_items_at_locations(world: "NoitaWorld", shop_locations: set[str], forbidden_items: set[str]) -> None: for shop_location in shop_locations: - location = world.multiworld.get_location(shop_location, world.player) + location = world.get_location(shop_location) GenericRules.forbid_items_for_player(location, forbidden_items, world.player) @@ -104,38 +95,38 @@ def ban_early_high_tier_wands(world: "NoitaWorld") -> None: def lock_holy_mountains_into_spheres(world: "NoitaWorld") -> None: for lock in entrance_locks: - location = world.multiworld.get_entrance(f"From {lock.source} To {lock.destination}", world.player) + location = world.get_entrance(f"{lock.source} -> {lock.destination}") GenericRules.set_rule(location, lambda state, evt=lock.event: state.has(evt, world.player)) def holy_mountain_unlock_conditions(world: "NoitaWorld") -> None: victory_condition = world.options.victory_condition.value for lock in entrance_locks: - location = world.multiworld.get_location(lock.event, world.player) + location = world.get_location(lock.event) if victory_condition == VictoryCondition.option_greed_ending: location.access_rule = lambda state, items_needed=lock.items_needed: ( - has_perk_count(state, world.player, items_needed//2) + state.has_group_unique("Perks", world.player, items_needed // 2) ) elif victory_condition == VictoryCondition.option_pure_ending: location.access_rule = lambda state, items_needed=lock.items_needed: ( - has_perk_count(state, world.player, items_needed//2) and - has_orb_count(state, world.player, items_needed) + state.has_group_unique("Perks", world.player, items_needed // 2) and + state.has("Orb", world.player, items_needed) ) elif victory_condition == VictoryCondition.option_peaceful_ending: location.access_rule = lambda state, items_needed=lock.items_needed: ( - has_perk_count(state, world.player, items_needed//2) and - has_orb_count(state, world.player, items_needed * 3) + state.has_group_unique("Perks", world.player, items_needed // 2) and + state.has("Orb", world.player, items_needed * 3) ) def biome_unlock_conditions(world: "NoitaWorld") -> None: - lukki_entrances = world.multiworld.get_region("Lukki Lair", world.player).entrances - magical_entrances = world.multiworld.get_region("Magical Temple", world.player).entrances - wizard_entrances = world.multiworld.get_region("Wizards' Den", world.player).entrances + lukki_entrances = world.get_region("Lukki Lair").entrances + magical_entrances = world.get_region("Magical Temple").entrances + wizard_entrances = world.get_region("Wizards' Den").entrances for entrance in lukki_entrances: - entrance.access_rule = lambda state: state.has("Melee Immunity Perk", world.player) and\ - state.has("All-Seeing Eye Perk", world.player) + entrance.access_rule = lambda state: ( + state.has_all(("Melee Immunity Perk", "All-Seeing Eye Perk"), world.player)) for entrance in magical_entrances: entrance.access_rule = lambda state: state.has("All-Seeing Eye Perk", world.player) for entrance in wizard_entrances: @@ -144,12 +135,12 @@ def biome_unlock_conditions(world: "NoitaWorld") -> None: def victory_unlock_conditions(world: "NoitaWorld") -> None: victory_condition = world.options.victory_condition.value - victory_location = world.multiworld.get_location("Victory", world.player) + victory_location = world.get_location("Victory") if victory_condition == VictoryCondition.option_pure_ending: - victory_location.access_rule = lambda state: has_orb_count(state, world.player, 11) + victory_location.access_rule = lambda state: state.has("Orb", world.player, 11) elif victory_condition == VictoryCondition.option_peaceful_ending: - victory_location.access_rule = lambda state: has_orb_count(state, world.player, 33) + victory_location.access_rule = lambda state: state.has("Orb", world.player, 33) # ---------------- @@ -168,5 +159,5 @@ def create_all_rules(world: "NoitaWorld") -> None: # Prevent the Map perk (used to find Toveri) from being on Toveri (boss) if world.options.bosses_as_checks.value >= BossesAsChecks.option_all_bosses: - toveri = world.multiworld.get_location("Toveri", world.player) + toveri = world.get_location("Toveri") GenericRules.forbid_items_for_player(toveri, {"Spatial Awareness Perk"}, world.player) From 15e6383aadc27eba861ab5391e3facb2f953881b Mon Sep 17 00:00:00 2001 From: el-u <109771707+el-u@users.noreply.github.com> Date: Thu, 15 May 2025 19:58:10 +0200 Subject: [PATCH 051/183] lufia2ac: rearrange tests to comply with new conventions (#5001) --- worlds/lufia2ac/test/__init__.py | 5 ----- worlds/lufia2ac/test/bases.py | 5 +++++ .../test/{TestCustomItemPool.py => test_custom_item_pool.py} | 2 +- worlds/lufia2ac/test/{TestGoal.py => test_goal.py} | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 worlds/lufia2ac/test/bases.py rename worlds/lufia2ac/test/{TestCustomItemPool.py => test_custom_item_pool.py} (98%) rename worlds/lufia2ac/test/{TestGoal.py => test_goal.py} (98%) diff --git a/worlds/lufia2ac/test/__init__.py b/worlds/lufia2ac/test/__init__.py index 306ffa771660..e69de29bb2d1 100644 --- a/worlds/lufia2ac/test/__init__.py +++ b/worlds/lufia2ac/test/__init__.py @@ -1,5 +0,0 @@ -from test.bases import WorldTestBase - - -class L2ACTestBase(WorldTestBase): - game = "Lufia II Ancient Cave" diff --git a/worlds/lufia2ac/test/bases.py b/worlds/lufia2ac/test/bases.py new file mode 100644 index 000000000000..306ffa771660 --- /dev/null +++ b/worlds/lufia2ac/test/bases.py @@ -0,0 +1,5 @@ +from test.bases import WorldTestBase + + +class L2ACTestBase(WorldTestBase): + game = "Lufia II Ancient Cave" diff --git a/worlds/lufia2ac/test/TestCustomItemPool.py b/worlds/lufia2ac/test/test_custom_item_pool.py similarity index 98% rename from worlds/lufia2ac/test/TestCustomItemPool.py rename to worlds/lufia2ac/test/test_custom_item_pool.py index 33f72273daae..2244b03f296b 100644 --- a/worlds/lufia2ac/test/TestCustomItemPool.py +++ b/worlds/lufia2ac/test/test_custom_item_pool.py @@ -2,7 +2,7 @@ from BaseClasses import PlandoOptions from Generate import handle_option -from . import L2ACTestBase +from .bases import L2ACTestBase from ..Options import CustomItemPool diff --git a/worlds/lufia2ac/test/TestGoal.py b/worlds/lufia2ac/test/test_goal.py similarity index 98% rename from worlds/lufia2ac/test/TestGoal.py rename to worlds/lufia2ac/test/test_goal.py index 1eaf5a151584..deb98ccac9c0 100644 --- a/worlds/lufia2ac/test/TestGoal.py +++ b/worlds/lufia2ac/test/test_goal.py @@ -1,4 +1,4 @@ -from . import L2ACTestBase +from .bases import L2ACTestBase class TestDefault(L2ACTestBase): From 90ee9ffe367a8766bea9b685ac5bdf6e43ee1f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Sat, 17 May 2025 09:20:53 -0400 Subject: [PATCH 052/183] Stardew Valley: Remove Crab Pot Requirement for Help Wanted Fishing (#4985) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/stardew_valley/logic/fishing_logic.py | 12 ++---------- worlds/stardew_valley/logic/skill_logic.py | 5 +++-- worlds/stardew_valley/regions.py | 5 +++-- worlds/stardew_valley/rules.py | 4 ++-- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/worlds/stardew_valley/logic/fishing_logic.py b/worlds/stardew_valley/logic/fishing_logic.py index c8f9e0a34080..544f322057e9 100644 --- a/worlds/stardew_valley/logic/fishing_logic.py +++ b/worlds/stardew_valley/logic/fishing_logic.py @@ -117,7 +117,7 @@ def has_specific_bait(self, fish: FishItem) -> StardewRule: @cached_property def can_crab_pot_anywhere(self) -> StardewRule: - return self.logic.fishing.can_fish() & self.logic.region.can_reach_any(fishing_regions) + return self.logic.fishing.can_crab_pot & self.logic.region.can_reach_any(fishing_regions) @cache_self1 def can_crab_pot_at(self, region: str) -> StardewRule: @@ -125,12 +125,4 @@ def can_crab_pot_at(self, region: str) -> StardewRule: @cached_property def can_crab_pot(self) -> StardewRule: - crab_pot_rule = self.logic.has(Fishing.bait) - - # We can't use the same rule if skills are vanilla, because fishing levels are required to crab pot, which is required to get fishing levels... - if self.content.features.skill_progression.is_progressive: - crab_pot_rule = crab_pot_rule & self.logic.has(Machine.crab_pot) - else: - crab_pot_rule = crab_pot_rule & self.logic.skill.can_get_fishing_xp - - return crab_pot_rule + return self.logic.has(Machine.crab_pot) & self.logic.has(Fishing.bait) diff --git a/worlds/stardew_valley/logic/skill_logic.py b/worlds/stardew_valley/logic/skill_logic.py index 7582e5240f2f..b582eb361329 100644 --- a/worlds/stardew_valley/logic/skill_logic.py +++ b/worlds/stardew_valley/logic/skill_logic.py @@ -34,7 +34,8 @@ def can_earn_level(self, skill: str, level: int) -> StardewRule: previous_level_rule = self.logic.skill.has_previous_level(skill, level) if skill == Skill.fishing: - xp_rule = self.logic.tool.has_fishing_rod(max(tool_level, 3)) + # Not checking crab pot as this is used for not randomized skills logic, for which players need a fishing rod to start gaining xp. + xp_rule = self.logic.tool.has_fishing_rod(max(tool_level, 3)) & self.logic.fishing.can_fish_anywhere() elif skill == Skill.farming: xp_rule = self.can_get_farming_xp & self.logic.tool.has_tool(Tool.hoe, tool_material) & self.logic.tool.can_water(tool_level) elif skill == Skill.foraging: @@ -134,7 +135,7 @@ def can_get_combat_xp(self) -> StardewRule: @cached_property def can_get_fishing_xp(self) -> StardewRule: if self.content.features.skill_progression.is_progressive: - return self.logic.fishing.can_fish_anywhere() | self.logic.fishing.can_crab_pot + return self.logic.fishing.can_fish_anywhere() | self.logic.fishing.can_crab_pot_anywhere return self.logic.fishing.can_fish_anywhere() diff --git a/worlds/stardew_valley/regions.py b/worlds/stardew_valley/regions.py index d5be53ba866c..4d06d598d32d 100644 --- a/worlds/stardew_valley/regions.py +++ b/worlds/stardew_valley/regions.py @@ -24,7 +24,8 @@ def __call__(self, name: str, regions: Iterable[str]) -> Region: RegionData(RegionName.farm, [Entrance.farm_to_backwoods, Entrance.farm_to_bus_stop, Entrance.farm_to_forest, Entrance.farm_to_farmcave, Entrance.enter_greenhouse, Entrance.enter_coop, Entrance.enter_barn, Entrance.enter_shed, Entrance.enter_slime_hutch, LogicEntrance.grow_spring_crops, - LogicEntrance.grow_summer_crops, LogicEntrance.grow_fall_crops, LogicEntrance.grow_winter_crops, LogicEntrance.shipping]), + LogicEntrance.grow_summer_crops, LogicEntrance.grow_fall_crops, LogicEntrance.grow_winter_crops, LogicEntrance.shipping, + LogicEntrance.fishing, ]), RegionData(RegionName.backwoods, [Entrance.backwoods_to_mountain]), RegionData(RegionName.bus_stop, [Entrance.bus_stop_to_town, Entrance.take_bus_to_desert, Entrance.bus_stop_to_tunnel_entrance]), @@ -54,7 +55,7 @@ def __call__(self, name: str, regions: Iterable[str]) -> Region: Entrance.purchase_movie_ticket, LogicEntrance.buy_experience_books, LogicEntrance.attend_egg_festival, LogicEntrance.attend_fair, LogicEntrance.attend_spirit_eve, LogicEntrance.attend_winter_star]), RegionData(RegionName.beach, - [Entrance.beach_to_willy_fish_shop, Entrance.enter_elliott_house, Entrance.enter_tide_pools, LogicEntrance.fishing, LogicEntrance.attend_luau, + [Entrance.beach_to_willy_fish_shop, Entrance.enter_elliott_house, Entrance.enter_tide_pools, LogicEntrance.attend_luau, LogicEntrance.attend_moonlight_jellies, LogicEntrance.attend_night_market, LogicEntrance.attend_squidfest]), RegionData(RegionName.railroad, [Entrance.enter_bathhouse_entrance, Entrance.enter_witch_warp_cave]), RegionData(RegionName.ranch), diff --git a/worlds/stardew_valley/rules.py b/worlds/stardew_valley/rules.py index ba71c058742a..e5d7e8863e5a 100644 --- a/worlds/stardew_valley/rules.py +++ b/worlds/stardew_valley/rules.py @@ -284,7 +284,7 @@ def set_skull_cavern_floor_entrance_rules(logic, multiworld, player): set_entrance_rule(multiworld, player, dig_to_skull_floor(floor), rule) -def set_skill_entrance_rules(logic, multiworld, player, world_options: StardewValleyOptions): +def set_skill_entrance_rules(logic: StardewLogic, multiworld, player, world_options: StardewValleyOptions): set_entrance_rule(multiworld, player, LogicEntrance.grow_spring_crops, logic.farming.has_farming_tools & logic.season.has_spring) set_entrance_rule(multiworld, player, LogicEntrance.grow_summer_crops, logic.farming.has_farming_tools & logic.season.has_summer) set_entrance_rule(multiworld, player, LogicEntrance.grow_fall_crops, logic.farming.has_farming_tools & logic.season.has_fall) @@ -299,7 +299,7 @@ def set_skill_entrance_rules(logic, multiworld, player, world_options: StardewVa set_entrance_rule(multiworld, player, LogicEntrance.grow_summer_fall_crops_in_summer, true_) set_entrance_rule(multiworld, player, LogicEntrance.grow_summer_fall_crops_in_fall, true_) - set_entrance_rule(multiworld, player, LogicEntrance.fishing, logic.skill.can_get_fishing_xp) + set_entrance_rule(multiworld, player, LogicEntrance.fishing, logic.fishing.can_fish_anywhere()) def set_blacksmith_entrance_rules(logic, multiworld, player): From d3dbdb4491fa2c6b03c6ba45f6a893478b9c3f8a Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Sun, 18 May 2025 18:08:39 -0500 Subject: [PATCH 053/183] Kivy: Add a button prompt box (#3470) * Kivy: Add a button prompt box * auto format the buttons to display 2 per row to look nicer * update to kivymd * have the uri popup use the new API * have messenger use the new API * make the buttonprompt import even more lazy * messenger needs to be lazy too * make the buttons take up the full dialog width --------- Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> --- Launcher.py | 40 +++----- data/client.kv | 5 + kvui.py | 54 +++++++++-- worlds/messenger/client_setup.py | 154 +++++++++++++++++++------------ 4 files changed, 160 insertions(+), 93 deletions(-) diff --git a/Launcher.py b/Launcher.py index 503490243d87..2520fd6b5f51 100644 --- a/Launcher.py +++ b/Launcher.py @@ -121,46 +121,28 @@ def handle_uri(path: str, launch_args: tuple[str, ...]) -> None: launch_args = (path, *launch_args) client_component = [] text_client_component = None - if "game" in queries: - game = queries["game"][0] - else: # TODO around 0.6.0 - this is for pre this change webhost uri's - game = "Archipelago" + game = queries["game"][0] for component in components: if component.supports_uri and component.game_name == game: client_component.append(component) elif component.display_name == "Text Client": text_client_component = component - from kvui import MDButton, MDButtonText - from kivymd.uix.dialog import MDDialog, MDDialogHeadlineText, MDDialogContentContainer, MDDialogSupportingText - from kivymd.uix.divider import MDDivider if not client_component: run_component(text_client_component, *launch_args) return else: - popup_text = MDDialogSupportingText(text="Select client to open and connect with.") - component_buttons = [MDDivider()] - for component in [text_client_component, *client_component]: - component_buttons.append(MDButton( - MDButtonText(text=component.display_name), - on_release=lambda *args, comp=component: run_component(comp, *launch_args), - style="text" - )) - component_buttons.append(MDDivider()) - - MDDialog( - # Headline - MDDialogHeadlineText(text="Connect to Multiworld"), - # Text - popup_text, - # Content - MDDialogContentContainer( - *component_buttons, - orientation="vertical" - ), - - ).open() + from kvui import ButtonsPrompt + component_options = { + text_client_component.display_name: text_client_component, + **{component.display_name: component for component in client_component} + } + popup = ButtonsPrompt("Connect to Multiworld", + "Select client to open and connect with.", + lambda component_name: run_component(component_options[component_name], *launch_args), + *component_options.keys()) + popup.open() def identify(path: None | str) -> tuple[None | str, None | Component]: diff --git a/data/client.kv b/data/client.kv index 562986cd17a4..53000dfe41f2 100644 --- a/data/client.kv +++ b/data/client.kv @@ -222,3 +222,8 @@ spacing: 10 size_hint_y: None height: self.minimum_height +: + valign: "middle" + halign: "center" + text_size: self.width, None + height: self.texture_size[1] diff --git a/kvui.py b/kvui.py index d0d965c30b22..172b7e554394 100644 --- a/kvui.py +++ b/kvui.py @@ -6,7 +6,6 @@ import io import pkgutil from collections import deque - assert "kivy" not in sys.modules, "kvui should be imported before kivy for frozen compatibility" if sys.platform == "win32": @@ -57,6 +56,7 @@ from kivy.uix.popup import Popup from kivy.uix.image import AsyncImage from kivymd.app import MDApp +from kivymd.uix.dialog import MDDialog, MDDialogHeadlineText, MDDialogSupportingText, MDDialogButtonContainer from kivymd.uix.gridlayout import MDGridLayout from kivymd.uix.floatlayout import MDFloatLayout from kivymd.uix.boxlayout import MDBoxLayout @@ -710,20 +710,62 @@ def _change_to_history_text_if_available(self, new_index: int) -> None: self.text = self._command_history[self._command_history_index] +class MessageBoxLabel(MDLabel): + def __init__(self, **kwargs): + super().__init__(**kwargs) + self._label.refresh() + + class MessageBox(Popup): - class MessageBoxLabel(MDLabel): - def __init__(self, **kwargs): - super().__init__(**kwargs) - self._label.refresh() def __init__(self, title, text, error=False, **kwargs): - label = MessageBox.MessageBoxLabel(text=text) + label = MessageBoxLabel(text=text) separator_color = [217 / 255, 129 / 255, 122 / 255, 1.] if error else [47 / 255., 167 / 255., 212 / 255, 1.] super().__init__(title=title, content=label, size_hint=(0.5, None), width=max(100, int(label.width) + 40), separator_color=separator_color, **kwargs) self.height += max(0, label.height - 18) +class ButtonsPrompt(MDDialog): + def __init__(self, title: str, text: str, response: typing.Callable[[str], None], + *prompts: str, **kwargs) -> None: + """ + Customizable popup box that lets you create any number of buttons. The text of the pressed button is returned to + the callback. + + :param title: The title of the popup. + :param text: The message prompt in the popup. + :param response: A callable that will get called when the user presses a button. The prompt will not close + itself so should be done here if you want to close it when certain buttons are pressed. + :param prompts: Any number of strings to be used for the buttons. + """ + layout = MDBoxLayout(orientation="vertical") + label = MessageBoxLabel(text=text) + layout.add_widget(label) + + def on_release(button: MDButton, *args) -> None: + response(button.text) + + buttons = [MDDivider()] + for prompt in prompts: + button = MDButton( + MDButtonText(text=prompt, pos_hint={"center_x": 0.5, "center_y": 0.5}), + on_release=on_release, + style="text", + theme_width="Custom", + size_hint_x=1, + ) + button.text = prompt + buttons.extend([button, MDDivider()]) + + super().__init__( + MDDialogHeadlineText(text=title), + MDDialogSupportingText(text=text), + MDDialogButtonContainer(*buttons, orientation="vertical"), + **kwargs, + ) + + class ClientTabs(MDTabsSecondary): carousel: MDTabsCarousel lock_swiping = True diff --git a/worlds/messenger/client_setup.py b/worlds/messenger/client_setup.py index 6b98a1b44013..3ef1df75cc13 100644 --- a/worlds/messenger/client_setup.py +++ b/worlds/messenger/client_setup.py @@ -2,35 +2,28 @@ import io import logging import os.path +import requests import subprocess import urllib.request from shutil import which -from typing import Any +from typing import Any, Callable, TYPE_CHECKING from zipfile import ZipFile -from Utils import open_file - -import requests +from Utils import is_windows, messagebox, open_file, tuplize_version -from Utils import is_windows, messagebox, tuplize_version +if TYPE_CHECKING: + from kvui import ButtonsPrompt MOD_URL = "https://api.github.com/repos/alwaysintreble/TheMessengerRandomizerModAP/releases/latest" -def ask_yes_no_cancel(title: str, text: str) -> bool | None: - """ - Wrapper for tkinter.messagebox.askyesnocancel, that creates a popup dialog box with yes, no, and cancel buttons. +def create_yes_no_popup(title: str, text: str, callback: Callable[[str], None]) -> "ButtonsPrompt": + from kvui import ButtonsPrompt + buttons = ["Yes", "No", "Cancel"] - :param title: Title to be displayed at the top of the message box. - :param text: Text to be displayed inside the message box. - :return: Returns True if yes, False if no, None if cancel. - """ - from tkinter import Tk, messagebox - root = Tk() - root.withdraw() - ret = messagebox.askyesnocancel(title, text) - root.update() - return ret + prompt = ButtonsPrompt(title, text, callback, *buttons) + prompt.open() + return prompt def launch_game(*args) -> None: @@ -151,6 +144,76 @@ def available_mod_update(latest_version: str) -> bool: # one of the alpha builds return "alpha" in latest_version or tuplize_version(latest_version) > tuplize_version(installed_version) + def after_courier_install_popup(answer: str) -> None: + """Gets called if the user doesn't have courier installed. Handle the button they pressed.""" + nonlocal prompt + + prompt.dismiss() + if answer in ("No", "Cancel"): + return + logging.info("Installing Courier") + install_courier() + prompt = create_yes_no_popup("Install Mod", + "No randomizer mod detected. Would you like to install now?", + after_mod_install_popup) + + def after_mod_install_popup(answer: str) -> None: + """Gets called if the user has courier but mod isn't installed, or there's an available update.""" + nonlocal prompt + + prompt.dismiss() + if answer in ("No", "Cancel"): + return + logging.info("Installing Mod") + install_mod() + prompt = create_yes_no_popup("Launch Game", + "Courier and Game mod installed successfully. Launch game now?", + launch) + + def after_mod_update_popup(answer: str) -> None: + """Gets called if there's an available update.""" + nonlocal prompt + + prompt.dismiss() + if answer == "Cancel": + return + if answer == "Yes": + logging.info("Updating Mod") + install_mod() + prompt = create_yes_no_popup("Launch Game", + "Courier and Game mod installed successfully. Launch game now?", + launch) + else: + prompt = create_yes_no_popup("Launch Game", + "Game Mod not updated. Launch game now?", + launch) + + def launch(answer: str | None = None) -> None: + """Launch the game.""" + nonlocal args + + if prompt: + prompt.dismiss() + if answer and answer in ("No", "Cancel"): + return + + parser = argparse.ArgumentParser(description="Messenger Client Launcher") + parser.add_argument("url", type=str, nargs="?", help="Archipelago Webhost uri to auto connect to.") + args = parser.parse_args(args) + + if not is_windows: + if args.url: + open_file(f"steam://rungameid/764790//{args.url}/") + else: + open_file("steam://rungameid/764790") + else: + os.chdir(game_folder) + if args.url: + subprocess.Popen([MessengerWorld.settings.game_path, str(args.url)]) + else: + subprocess.Popen(MessengerWorld.settings.game_path) + os.chdir(working_directory) + from . import MessengerWorld try: game_folder = os.path.dirname(MessengerWorld.settings.game_path) @@ -172,49 +235,24 @@ def available_mod_update(latest_version: str) -> bool: except ImportError: pass if not courier_installed(): - should_install = ask_yes_no_cancel("Install Courier", - "No Courier installation detected. Would you like to install now?") - if not should_install: - return - logging.info("Installing Courier") - install_courier() + prompt = create_yes_no_popup("Install Courier", + "No Courier installation detected. Would you like to install now?", + after_courier_install_popup) + return if not mod_installed(): - should_install = ask_yes_no_cancel("Install Mod", - "No randomizer mod detected. Would you like to install now?") - if not should_install: - return - logging.info("Installing Mod") - install_mod() + prompt = create_yes_no_popup("Install Mod", + "No randomizer mod detected. Would you like to install now?", + after_mod_install_popup) + return else: latest = request_data(MOD_URL)["tag_name"] if available_mod_update(latest): - should_update = ask_yes_no_cancel("Update Mod", - f"New mod version detected. Would you like to update to {latest} now?") - if should_update: - logging.info("Updating mod") - install_mod() - elif should_update is None: - return - - if not args: - should_launch = ask_yes_no_cancel("Launch Game", - "Mod installed and up to date. Would you like to launch the game now?") - if not should_launch: + prompt = create_yes_no_popup("Update Mod", + f"New mod version detected. Would you like to update to {latest} now?", + after_mod_update_popup) return - parser = argparse.ArgumentParser(description="Messenger Client Launcher") - parser.add_argument("url", type=str, nargs="?", help="Archipelago Webhost uri to auto connect to.") - args = parser.parse_args(args) - - if not is_windows: - if args.url: - open_file(f"steam://rungameid/764790//{args.url}/") - else: - open_file("steam://rungameid/764790") - else: - os.chdir(game_folder) - if args.url: - subprocess.Popen([MessengerWorld.settings.game_path, str(args.url)]) - else: - subprocess.Popen(MessengerWorld.settings.game_path) - os.chdir(working_directory) + if not args: + prompt = create_yes_no_popup("Launch Game", + "Mod installed and up to date. Would you like to launch the game now?", + launch) From 07664c4d543431676ce24844a0abd44b9e6bf31b Mon Sep 17 00:00:00 2001 From: PoryGone <98504756+PoryGone@users.noreply.github.com> Date: Mon, 19 May 2025 18:48:31 -0400 Subject: [PATCH 054/183] SA2B: Logic Fixes (#5009) - Fixes Shadow's mission count being set by Sonic's mission count option - Fixes one small logic error on `Security Hall - 5` on Hard Logic difficulty - Removes stray character that was probably harmless --- worlds/sa2b/Missions.py | 2 +- worlds/sa2b/Rules.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/worlds/sa2b/Missions.py b/worlds/sa2b/Missions.py index 0c43834fb114..a5aac267a27a 100644 --- a/worlds/sa2b/Missions.py +++ b/worlds/sa2b/Missions.py @@ -241,7 +241,7 @@ def get_mission_count_table(multiworld: MultiWorld, world: World, player: int): sonic_active_missions = min(sonic_active_missions, world.options.sonic_mission_count.value) tails_active_missions = min(tails_active_missions, world.options.tails_mission_count.value) knuckles_active_missions = min(knuckles_active_missions, world.options.knuckles_mission_count.value) - shadow_active_missions = min(shadow_active_missions, world.options.sonic_mission_count.value) + shadow_active_missions = min(shadow_active_missions, world.options.shadow_mission_count.value) eggman_active_missions = min(eggman_active_missions, world.options.eggman_mission_count.value) rouge_active_missions = min(rouge_active_missions, world.options.rouge_mission_count.value) kart_active_missions = min(kart_active_missions, world.options.kart_mission_count.value) diff --git a/worlds/sa2b/Rules.py b/worlds/sa2b/Rules.py index 53edc686b638..9019a5b0330b 100644 --- a/worlds/sa2b/Rules.py +++ b/worlds/sa2b/Rules.py @@ -2257,7 +2257,7 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: add_rule_safe(multiworld, LocationName.weapons_bed_5, player, lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule_safe(multiworld, LocationName.security_hall_5, player, - lambda state: state.has(ItemName.rouge_treasure_scope, player)) + lambda state: state.has(ItemName.rouge_pick_nails, player)) add_rule_safe(multiworld, LocationName.cosmic_wall_5, player, lambda state: state.has(ItemName.eggman_jet_engine, player)) @@ -2971,7 +2971,7 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: add_rule(multiworld.get_location(LocationName.mission_street_lifebox_2, player), lambda state: (state.has(ItemName.tails_booster, player) and -- state.has(ItemName.tails_mystic_melody, player))) + state.has(ItemName.tails_mystic_melody, player))) add_rule(multiworld.get_location(LocationName.eternal_engine_lifebox_2, player), lambda state: state.has(ItemName.tails_booster, player)) From 9ac628f020bfa5999ce03208d8dcaa0528e4137c Mon Sep 17 00:00:00 2001 From: Seldom <38388947+Seldom-SE@users.noreply.github.com> Date: Tue, 20 May 2025 11:11:44 -0700 Subject: [PATCH 055/183] Terraria: remove 1.4.3-specific docs #5013 --- worlds/terraria/docs/setup_en.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/worlds/terraria/docs/setup_en.md b/worlds/terraria/docs/setup_en.md index 55a4df1df30d..b41595533743 100644 --- a/worlds/terraria/docs/setup_en.md +++ b/worlds/terraria/docs/setup_en.md @@ -10,13 +10,6 @@ and [tModLoader](https://store.steampowered.com/app/1281930/tModLoader/) on Stea 1. Subscribe to [the mod](https://steamcommunity.com/sharedfiles/filedetails/?id=2922217554) on Steam 2. Open tModLoader 3. Go to **Workshop -> Manage Mods** and enable the Archipelago mod - - If tModLoader states that you need version 1.4.3, follow the following steps - 1. Close tModLoader - 2. Right-Click tModLoader in Steam and select **Properties** - 3. Navigate to **Betas -> Beta Participation** - 4. Select **1.4.3-legacy - Legacy - Stable tModLoader for Terraria 1.4.3** - 5. Update tModLoader through Steam - 6. Open tModLoader and navigate back to the **Manage Mods** menu 4. tModLoader will say that it needs to refresh; exit this menu, and it will do this automatically 5. Once tModLoader finishes loading, the Archipelago mod is finished installing; you can now [connect to an Archipelago game](#joining-an-archipelago-game-in-terraria). From 485387ebbe93daa2bb8435568bcb8f7145a6d5ac Mon Sep 17 00:00:00 2001 From: SunCat Date: Tue, 20 May 2025 21:12:13 +0300 Subject: [PATCH 056/183] ChecksFinder: Update setup guide (#4973) * Update setup_en.md * Update worlds/checksfinder/docs/setup_en.md Co-authored-by: Scipio Wright * Update worlds/checksfinder/docs/setup_en.md Co-authored-by: Scipio Wright * Update worlds/checksfinder/docs/setup_en.md Co-authored-by: Scipio Wright --------- Co-authored-by: Scipio Wright --- worlds/checksfinder/docs/setup_en.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/worlds/checksfinder/docs/setup_en.md b/worlds/checksfinder/docs/setup_en.md index e15763ab3110..fc1fb518488f 100644 --- a/worlds/checksfinder/docs/setup_en.md +++ b/worlds/checksfinder/docs/setup_en.md @@ -3,7 +3,8 @@ ## Required Software - ChecksFinder from - the [Github releases Page for the game](https://github.com/jonloveslegos/ChecksFinder/releases) (latest version) + the [Github releases Page for the game](https://github.com/jonloveslegos/ChecksFinder/releases) (latest version), or + from the [itch.io Page for the game](https://suncat0.itch.io/checksfinder) (including web version) ## Configuring your YAML file @@ -18,13 +19,13 @@ You can customize your options by visiting the [ChecksFinder Player Options Page ## Joining a MultiWorld Game -1. Start ChecksFinder -2. Enter the following information: - - Enter the server url (starting from `wss://` for https connection like archipelago.gg, and starting from `ws://` for http connection and local multiserver) - - Enter server port - - Enter the name of the slot you wish to connect to - - Enter the room password (optional) - - Press `Play Online` to connect -3. Start playing! - -Game options and controls are described in the readme on the github repository for the game +1. Start ChecksFinder and press `Play Online` +2. Switch to the console window/tab +3. Enter the following information: + - Server url + - Server port + - The name of the slot you wish to connect to + - The room password (optional) +4. Press `Connect` to connect +5. Switch to the game window/tab +6. Start playing! From e0d31010664cc03e24900ccd7f4216c69647feac Mon Sep 17 00:00:00 2001 From: Mysteryem Date: Tue, 20 May 2025 20:23:44 +0100 Subject: [PATCH 057/183] Core: Remove redundant reachable location counting in swap (#4990) `prev_state` starts off as a copy of `swap_state` and then `swap_state` collects `item_to_place`. Collecting an item must never reduce accessibility (otherwise generation breaks horribly), so it is guaranteed that `swap_state` will always be able to reach at least as many locations as `prev_state`, so `new_loc_count >= prev_loc_count` is always `True`. As a sideeffect of this change, this fixes generation of Pokemon Emerald with locally shuffled Badges/HMs when there are worlds with unconnected entrances present in the multiworld e.g. KH1. This is because this location counting did not respect `single_player_placement=True` and counted reachable locations across the entire multiworld. Fixes #4834 as a sideeffect of removing the redundant code. --- Fill.py | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/Fill.py b/Fill.py index ff59aa22cb47..d0a42c07ebcd 100644 --- a/Fill.py +++ b/Fill.py @@ -138,32 +138,21 @@ def fill_restrictive(multiworld: MultiWorld, base_state: CollectionState, locati # to clean that up later, so there is a chance generation fails. if (not single_player_placement or location.player == item_to_place.player) \ and location.can_fill(swap_state, item_to_place, perform_access_check): + # Add this item to the existing placement, and + # add the old item to the back of the queue + spot_to_fill = placements.pop(i) - # Verify placing this item won't reduce available locations, which would be a useless swap. - prev_state = swap_state.copy() - prev_loc_count = len( - multiworld.get_reachable_locations(prev_state)) + swap_count += 1 + swapped_items[placed_item.player, placed_item.name, unsafe] = swap_count - swap_state.collect(item_to_place, True) - new_loc_count = len( - multiworld.get_reachable_locations(swap_state)) + reachable_items[placed_item.player].appendleft( + placed_item) + item_pool.append(placed_item) - if new_loc_count >= prev_loc_count: - # Add this item to the existing placement, and - # add the old item to the back of the queue - spot_to_fill = placements.pop(i) + # cleanup at the end to hopefully get better errors + cleanup_required = True - swap_count += 1 - swapped_items[placed_item.player, placed_item.name, unsafe] = swap_count - - reachable_items[placed_item.player].appendleft( - placed_item) - item_pool.append(placed_item) - - # cleanup at the end to hopefully get better errors - cleanup_required = True - - break + break # Item can't be placed here, restore original item location.item = placed_item From 9adbd4031f74ab5066e2993bdc317b0466cc8c25 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Tue, 20 May 2025 23:55:16 +0200 Subject: [PATCH 058/183] Core: prepare worlds.Files for APWorldContainer (#4331) Co-authored-by: Doug Hoskisson --- worlds/Files.py | 62 +++++++++++++++++++++++++++--------------- worlds/factorio/Mod.py | 2 +- worlds/kh2/OpenKH.py | 4 +-- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/worlds/Files.py b/worlds/Files.py index 69a88218efd4..e451d08cd9a9 100644 --- a/worlds/Files.py +++ b/worlds/Files.py @@ -78,24 +78,15 @@ class InvalidDataError(Exception): class APContainer: - """A zipfile containing at least archipelago.json""" - version: int = container_version - compression_level: int = 9 - compression_method: int = zipfile.ZIP_DEFLATED - game: Optional[str] = None + """A zipfile containing at least archipelago.json, which contains a manifest json payload.""" + version: ClassVar[int] = container_version + compression_level: ClassVar[int] = 9 + compression_method: ClassVar[int] = zipfile.ZIP_DEFLATED - # instance attributes: path: Optional[str] - player: Optional[int] - player_name: str - server: str - def __init__(self, path: Optional[str] = None, player: Optional[int] = None, - player_name: str = "", server: str = ""): + def __init__(self, path: Optional[str] = None): self.path = path - self.player = player - self.player_name = player_name - self.server = server def write(self, file: Optional[Union[str, BinaryIO]] = None) -> None: zip_file = file if file else self.path @@ -135,31 +126,58 @@ def read(self, file: Optional[Union[str, BinaryIO]] = None) -> None: message = f"{arg0} - " raise InvalidDataError(f"{message}This might be the incorrect world version for this file") from e - def read_contents(self, opened_zipfile: zipfile.ZipFile) -> None: + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> Dict[str, Any]: with opened_zipfile.open("archipelago.json", "r") as f: manifest = json.load(f) if manifest["compatible_version"] > self.version: raise Exception(f"File (version: {manifest['compatible_version']}) too new " f"for this handler (version: {self.version})") + return manifest + + def get_manifest(self) -> Dict[str, Any]: + return { + # minimum version of patch system expected for patching to be successful + "compatible_version": 5, + "version": container_version, + } + + +class APPlayerContainer(APContainer): + """A zipfile containing at least archipelago.json meant for a player""" + game: ClassVar[Optional[str]] = None + + player: Optional[int] + player_name: str + server: str + + def __init__(self, path: Optional[str] = None, player: Optional[int] = None, + player_name: str = "", server: str = ""): + super().__init__(path) + self.player = player + self.player_name = player_name + self.server = server + + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> Dict[str, Any]: + manifest = super().read_contents(opened_zipfile) self.player = manifest["player"] self.server = manifest["server"] self.player_name = manifest["player_name"] + return manifest def get_manifest(self) -> Dict[str, Any]: - return { + manifest = super().get_manifest() + manifest.update({ "server": self.server, # allow immediate connection to server in multiworld. Empty string otherwise "player": self.player, "player_name": self.player_name, "game": self.game, - # minimum version of patch system expected for patching to be successful - "compatible_version": 5, - "version": container_version, - } + }) + return manifest -class APPatch(APContainer): +class APPatch(APPlayerContainer): """ - An `APContainer` that represents a patch file. + An `APPlayerContainer` that represents a patch file. It includes the `procedure` key in the manifest to indicate that it is a patch. Your implementation should inherit from this if your output file diff --git a/worlds/factorio/Mod.py b/worlds/factorio/Mod.py index 8ea0b24c3d27..eb305897f435 100644 --- a/worlds/factorio/Mod.py +++ b/worlds/factorio/Mod.py @@ -63,7 +63,7 @@ } -class FactorioModFile(worlds.Files.APContainer): +class FactorioModFile(worlds.Files.APPlayerContainer): game = "Factorio" compression_method = zipfile.ZIP_DEFLATED # Factorio can't load LZMA archives writing_tasks: List[Callable[[], Tuple[str, Union[str, bytes]]]] diff --git a/worlds/kh2/OpenKH.py b/worlds/kh2/OpenKH.py index 7226525d0c4b..985c9913abe8 100644 --- a/worlds/kh2/OpenKH.py +++ b/worlds/kh2/OpenKH.py @@ -8,10 +8,10 @@ from .Items import item_dictionary_table from .Locations import all_locations, SoraLevels, exclusion_table from .XPValues import lvlStats, formExp, soraExp -from worlds.Files import APContainer +from worlds.Files import APPlayerContainer -class KH2Container(APContainer): +class KH2Container(APPlayerContainer): game: str = 'Kingdom Hearts 2' def __init__(self, patch_data: dict, base_path: str, output_directory: str, From feef0f484d2c5851bbbcabfe9e8a1a3cb2965aef Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Wed, 21 May 2025 00:52:00 +0200 Subject: [PATCH 059/183] Core: disable worlds_disabled (#5014) --- .github/labeler.yml | 1 - docs/CODEOWNERS | 11 +- docs/world maintainer.md | 4 +- setup.py | 4 - worlds_disabled/README.md | 13 -- worlds_disabled/oribf/Items.py | 10 -- worlds_disabled/oribf/Locations.py | 262 ----------------------------- worlds_disabled/oribf/Options.py | 12 -- worlds_disabled/oribf/README.md | 7 - worlds_disabled/oribf/Regions.py | 251 --------------------------- worlds_disabled/oribf/Rules.py | 59 ------- worlds_disabled/oribf/RulesData.py | 6 - worlds_disabled/oribf/Types.py | 5 - worlds_disabled/oribf/__init__.py | 71 -------- 14 files changed, 3 insertions(+), 713 deletions(-) delete mode 100644 worlds_disabled/README.md delete mode 100644 worlds_disabled/oribf/Items.py delete mode 100644 worlds_disabled/oribf/Locations.py delete mode 100644 worlds_disabled/oribf/Options.py delete mode 100644 worlds_disabled/oribf/README.md delete mode 100644 worlds_disabled/oribf/Regions.py delete mode 100644 worlds_disabled/oribf/Rules.py delete mode 100644 worlds_disabled/oribf/RulesData.py delete mode 100644 worlds_disabled/oribf/Types.py delete mode 100644 worlds_disabled/oribf/__init__.py diff --git a/.github/labeler.yml b/.github/labeler.yml index 2743104f410e..d0aa61c8cfc0 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -21,7 +21,6 @@ - '!data/**' - '!.run/**' - '!.github/**' - - '!worlds_disabled/**' - '!worlds/**' - '!WebHost.py' - '!WebHostLib/**' diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index dee8a6fd25d2..b89f668c0472 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -232,7 +232,7 @@ ## Active Unmaintained Worlds # The following worlds in this repo are currently unmaintained, but currently still work in core. If any update breaks -# compatibility, these worlds may be moved to `worlds_disabled`. If you are interested in stepping up as maintainer for +# compatibility, these worlds may be deleted. If you are interested in stepping up as maintainer for # any of these worlds, please review `/docs/world maintainer.md` documentation. # Final Fantasy (1) @@ -241,15 +241,6 @@ # Ocarina of Time # /worlds/oot/ -## Disabled Unmaintained Worlds - -# The following worlds in this repo are currently unmaintained and disabled as they do not work in core. If you are -# interested in stepping up as maintainer for any of these worlds, please review `/docs/world maintainer.md` -# documentation. - -# Ori and the Blind Forest -# /worlds_disabled/oribf/ - ################### ## Documentation ## ################### diff --git a/docs/world maintainer.md b/docs/world maintainer.md index 17aacdf8c269..6971a9822744 100644 --- a/docs/world maintainer.md +++ b/docs/world maintainer.md @@ -65,5 +65,5 @@ date, voting members and final result in the commit message. ## Handling of Unmaintained Worlds -As long as worlds are known to work for the most part, they can stay included. Once a world becomes broken it shall be -moved from `worlds/` to `worlds_disabled/`. +As long as worlds are known to work for the most part, they can stay included. Once the world becomes broken, it shall +be deleted. diff --git a/setup.py b/setup.py index 2654cc69da92..ccca46390b02 100644 --- a/setup.py +++ b/setup.py @@ -373,10 +373,6 @@ def run(self) -> None: assert not non_apworlds - set(AutoWorldRegister.world_types), \ f"Unknown world {non_apworlds - set(AutoWorldRegister.world_types)} designated for .apworld" folders_to_remove: list[str] = [] - disabled_worlds_folder = "worlds_disabled" - for entry in os.listdir(disabled_worlds_folder): - if os.path.isdir(os.path.join(disabled_worlds_folder, entry)): - folders_to_remove.append(entry) generate_yaml_templates(self.buildfolder / "Players" / "Templates", False) for worldname, worldtype in AutoWorldRegister.world_types.items(): if worldname not in non_apworlds: diff --git a/worlds_disabled/README.md b/worlds_disabled/README.md deleted file mode 100644 index a7bffe222b14..000000000000 --- a/worlds_disabled/README.md +++ /dev/null @@ -1,13 +0,0 @@ -## Folder Purpose - -This folder is for already merged worlds that are unmaintained and currently broken. If you are interested in fixing and -stepping up as maintainer for any of these worlds, please review the [world maintainer](/docs/world%20maintainer.md) -documentation. - -## Information for Disabled Worlds - -For each disabled world, a README file can be found detailing when the world was disabled and the reasons that it -was disabled. In order to be considered for reactivation, these concerns should be handled at a bare minimum. However, -each world may have additional issues that also need to be handled, such as deprecated API calls or missing components. - - diff --git a/worlds_disabled/oribf/Items.py b/worlds_disabled/oribf/Items.py deleted file mode 100644 index 788b802de387..000000000000 --- a/worlds_disabled/oribf/Items.py +++ /dev/null @@ -1,10 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -from typing import Dict - -item_table: Dict[str, int] = \ - {'EX100': 262144, 'AC': 262145, 'Bash': 262146, 'HC': 262147, 'Plant': 262148, 'MapStone': 262149, 'ChargeFlame': 262150, 'ChargeJump': 262151, 'Climb': 262152, 'MS': 262153, 'Dash': 262154, 'EC': 262155, 'EX200': 262156, 'DoubleJump': 262157, 'EX15': 262158, 'Wind': 262159, 'KS': 262160, 'Water': 262161, 'Glide': 262162, 'Grenade': 262163, 'ForlornKey': 262164, 'CS': 262165, 'Stomp': 262166, 'HoruKey': 262167, 'WallJump': 262168, 'GinsoKey': 262169} - -default_pool: Dict[str, int] = \ - {'EX100': 53, 'AC': 33, 'Bash': 1, 'HC': 12, 'Plant': 24, 'MapStone': 9, 'ChargeFlame': 1, 'ChargeJump': 1, 'Climb': 1, 'MS': 9, 'Dash': 1, 'EC': 14, 'EX200': 29, 'DoubleJump': 1, 'EX15': 6, 'Wind': 1, 'KS': 40, 'Water': 1, 'Glide': 1, 'Grenade': 1, 'ForlornKey': 1, 'CS': 8, 'Stomp': 1, 'HoruKey': 1, 'WallJump': 1, 'GinsoKey': 1} \ No newline at end of file diff --git a/worlds_disabled/oribf/Locations.py b/worlds_disabled/oribf/Locations.py deleted file mode 100644 index 1522fb557ea1..000000000000 --- a/worlds_disabled/oribf/Locations.py +++ /dev/null @@ -1,262 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -from .Types import * - -locations_data = \ - {'AboveChargeFlameTreeExp': Location(code=262144, vanilla_item='EX100'), - 'AboveChargeJumpAbilityCell': Location(code=262145, vanilla_item='AC'), - 'AboveFourthHealth': Location(code=262146, vanilla_item='AC'), - 'AboveGrottoTeleporterExp': Location(code=262147, vanilla_item='EX100'), - 'BashAreaExp': Location(code=262148, vanilla_item='EX100'), - 'BashSkillTree': Location(code=262149, vanilla_item='SKBash'), - 'BelowGrottoTeleporterHealthCell': Location(code=262150, vanilla_item='HC'), - 'BelowGrottoTeleporterPlant': Location(code=262151, vanilla_item='Plant'), - 'BlackrootBoulderExp': Location(code=262152, vanilla_item='EX100'), - 'BlackrootMap': Location(code=262153, vanilla_item='MapStone'), - 'BlackrootTeleporterHealthCell': Location(code=262154, vanilla_item='HC'), - 'ChargeFlameAreaExp': Location(code=262155, vanilla_item='EX100'), - 'ChargeFlameAreaPlant': Location(code=262156, vanilla_item='Plant'), - 'ChargeFlameSkillTree': Location(code=262157, vanilla_item='SKChargeFlame'), - 'ChargeJumpSkillTree': Location(code=262158, vanilla_item='SKChargeJump'), - 'ClimbSkillTree': Location(code=262159, vanilla_item='SKClimb'), - 'DashAreaAbilityCell': Location(code=262160, vanilla_item='AC'), - 'DashAreaMapstone': Location(code=262161, vanilla_item='MS'), - 'DashAreaOrbRoomExp': Location(code=262162, vanilla_item='EX100'), - 'DashAreaPlant': Location(code=262163, vanilla_item='Plant'), - 'DashAreaRoofExp': Location(code=262164, vanilla_item='EX100'), - 'DashSkillTree': Location(code=262165, vanilla_item='SKDash'), - 'DeathGauntletEnergyCell': Location(code=262166, vanilla_item='EC'), - 'DeathGauntletExp': Location(code=262167, vanilla_item='EX100'), - 'DeathGauntletRoofHealthCell': Location(code=262168, vanilla_item='HC'), - 'DeathGauntletRoofPlant': Location(code=262169, vanilla_item='Plant'), - 'DeathGauntletStompSwim': Location(code=262170, vanilla_item='EX200'), - 'DeathGauntletSwimEnergyDoor': Location(code=262171, vanilla_item='AC'), - 'DoorWarpExp': Location(code=262172, vanilla_item='EX200'), - 'DoubleJumpAreaExp': Location(code=262173, vanilla_item='EX100'), - 'DoubleJumpSkillTree': Location(code=262174, vanilla_item='SKDoubleJump'), - 'FarLeftGumoHideoutExp': Location(code=262175, vanilla_item='EX100'), - 'FirstPickup': Location(code=262176, vanilla_item='EX15'), - 'ForlornEntranceExp': Location(code=262177, vanilla_item='EX200'), - 'ForlornEscape': Location(code=262178, vanilla_item='EVWind'), - 'ForlornHiddenSpiderExp': Location(code=262179, vanilla_item='EX100'), - 'ForlornKeystone1': Location(code=262180, vanilla_item='KS'), - 'ForlornKeystone2': Location(code=262181, vanilla_item='KS'), - 'ForlornKeystone3': Location(code=262182, vanilla_item='KS'), - 'ForlornKeystone4': Location(code=262183, vanilla_item='KS'), - 'ForlornMap': Location(code=262184, vanilla_item='MapStone'), - 'ForlornPlant': Location(code=262185, vanilla_item='Plant'), - 'FourthHealthCell': Location(code=262186, vanilla_item='HC'), - 'FronkeyFight': Location(code=262187, vanilla_item='EX15'), - 'FronkeyWalkRoof': Location(code=262188, vanilla_item='EX200'), - 'GinsoEscapeExit': Location(code=262189, vanilla_item='EVWater'), - 'GinsoEscapeHangingExp': Location(code=262190, vanilla_item='EX100'), - 'GinsoEscapeJumpPadExp': Location(code=262191, vanilla_item='EX100'), - 'GinsoEscapeProjectileExp': Location(code=262192, vanilla_item='EX100'), - 'GinsoEscapeSpiderExp': Location(code=262193, vanilla_item='EX200'), - 'GladesGrenadePool': Location(code=262194, vanilla_item='EX200'), - 'GladesGrenadeTree': Location(code=262195, vanilla_item='AC'), - 'GladesKeystone1': Location(code=262196, vanilla_item='KS'), - 'GladesKeystone2': Location(code=262197, vanilla_item='KS'), - 'GladesLaser': Location(code=262198, vanilla_item='EC'), - 'GladesLaserGrenade': Location(code=262199, vanilla_item='AC'), - 'GladesMainPool': Location(code=262200, vanilla_item='EX100'), - 'GladesMainPoolDeep': Location(code=262201, vanilla_item='EC'), - 'GladesMap': Location(code=262202, vanilla_item='MapStone'), - 'GladesMapKeystone': Location(code=262203, vanilla_item='KS'), - 'GlideSkillFeather': Location(code=262204, vanilla_item='SKGlide'), - 'GrenadeAreaAbilityCell': Location(code=262205, vanilla_item='AC'), - 'GrenadeAreaExp': Location(code=262206, vanilla_item='EX100'), - 'GrenadeSkillTree': Location(code=262207, vanilla_item='SKGrenade'), - 'GrottoEnergyDoorHealthCell': Location(code=262208, vanilla_item='HC'), - 'GrottoEnergyDoorSwim': Location(code=262209, vanilla_item='EX100'), - 'GrottoHideoutFallAbilityCell': Location(code=262210, vanilla_item='AC'), - 'GrottoLasersRoofExp': Location(code=262211, vanilla_item='EX100'), - 'GrottoSwampDrainAccessExp': Location(code=262212, vanilla_item='EX100'), - 'GrottoSwampDrainAccessPlant': Location(code=262213, vanilla_item='Plant'), - 'GroveAboveSpiderWaterEnergyCell': Location(code=262214, vanilla_item='EC'), - 'GroveAboveSpiderWaterExp': Location(code=262215, vanilla_item='EX200'), - 'GroveAboveSpiderWaterHealthCell': Location(code=262216, vanilla_item='HC'), - 'GroveSpiderWaterSwim': Location(code=262217, vanilla_item='EX100'), - 'GroveWaterStompAbilityCell': Location(code=262218, vanilla_item='AC'), - 'GumoHideoutCrusherExp': Location(code=262219, vanilla_item='EX100'), - 'GumoHideoutCrusherKeystone': Location(code=262220, vanilla_item='KS'), - 'GumoHideoutEnergyCell': Location(code=262221, vanilla_item='EC'), - 'GumoHideoutLeftHangingExp': Location(code=262222, vanilla_item='EX15'), - 'GumoHideoutMap': Location(code=262223, vanilla_item='MapStone'), - 'GumoHideoutMapstone': Location(code=262224, vanilla_item='MS'), - 'GumoHideoutMiniboss': Location(code=262225, vanilla_item='KS'), - 'GumoHideoutRedirectAbilityCell': Location(code=262226, vanilla_item='AC'), - 'GumoHideoutRedirectEnergyCell': Location(code=262227, vanilla_item='EC'), - 'GumoHideoutRedirectExp': Location(code=262228, vanilla_item='EX200'), - 'GumoHideoutRedirectPlant': Location(code=262229, vanilla_item='Plant'), - 'GumoHideoutRightHangingExp': Location(code=262230, vanilla_item='EX15'), - 'GumoHideoutRockfallExp': Location(code=262231, vanilla_item='EX100'), - 'GumonSeal': Location(code=262232, vanilla_item='EVForlornKey'), - 'HollowGroveMap': Location(code=262233, vanilla_item='MapStone'), - 'HollowGroveMapPlant': Location(code=262234, vanilla_item='Plant'), - 'HollowGroveMapstone': Location(code=262235, vanilla_item='MS'), - 'HollowGroveTreeAbilityCell': Location(code=262236, vanilla_item='AC'), - 'HollowGroveTreePlant': Location(code=262237, vanilla_item='Plant'), - 'HoruFieldsAbilityCell': Location(code=262238, vanilla_item='AC'), - 'HoruFieldsEnergyCell': Location(code=262239, vanilla_item='EC'), - 'HoruFieldsHealthCell': Location(code=262240, vanilla_item='HC'), - 'HoruFieldsHiddenExp': Location(code=262241, vanilla_item='EX200'), - 'HoruFieldsPlant': Location(code=262242, vanilla_item='Plant'), - 'HoruL1': Location(code=262243, vanilla_item='CS'), - 'HoruL2': Location(code=262244, vanilla_item='CS'), - 'HoruL3': Location(code=262245, vanilla_item='CS'), - 'HoruL4': Location(code=262246, vanilla_item='CS'), - 'HoruL4ChaseExp': Location(code=262247, vanilla_item='EX200'), - 'HoruL4LowerExp': Location(code=262248, vanilla_item='EX200'), - 'HoruLavaDrainedLeftExp': Location(code=262249, vanilla_item='EX200'), - 'HoruLavaDrainedRightExp': Location(code=262250, vanilla_item='EX200'), - 'HoruMap': Location(code=262251, vanilla_item='MapStone'), - 'HoruR1': Location(code=262252, vanilla_item='CS'), - 'HoruR1EnergyCell': Location(code=262253, vanilla_item='EC'), - 'HoruR1HangingExp': Location(code=262254, vanilla_item='EX100'), - 'HoruR1Mapstone': Location(code=262255, vanilla_item='MS'), - 'HoruR2': Location(code=262256, vanilla_item='CS'), - 'HoruR3': Location(code=262257, vanilla_item='CS'), - 'HoruR3Plant': Location(code=262258, vanilla_item='Plant'), - 'HoruR4': Location(code=262259, vanilla_item='CS'), - 'HoruR4DrainedExp': Location(code=262260, vanilla_item='EX200'), - 'HoruR4LaserExp': Location(code=262261, vanilla_item='EX200'), - 'HoruR4StompExp': Location(code=262262, vanilla_item='EX200'), - 'HoruTeleporterExp': Location(code=262263, vanilla_item='EX200'), - 'IcelessExp': Location(code=262264, vanilla_item='EX100'), - 'InnerSwampDrainExp': Location(code=262265, vanilla_item='EX100'), - 'InnerSwampEnergyCell': Location(code=262266, vanilla_item='EC'), - 'InnerSwampHiddenSwimExp': Location(code=262267, vanilla_item='EX100'), - 'InnerSwampStompExp': Location(code=262268, vanilla_item='EX100'), - 'InnerSwampSwimLeftKeystone': Location(code=262269, vanilla_item='KS'), - 'InnerSwampSwimMapstone': Location(code=262270, vanilla_item='MS'), - 'InnerSwampSwimRightKeystone': Location(code=262271, vanilla_item='KS'), - 'KuroPerchExp': Location(code=262272, vanilla_item='EX200'), - 'LeftGladesExp': Location(code=262273, vanilla_item='EX15'), - 'LeftGladesHiddenExp': Location(code=262274, vanilla_item='EX15'), - 'LeftGladesKeystone': Location(code=262275, vanilla_item='KS'), - 'LeftGladesMapstone': Location(code=262276, vanilla_item='MS'), - 'LeftGrottoTeleporterExp': Location(code=262277, vanilla_item='EX200'), - 'LeftGumoHideoutExp': Location(code=262278, vanilla_item='EX100'), - 'LeftGumoHideoutHealthCell': Location(code=262279, vanilla_item='HC'), - 'LeftGumoHideoutLowerPlant': Location(code=262280, vanilla_item='Plant'), - 'LeftGumoHideoutSwim': Location(code=262281, vanilla_item='EX100'), - 'LeftGumoHideoutUpperPlant': Location(code=262282, vanilla_item='Plant'), - 'LeftSorrowAbilityCell': Location(code=262283, vanilla_item='AC'), - 'LeftSorrowEnergyCell': Location(code=262284, vanilla_item='EC'), - 'LeftSorrowGrenade': Location(code=262285, vanilla_item='EX200'), - 'LeftSorrowKeystone1': Location(code=262286, vanilla_item='KS'), - 'LeftSorrowKeystone2': Location(code=262287, vanilla_item='KS'), - 'LeftSorrowKeystone3': Location(code=262288, vanilla_item='KS'), - 'LeftSorrowKeystone4': Location(code=262289, vanilla_item='KS'), - 'LeftSorrowPlant': Location(code=262290, vanilla_item='Plant'), - 'LostGroveAbilityCell': Location(code=262291, vanilla_item='AC'), - 'LostGroveHiddenExp': Location(code=262292, vanilla_item='EX100'), - 'LostGroveLongSwim': Location(code=262293, vanilla_item='AC'), - 'LostGroveTeleporter': Location(code=262294, vanilla_item='EX100'), - 'LowerBlackrootAbilityCell': Location(code=262295, vanilla_item='AC'), - 'LowerBlackrootGrenadeThrow': Location(code=262296, vanilla_item='AC'), - 'LowerBlackrootLaserAbilityCell': Location(code=262297, vanilla_item='AC'), - 'LowerBlackrootLaserExp': Location(code=262298, vanilla_item='EX100'), - 'LowerGinsoHiddenExp': Location(code=262299, vanilla_item='EX100'), - 'LowerGinsoKeystone1': Location(code=262300, vanilla_item='KS'), - 'LowerGinsoKeystone2': Location(code=262301, vanilla_item='KS'), - 'LowerGinsoKeystone3': Location(code=262302, vanilla_item='KS'), - 'LowerGinsoKeystone4': Location(code=262303, vanilla_item='KS'), - 'LowerGinsoPlant': Location(code=262304, vanilla_item='Plant'), - 'LowerValleyExp': Location(code=262305, vanilla_item='EX100'), - 'LowerValleyMapstone': Location(code=262306, vanilla_item='MS'), - 'MistyAbilityCell': Location(code=262307, vanilla_item='AC'), - 'MistyEntranceStompExp': Location(code=262308, vanilla_item='EX100'), - 'MistyEntranceTreeExp': Location(code=262309, vanilla_item='EX100'), - 'MistyFrogNookExp': Location(code=262310, vanilla_item='EX100'), - 'MistyGrenade': Location(code=262311, vanilla_item='EX200'), - 'MistyKeystone1': Location(code=262312, vanilla_item='KS'), - 'MistyKeystone2': Location(code=262313, vanilla_item='KS'), - 'MistyKeystone3': Location(code=262314, vanilla_item='KS'), - 'MistyKeystone4': Location(code=262315, vanilla_item='KS'), - 'MistyMortarCorridorHiddenExp': Location(code=262316, vanilla_item='EX100'), - 'MistyMortarCorridorUpperExp': Location(code=262317, vanilla_item='EX100'), - 'MistyPlant': Location(code=262318, vanilla_item='Plant'), - 'MistyPostClimbAboveSpikePit': Location(code=262319, vanilla_item='EX200'), - 'MistyPostClimbSpikeCave': Location(code=262320, vanilla_item='EX100'), - 'MoonGrottoStompPlant': Location(code=262321, vanilla_item='Plant'), - 'OuterSwampAbilityCell': Location(code=262322, vanilla_item='AC'), - 'OuterSwampGrenadeExp': Location(code=262323, vanilla_item='EX200'), - 'OuterSwampHealthCell': Location(code=262324, vanilla_item='HC'), - 'OuterSwampMortarAbilityCell': Location(code=262325, vanilla_item='AC'), - 'OuterSwampMortarPlant': Location(code=262326, vanilla_item='Plant'), - 'OuterSwampStompExp': Location(code=262327, vanilla_item='EX100'), - 'OutsideForlornCliffExp': Location(code=262328, vanilla_item='EX200'), - 'OutsideForlornTreeExp': Location(code=262329, vanilla_item='EX100'), - 'OutsideForlornWaterExp': Location(code=262330, vanilla_item='EX100'), - 'RazielNo': Location(code=262331, vanilla_item='EX100'), - 'RightForlornHealthCell': Location(code=262332, vanilla_item='HC'), - 'RightForlornPlant': Location(code=262333, vanilla_item='Plant'), - 'SorrowEntranceAbilityCell': Location(code=262334, vanilla_item='AC'), - 'SorrowHealthCell': Location(code=262335, vanilla_item='HC'), - 'SorrowHiddenKeystone': Location(code=262336, vanilla_item='KS'), - 'SorrowLowerLeftKeystone': Location(code=262337, vanilla_item='KS'), - 'SorrowMainShaftKeystone': Location(code=262338, vanilla_item='KS'), - 'SorrowMap': Location(code=262339, vanilla_item='MapStone'), - 'SorrowMapstone': Location(code=262340, vanilla_item='MS'), - 'SorrowSpikeKeystone': Location(code=262341, vanilla_item='KS'), - 'SpiderSacEnergyCell': Location(code=262342, vanilla_item='EC'), - 'SpiderSacEnergyDoor': Location(code=262343, vanilla_item='AC'), - 'SpiderSacGrenadeDoor': Location(code=262344, vanilla_item='AC'), - 'SpiderSacHealthCell': Location(code=262345, vanilla_item='HC'), - 'SpiritCavernsAbilityCell': Location(code=262346, vanilla_item='AC'), - 'SpiritCavernsKeystone1': Location(code=262347, vanilla_item='KS'), - 'SpiritCavernsKeystone2': Location(code=262348, vanilla_item='KS'), - 'SpiritCavernsTopLeftKeystone': Location(code=262349, vanilla_item='KS'), - 'SpiritCavernsTopRightKeystone': Location(code=262350, vanilla_item='KS'), - 'StompAreaExp': Location(code=262351, vanilla_item='EX100'), - 'StompAreaGrenadeExp': Location(code=262352, vanilla_item='EX200'), - 'StompAreaRoofExp': Location(code=262353, vanilla_item='EX200'), - 'StompSkillTree': Location(code=262354, vanilla_item='SKStomp'), - 'Sunstone': Location(code=262355, vanilla_item='EVHoruKey'), - 'SunstonePlant': Location(code=262356, vanilla_item='Plant'), - 'SwampEntranceAbilityCell': Location(code=262357, vanilla_item='AC'), - 'SwampEntrancePlant': Location(code=262358, vanilla_item='Plant'), - 'SwampEntranceSwim': Location(code=262359, vanilla_item='EX200'), - 'SwampMap': Location(code=262360, vanilla_item='MapStone'), - 'SwampTeleporterAbilityCell': Location(code=262361, vanilla_item='AC'), - 'TopGinsoLeftLowerExp': Location(code=262362, vanilla_item='EX100'), - 'TopGinsoLeftUpperExp': Location(code=262363, vanilla_item='EX100'), - 'TopGinsoRightPlant': Location(code=262364, vanilla_item='Plant'), - 'UpperGinsoEnergyCell': Location(code=262365, vanilla_item='EC'), - 'UpperGinsoLowerKeystone': Location(code=262366, vanilla_item='KS'), - 'UpperGinsoRedirectLowerExp': Location(code=262367, vanilla_item='EX100'), - 'UpperGinsoRedirectUpperExp': Location(code=262368, vanilla_item='EX100'), - 'UpperGinsoRightKeystone': Location(code=262369, vanilla_item='KS'), - 'UpperGinsoUpperLeftKeystone': Location(code=262370, vanilla_item='KS'), - 'UpperGinsoUpperRightKeystone': Location(code=262371, vanilla_item='KS'), - 'UpperSorrowFarLeftKeystone': Location(code=262372, vanilla_item='KS'), - 'UpperSorrowFarRightKeystone': Location(code=262373, vanilla_item='KS'), - 'UpperSorrowLeftKeystone': Location(code=262374, vanilla_item='KS'), - 'UpperSorrowRightKeystone': Location(code=262375, vanilla_item='KS'), - 'UpperSorrowSpikeExp': Location(code=262376, vanilla_item='EX100'), - 'ValleyEntryAbilityCell': Location(code=262377, vanilla_item='AC'), - 'ValleyEntryGrenadeLongSwim': Location(code=262378, vanilla_item='EC'), - 'ValleyEntryTreeExp': Location(code=262379, vanilla_item='EX100'), - 'ValleyEntryTreePlant': Location(code=262380, vanilla_item='Plant'), - 'ValleyForlornApproachGrenade': Location(code=262381, vanilla_item='AC'), - 'ValleyForlornApproachMapstone': Location(code=262382, vanilla_item='MS'), - 'ValleyMainFACS': Location(code=262383, vanilla_item='AC'), - 'ValleyMainPlant': Location(code=262384, vanilla_item='Plant'), - 'ValleyMap': Location(code=262385, vanilla_item='MapStone'), - 'ValleyRightBirdStompCell': Location(code=262386, vanilla_item='AC'), - 'ValleyRightExp': Location(code=262387, vanilla_item='EX100'), - 'ValleyRightFastStomplessCell': Location(code=262388, vanilla_item='AC'), - 'ValleyRightSwimExp': Location(code=262389, vanilla_item='EX100'), - 'ValleyThreeBirdAbilityCell': Location(code=262390, vanilla_item='AC'), - 'WallJumpAreaEnergyCell': Location(code=262391, vanilla_item='EC'), - 'WallJumpAreaExp': Location(code=262392, vanilla_item='EX200'), - 'WallJumpSkillTree': Location(code=262393, vanilla_item='SKWallJump'), - 'WaterVein': Location(code=262394, vanilla_item='EVGinsoKey'), - 'WilhelmExp': Location(code=262395, vanilla_item='EX200')} - - - -lookup_name_to_id = {location_name: location_data.code for location_name, location_data in locations_data.items()} \ No newline at end of file diff --git a/worlds_disabled/oribf/Options.py b/worlds_disabled/oribf/Options.py deleted file mode 100644 index ac6808aa8d34..000000000000 --- a/worlds_disabled/oribf/Options.py +++ /dev/null @@ -1,12 +0,0 @@ -from .RulesData import location_rules -from Options import Toggle - - -options = { - "open" : Toggle, - "openworld": Toggle -} - -for logic_set in location_rules: - if logic_set != "casual-core": - options[logic_set.replace("-", "_")] = Toggle diff --git a/worlds_disabled/oribf/README.md b/worlds_disabled/oribf/README.md deleted file mode 100644 index 0c78c23bea0d..000000000000 --- a/worlds_disabled/oribf/README.md +++ /dev/null @@ -1,7 +0,0 @@ -### Ori and the Blind Forest - -This world was disabled for the following reasons: - -* Missing client -* Unmaintained -* Outdated, fails tests as of Jun 29, 2023 diff --git a/worlds_disabled/oribf/Regions.py b/worlds_disabled/oribf/Regions.py deleted file mode 100644 index c86608732cdf..000000000000 --- a/worlds_disabled/oribf/Regions.py +++ /dev/null @@ -1,251 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -locations_by_region = \ - {'AboveChargeJumpArea': {'AboveChargeJumpAbilityCell'}, 'BashTree': {'BashAreaExp', 'BashSkillTree'}, - 'BashTreeDoorClosed': set(), 'BashTreeDoorOpened': set(), 'BelowSunstoneArea': set(), - 'BlackrootDarknessRoom': {'DashAreaOrbRoomExp', 'DashAreaAbilityCell', 'DashAreaRoofExp'}, - 'BlackrootGrottoConnection': {'BlackrootBoulderExp', 'BlackrootMap', 'BlackrootTeleporterHealthCell'}, - 'ChargeFlameAreaPlantAccess': {'ChargeFlameAreaPlant'}, 'ChargeFlameAreaStump': set(), - 'ChargeFlameSkillTreeChamber': {'ChargeFlameSkillTree'}, 'ChargeJumpArea': {'ChargeJumpSkillTree'}, - 'ChargeJumpDoor': set(), 'ChargeJumpDoorOpen': set(), - 'ChargeJumpDoorOpenLeft': {'UpperSorrowSpikeExp', 'UpperSorrowRightKeystone', 'UpperSorrowLeftKeystone', - 'UpperSorrowFarRightKeystone', 'UpperSorrowFarLeftKeystone'}, - 'DashArea': {'DashAreaMapstone', 'DashSkillTree'}, 'DashPlantAccess': {'DashAreaPlant'}, - 'DeathGauntlet': {'DeathGauntletEnergyCell', 'DeathGauntletStompSwim', 'DeathGauntletExp'}, - 'DeathGauntletDoor': set(), 'DeathGauntletDoorOpened': set(), 'DeathGauntletMoat': {'DeathGauntletSwimEnergyDoor'}, - 'DeathGauntletRoof': {'DeathGauntletRoofHealthCell'}, 'DeathGauntletRoofPlantAccess': {'DeathGauntletRoofPlant'}, - 'DoubleJumpKeyDoor': set(), 'DoubleJumpKeyDoorOpened': {'DoubleJumpSkillTree', 'DoubleJumpAreaExp'}, - 'ForlornGravityRoom': {'ForlornKeystone2', 'ForlornHiddenSpiderExp', 'ForlornKeystone1'}, - 'ForlornInnerDoor': {'ForlornEntranceExp'}, 'ForlornKeyDoor': set(), 'ForlornLaserRoom': {'ForlornEscape'}, - 'ForlornMapArea': {'ForlornMap', 'ForlornKeystone4'}, - 'ForlornOrbPossession': {'ForlornKeystone2', 'ForlornHiddenSpiderExp', 'ForlornKeystone1', 'ForlornKeystone4', - 'ForlornKeystone3'}, 'ForlornOuterDoor': set(), 'ForlornPlantAccess': {'ForlornPlant'}, - 'ForlornStompDoor': set(), 'ForlornTeleporter': {'ForlornKeystone3'}, 'GinsoEscape': set(), - 'GinsoEscapeComplete': {'GinsoEscapeExit', 'GinsoEscapeSpiderExp', 'GinsoEscapeProjectileExp', - 'GinsoEscapeJumpPadExp', 'GinsoEscapeHangingExp'}, 'GinsoInnerDoor': set(), - 'GinsoMiniBossDoor': {'LowerGinsoKeystone2', 'LowerGinsoKeystone1', 'LowerGinsoKeystone3', 'LowerGinsoKeystone4'}, - 'GinsoOuterDoor': set(), 'GinsoTeleporter': set(), 'GladesLaserArea': {'GladesLaserGrenade', 'GladesLaser'}, - 'GladesMain': {'FourthHealthCell', 'GladesMap', 'GladesMapKeystone'}, 'GladesMainAttic': {'AboveFourthHealth'}, - 'GrenadeArea': {'GrenadeAreaAbilityCell', 'GrenadeAreaExp', 'GrenadeSkillTree'}, 'GrenadeAreaAccess': set(), - 'GumoHideout': {'GumoHideoutMapstone', 'GumoHideoutCrusherExp', 'GumoHideoutRightHangingExp', - 'GumoHideoutEnergyCell', 'GumoHideoutCrusherKeystone', 'GumoHideoutMap', 'GumoHideoutMiniboss'}, - 'GumoHideoutRedirectArea': {'GumoHideoutRedirectAbilityCell', 'GumoHideoutRedirectPlant'}, - 'GumoHideoutRedirectEnergyVault': {'GumoHideoutRedirectExp', 'GumoHideoutRedirectEnergyCell'}, - 'HollowGrove': {'GroveWaterStompAbilityCell', 'HollowGroveTreeAbilityCell', 'HollowGroveMapPlant', - 'HoruFieldsHealthCell', 'HollowGroveMap', 'SwampTeleporterAbilityCell', 'HollowGroveMapstone', - 'HollowGroveTreePlant'}, 'HoruBasement': {'DoorWarpExp'}, 'HoruEscapeInnerDoor': set(), - 'HoruEscapeOuterDoor': set(), 'HoruFields': set(), - 'HoruFieldsPushBlock': {'HoruFieldsEnergyCell', 'HoruFieldsPlant', 'HoruFieldsHiddenExp', 'HoruFieldsAbilityCell'}, - 'HoruInnerDoor': {'HoruLavaDrainedLeftExp', 'HoruLavaDrainedRightExp'}, - 'HoruL4CutscenePeg': {'HoruL4', 'HoruL4LowerExp'}, 'HoruL4LavaChasePeg': {'HoruL4ChaseExp'}, - 'HoruMapLedge': {'HoruMap'}, 'HoruOuterDoor': set(), 'HoruR1CutsceneTrigger': {'HoruR1EnergyCell', 'HoruR1'}, - 'HoruR1MapstoneSecret': {'HoruR1Mapstone'}, 'HoruR3CutsceneTrigger': {'HoruR3'}, 'HoruR3ElevatorLever': set(), - 'HoruR3PlantCove': {'HoruR3Plant'}, 'HoruR4CutsceneTrigger': {'HoruR4DrainedExp', 'HoruR4'}, - 'HoruR4PuzzleEntrance': {'HoruR4LaserExp'}, 'HoruR4StompHideout': {'HoruR4StompExp'}, - 'HoruTeleporter': {'HoruTeleporterExp'}, 'Iceless': {'IcelessExp'}, 'InnerSwampAboveDrainArea': set(), - 'InnerSwampDrainBroken': {'InnerSwampDrainExp'}, 'InnerSwampSkyArea': {'InnerSwampEnergyCell'}, 'L1': {'HoruL1'}, - 'L1InnerDoor': set(), 'L1OuterDoor': set(), 'L2': {'HoruL2'}, 'L2InnerDoor': set(), 'L2OuterDoor': set(), - 'L3': {'HoruL3'}, 'L3InnerDoor': set(), 'L3OuterDoor': set(), 'L4': set(), 'L4InnerDoor': set(), - 'L4OuterDoor': {'HoruLavaDrainedLeftExp'}, - 'LeftGlades': {'WallJumpAreaEnergyCell', 'LeftGladesHiddenExp', 'WallJumpAreaExp', 'WallJumpSkillTree'}, - 'LeftGumoHideout': {'FarLeftGumoHideoutExp', 'LeftGumoHideoutUpperPlant'}, - 'LeftSorrow': {'LeftSorrowAbilityCell', 'LeftSorrowPlant', 'LeftSorrowGrenade'}, - 'LeftSorrowKeystones': {'LeftSorrowEnergyCell', 'LeftSorrowKeystone1', 'LeftSorrowKeystone2', - 'LeftSorrowKeystone4', 'LeftSorrowKeystone3'}, 'LeftSorrowLowerDoor': set(), - 'LeftSorrowMiddleDoor': set(), 'LostGrove': {'LostGroveLongSwim'}, - 'LostGroveExit': {'LostGroveTeleporter', 'LostGroveAbilityCell', 'LostGroveHiddenExp'}, - 'LowerBlackroot': {'LowerBlackrootAbilityCell', 'LowerBlackrootLaserAbilityCell', 'LowerBlackrootGrenadeThrow', - 'LowerBlackrootLaserExp'}, 'LowerChargeFlameArea': {'ChargeFlameAreaExp'}, - 'LowerGinsoTree': {'LowerGinsoPlant', 'LowerGinsoHiddenExp'}, - 'LowerLeftGumoHideout': {'LeftGumoHideoutSwim', 'LeftGumoHideoutHealthCell', 'LeftGumoHideoutExp', - 'GumoHideoutLeftHangingExp', 'GumoHideoutRightHangingExp', 'LeftGumoHideoutLowerPlant'}, - 'LowerSorrow': {'SorrowLowerLeftKeystone', 'SorrowHiddenKeystone', 'SorrowEntranceAbilityCell', 'SorrowHealthCell', - 'SorrowSpikeKeystone'}, - 'LowerSpiritCaverns': {'SpiritCavernsKeystone1', 'SpiritCavernsAbilityCell', 'SpiritCavernsKeystone2'}, - 'LowerValley': {'LowerValleyExp', 'LowerValleyMapstone', 'KuroPerchExp'}, - 'LowerValleyPlantApproach': {'ValleyMainPlant'}, 'MidSpiritCaverns': set(), 'MiddleSorrow': set(), - 'MistyAbove200xp': {'MistyGrenade'}, 'MistyBeforeDocks': set(), 'MistyBeforeMiniBoss': set(), - 'MistyEntrance': {'MistyEntranceStompExp', 'MistyEntranceTreeExp'}, 'MistyKeystone3Ledge': {'MistyKeystone3'}, - 'MistyKeystone4Ledge': {'MistyKeystone4'}, 'MistyMortarSpikeCave': {'MistyPostClimbAboveSpikePit'}, - 'MistyOrbRoom': {'GumonSeal'}, 'MistyPostClimb': set(), - 'MistyPostFeatherTutorial': {'MistyFrogNookExp', 'MistyKeystone1'}, 'MistyPostKeystone1': set(), - 'MistyPostLasers': {'MistyPostClimbSpikeCave'}, 'MistyPostMortarCorridor': set(), - 'MistyPreClimb': {'ClimbSkillTree'}, 'MistyPreKeystone2': {'MistyKeystone2', 'MistyAbilityCell'}, - 'MistyPreLasers': set(), 'MistyPreMortarCorridor': {'MistyMortarCorridorUpperExp', 'MistyMortarCorridorHiddenExp'}, - 'MistyPrePlantLedge': {'MistyPlant'}, 'MistySpikeCave': set(), - 'MoonGrotto': {'GrottoEnergyDoorHealthCell', 'GrottoEnergyDoorSwim'}, - 'MoonGrottoAboveTeleporter': {'LeftGrottoTeleporterExp', 'AboveGrottoTeleporterExp'}, - 'MoonGrottoBelowTeleporter': {'BelowGrottoTeleporterPlant', 'BelowGrottoTeleporterHealthCell'}, - 'MoonGrottoStompPlantAccess': {'MoonGrottoStompPlant'}, - 'MoonGrottoSwampAccessArea': {'GrottoSwampDrainAccessExp', 'GrottoSwampDrainAccessPlant'}, - 'OuterSwampAbilityCellNook': {'OuterSwampAbilityCell'}, - 'OuterSwampLowerArea': {'OuterSwampHealthCell', 'OuterSwampStompExp'}, - 'OuterSwampMortarAbilityCellLedge': {'OuterSwampMortarAbilityCell'}, - 'OuterSwampMortarPlantAccess': {'OuterSwampMortarPlant'}, 'OuterSwampUpperArea': {'OuterSwampGrenadeExp'}, - 'OutsideForlorn': {'OutsideForlornTreeExp', 'OutsideForlornWaterExp'}, - 'OutsideForlornCliff': {'OutsideForlornCliffExp'}, 'R1': {'HoruR1HangingExp'}, 'R1InnerDoor': set(), - 'R1OuterDoor': set(), 'R2': {'HoruR2'}, 'R2InnerDoor': set(), 'R2OuterDoor': set(), 'R3': set(), - 'R3InnerDoor': set(), 'R3OuterDoor': set(), 'R4': {'HoruR4DrainedExp'}, 'R4InnerDoor': set(), - 'R4OuterDoor': {'HoruLavaDrainedRightExp'}, 'RazielNoArea': {'RazielNo'}, - 'RightForlorn': {'RightForlornPlant', 'RightForlornHealthCell'}, - 'RightSwamp': {'StompAreaGrenadeExp', 'StompSkillTree', 'StompAreaExp', 'StompAreaRoofExp'}, - 'SideFallCell': {'GrottoHideoutFallAbilityCell'}, 'SorrowBashLedge': set(), - 'SorrowMainShaftKeystoneArea': {'SorrowMainShaftKeystone'}, 'SorrowMapstoneArea': {'SorrowMap', 'SorrowMapstone'}, - 'SorrowTeleporter': set(), 'SpiderSacArea': {'AboveChargeFlameTreeExp'}, - 'SpiderSacEnergyNook': {'SpiderSacEnergyCell'}, - 'SpiderSacTetherArea': {'SpiderSacGrenadeDoor', 'SpiderSacEnergyDoor', 'SpiderSacHealthCell'}, - 'SpiderWaterArea': {'GroveSpiderWaterSwim', 'GroveAboveSpiderWaterEnergyCell', 'GroveAboveSpiderWaterExp', - 'GroveAboveSpiderWaterHealthCell'}, 'SpiritCavernsDoor': set(), - 'SpiritCavernsDoorOpened': set(), 'SpiritTreeDoor': set(), 'SpiritTreeDoorOpened': set(), - 'SpiritTreeRefined': {'AboveChargeFlameTreeExp'}, - 'SunkenGladesRunaway': {'FronkeyWalkRoof', 'GladesGrenadePool', 'GladesMainPoolDeep', 'FirstPickup', - 'FronkeyFight', 'GladesMainPool', 'GladesKeystone1', 'GladesGrenadeTree', - 'GladesKeystone2'}, 'SunstoneArea': {'Sunstone', 'SunstonePlant'}, - 'Swamp': {'InnerSwampDrainExp', 'SwampMap'}, 'SwampDrainlessArea': {'SwampEntranceAbilityCell'}, - 'SwampEntryArea': {'SwampEntrancePlant', 'SwampEntranceSwim'}, 'SwampKeyDoorOpened': set(), - 'SwampKeyDoorPlatform': {'InnerSwampStompExp'}, 'SwampTeleporter': set(), - 'SwampWater': {'InnerSwampSwimRightKeystone', 'InnerSwampSwimMapstone', 'InnerSwampHiddenSwimExp', - 'InnerSwampSwimLeftKeystone'}, - 'TopGinsoTree': {'TopGinsoLeftLowerExp', 'TopGinsoLeftUpperExp', 'TopGinsoRightPlant'}, - 'UpperGinsoDoorClosed': set(), 'UpperGinsoDoorOpened': set(), - 'UpperGinsoRedirectArea': {'BashAreaExp', 'UpperGinsoRedirectUpperExp', 'UpperGinsoRedirectLowerExp'}, - 'UpperGinsoTree': {'UpperGinsoUpperLeftKeystone', 'UpperGinsoLowerKeystone', 'UpperGinsoRightKeystone', - 'UpperGinsoUpperRightKeystone', 'UpperGinsoEnergyCell'}, 'UpperGrotto': {'GrottoLasersRoofExp'}, - 'UpperLeftGlades': {'LeftGladesKeystone', 'LeftGladesExp', 'LeftGladesMapstone'}, - 'UpperSorrow': {'UpperSorrowSpikeExp', 'UpperSorrowRightKeystone', 'UpperSorrowLeftKeystone', - 'UpperSorrowFarRightKeystone', 'UpperSorrowFarLeftKeystone'}, - 'UpperSpiritCaverns': {'SpiritCavernsTopRightKeystone', 'SpiritCavernsTopLeftKeystone'}, - 'ValleyEntry': {'ValleyEntryAbilityCell', 'ValleyThreeBirdAbilityCell'}, - 'ValleyEntryTree': {'ValleyEntryTreeExp', 'ValleyEntryGrenadeLongSwim'}, - 'ValleyEntryTreePlantAccess': {'ValleyEntryTreePlant'}, - 'ValleyForlornApproach': {'ValleyMap', 'ValleyForlornApproachGrenade', 'ValleyForlornApproachMapstone'}, - 'ValleyMain': {'GlideSkillFeather', 'KuroPerchExp'}, 'ValleyPostStompDoor': {'ValleyRightSwimExp'}, - 'ValleyRight': set(), 'ValleyStompFloor': set(), 'ValleyStompless': {'KuroPerchExp'}, - 'ValleyStomplessApproach': {'ValleyRightFastStomplessCell', 'ValleyRightBirdStompCell', 'ValleyRightExp'}, - 'ValleyTeleporter': set(), 'ValleyThreeBirdLever': {'ValleyThreeBirdAbilityCell', 'ValleyMainFACS'}, - 'WaterVeinArea': {'WaterVein', 'GumoHideoutRockfallExp'}, 'WilhelmLedge': {'WilhelmExp', 'KuroPerchExp'}} - -connectors = \ - {'AboveChargeJumpArea': {'SorrowTeleporter', 'ChargeJumpArea'}, - 'BashTree': {'BashTreeDoorClosed', 'UpperGinsoRedirectArea'}, 'BashTreeDoorClosed': {'BashTreeDoorOpened'}, - 'BashTreeDoorOpened': {'GinsoMiniBossDoor', 'BashTree'}, 'BelowSunstoneArea': {'SunstoneArea', 'UpperSorrow'}, - 'BlackrootDarknessRoom': {'DashArea'}, 'BlackrootGrottoConnection': {'SideFallCell'}, - 'ChargeFlameAreaStump': {'LowerChargeFlameArea', 'ChargeFlameSkillTreeChamber', 'ChargeFlameAreaPlantAccess'}, - 'ChargeFlameSkillTreeChamber': {'SpiritTreeRefined', 'ChargeFlameAreaStump'}, - 'ChargeJumpArea': {'AboveChargeJumpArea', 'ChargeJumpDoor'}, 'ChargeJumpDoor': {'ChargeJumpDoorOpen'}, - 'ChargeJumpDoorOpen': {'ChargeJumpDoorOpenLeft', 'ChargeJumpArea'}, 'ChargeJumpDoorOpenLeft': {'UpperSorrow'}, - 'DashArea': {'RazielNoArea', 'GrenadeAreaAccess', 'DashPlantAccess'}, - 'DeathGauntlet': {'DeathGauntletRoofPlantAccess', 'MoonGrotto', 'DeathGauntletMoat', 'MoonGrottoAboveTeleporter', - 'DeathGauntletRoof', 'DeathGauntletDoor'}, 'DeathGauntletDoor': {'DeathGauntletDoorOpened'}, - 'DeathGauntletDoorOpened': {'SunkenGladesRunaway', 'DeathGauntlet', 'DeathGauntletMoat'}, - 'DeathGauntletRoof': {'DeathGauntlet', 'DeathGauntletRoofPlantAccess'}, - 'DoubleJumpKeyDoor': {'DoubleJumpKeyDoorOpened'}, 'ForlornGravityRoom': {'ForlornMapArea', 'ForlornInnerDoor'}, - 'ForlornInnerDoor': {'ForlornGravityRoom', 'ForlornOrbPossession', 'ForlornOuterDoor'}, - 'ForlornKeyDoor': {'ForlornLaserRoom'}, 'ForlornLaserRoom': {'ForlornStompDoor'}, - 'ForlornMapArea': {'ForlornGravityRoom', 'ForlornKeyDoor', 'ForlornPlantAccess', 'ForlornTeleporter'}, - 'ForlornOrbPossession': {'ForlornMapArea', 'ForlornKeyDoor', 'ForlornPlantAccess', 'ForlornInnerDoor'}, - 'ForlornOuterDoor': {'OutsideForlorn', 'ForlornInnerDoor'}, 'ForlornStompDoor': {'RightForlorn'}, - 'ForlornTeleporter': {'ForlornMapArea', 'ForlornGravityRoom', 'ForlornOrbPossession'}, - 'GinsoEscape': {'GinsoEscapeComplete'}, 'GinsoEscapeComplete': {'Swamp'}, 'GinsoInnerDoor': {'LowerGinsoTree'}, - 'GinsoMiniBossDoor': {'BashTreeDoorClosed'}, 'GinsoOuterDoor': {'GinsoInnerDoor'}, - 'GinsoTeleporter': {'UpperGinsoDoorClosed', 'TopGinsoTree'}, 'GladesLaserArea': {'MidSpiritCaverns', 'GladesMain'}, - 'GladesMain': {'LeftGlades', 'SpiritCavernsDoor', 'LowerChargeFlameArea', 'GladesMainAttic', 'GladesLaserArea'}, - 'GladesMainAttic': {'LowerChargeFlameArea', 'GladesMain'}, 'GrenadeAreaAccess': {'LowerBlackroot', 'GrenadeArea'}, - 'GumoHideout': {'SideFallCell', 'LeftGumoHideout', 'LowerLeftGumoHideout', 'DoubleJumpKeyDoor'}, - 'GumoHideoutRedirectArea': {'GumoHideoutRedirectEnergyVault'}, - 'HollowGrove': {'MoonGrottoStompPlantAccess', 'Iceless', 'SwampTeleporter', 'SpiderWaterArea', 'HoruFields', - 'OuterSwampUpperArea'}, 'HoruBasement': {'HoruEscapeOuterDoor'}, - 'HoruEscapeOuterDoor': {'HoruEscapeInnerDoor'}, 'HoruFields': {'HoruOuterDoor', 'HoruFieldsPushBlock'}, - 'HoruFieldsPushBlock': {'HollowGrove'}, - 'HoruInnerDoor': {'HoruBasement', 'R2OuterDoor', 'HoruMapLedge', 'L1OuterDoor', 'L2OuterDoor', 'HoruTeleporter', - 'L3OuterDoor', 'R1OuterDoor', 'R4OuterDoor', 'HoruOuterDoor', 'L4OuterDoor', 'R3OuterDoor'}, - 'HoruL4LavaChasePeg': {'HoruL4CutscenePeg'}, 'HoruOuterDoor': {'HoruFieldsPushBlock', 'HoruInnerDoor'}, - 'HoruR1CutsceneTrigger': {'LowerGinsoTree'}, 'HoruR1MapstoneSecret': {'HoruR1CutsceneTrigger'}, - 'HoruR3CutsceneTrigger': {'HoruR3PlantCove'}, 'HoruR3ElevatorLever': {'HoruR3PlantCove', 'HoruR3CutsceneTrigger'}, - 'HoruR4PuzzleEntrance': {'HoruR4CutsceneTrigger'}, - 'HoruR4StompHideout': {'HoruR4CutsceneTrigger', 'HoruR4PuzzleEntrance'}, 'HoruTeleporter': {'HoruInnerDoor'}, - 'Iceless': {'HollowGrove', 'UpperGrotto'}, 'InnerSwampAboveDrainArea': {'InnerSwampDrainBroken'}, - 'InnerSwampDrainBroken': {'Swamp'}, 'InnerSwampSkyArea': {'SwampKeyDoorPlatform', 'Swamp'}, 'L1InnerDoor': {'L1'}, - 'L1OuterDoor': {'L1InnerDoor', 'HoruInnerDoor'}, 'L2InnerDoor': {'L2'}, - 'L2OuterDoor': {'L2InnerDoor', 'HoruInnerDoor'}, 'L3InnerDoor': {'L3'}, - 'L3OuterDoor': {'L3InnerDoor', 'HoruInnerDoor'}, 'L4': {'HoruL4CutscenePeg', 'HoruL4LavaChasePeg'}, - 'L4InnerDoor': {'L4'}, 'L4OuterDoor': {'L4InnerDoor', 'HoruInnerDoor'}, - 'LeftGlades': {'UpperLeftGlades', 'GladesMain'}, 'LeftGumoHideout': {'WaterVeinArea', 'LowerLeftGumoHideout'}, - 'LeftSorrow': {'LeftSorrowKeystones'}, 'LeftSorrowKeystones': {'LeftSorrowMiddleDoor', 'MiddleSorrow'}, - 'LeftSorrowLowerDoor': {'LeftSorrow'}, 'LeftSorrowMiddleDoor': {'MiddleSorrow'}, 'LostGrove': {'LostGroveExit'}, - 'LowerBlackroot': {'LostGrove'}, 'LowerChargeFlameArea': {'ChargeFlameAreaStump', 'GladesMain'}, - 'LowerGinsoTree': {'R4InnerDoor', 'GinsoMiniBossDoor'}, - 'LowerLeftGumoHideout': {'LowerBlackroot', 'GumoHideoutRedirectArea'}, - 'LowerSorrow': {'SorrowMainShaftKeystoneArea', 'SorrowMapstoneArea', 'LeftSorrowLowerDoor', 'LeftSorrow', - 'SunstoneArea', 'WilhelmLedge', 'MiddleSorrow'}, - 'LowerSpiritCaverns': {'SpiritCavernsDoor', 'MidSpiritCaverns', 'GladesLaserArea'}, - 'LowerValley': {'ValleyThreeBirdLever', 'LowerValleyPlantApproach', 'ValleyTeleporter', 'MistyEntrance'}, - 'MidSpiritCaverns': {'UpperSpiritCaverns', 'LowerSpiritCaverns', 'GladesLaserArea'}, - 'MiddleSorrow': {'SorrowMainShaftKeystoneArea', 'LeftSorrowKeystones', 'LeftSorrow', 'LowerSorrow', 'UpperSorrow', - 'SunstoneArea'}, 'MistyAbove200xp': {'MistyBeforeMiniBoss'}, - 'MistyBeforeDocks': {'MistyAbove200xp'}, 'MistyBeforeMiniBoss': {'MistyOrbRoom'}, - 'MistyEntrance': {'MistyPostFeatherTutorial'}, 'MistyKeystone3Ledge': {'MistyPreLasers'}, - 'MistyKeystone4Ledge': {'MistyBeforeDocks'}, 'MistyMortarSpikeCave': {'MistyKeystone4Ledge'}, - 'MistyOrbRoom': {'MistyPreKeystone2'}, 'MistyPostClimb': {'MistySpikeCave'}, - 'MistyPostFeatherTutorial': {'MistyPostKeystone1'}, 'MistyPostKeystone1': {'MistyPreMortarCorridor'}, - 'MistyPostLasers': {'MistyMortarSpikeCave'}, 'MistyPostMortarCorridor': {'MistyPrePlantLedge'}, - 'MistyPreClimb': {'MistyPostClimb', 'ForlornTeleporter', 'RightForlorn'}, 'MistyPreLasers': {'MistyPostLasers'}, - 'MistyPreMortarCorridor': {'MistyPostMortarCorridor', 'RightForlorn'}, 'MistyPrePlantLedge': {'MistyPreClimb'}, - 'MistySpikeCave': {'MistyKeystone3Ledge'}, - 'MoonGrotto': {'MoonGrottoBelowTeleporter', 'MoonGrottoAboveTeleporter', 'WaterVeinArea', 'DeathGauntlet', - 'GumoHideout'}, - 'MoonGrottoAboveTeleporter': {'MoonGrottoSwampAccessArea', 'MoonGrottoBelowTeleporter', - 'MoonGrottoStompPlantAccess', 'MoonGrotto', 'DeathGauntletRoof', 'UpperGrotto'}, - 'MoonGrottoSwampAccessArea': {'InnerSwampAboveDrainArea'}, 'OuterSwampAbilityCellNook': {'InnerSwampSkyArea'}, - 'OuterSwampLowerArea': {'OuterSwampAbilityCellNook', 'OuterSwampMortarPlantAccess', 'SwampEntryArea', - 'OuterSwampMortarAbilityCellLedge', 'UpperGrotto', 'OuterSwampUpperArea'}, - 'OuterSwampMortarAbilityCellLedge': {'OuterSwampMortarPlantAccess', 'UpperGrotto'}, - 'OuterSwampUpperArea': {'OuterSwampLowerArea', 'OuterSwampAbilityCellNook', 'GinsoOuterDoor'}, - 'OutsideForlorn': {'OutsideForlornCliff', 'RightForlorn', 'ForlornOuterDoor'}, - 'OutsideForlornCliff': {'OutsideForlorn', 'ValleyForlornApproach'}, 'R1': {'HoruR1MapstoneSecret'}, - 'R1InnerDoor': {'R1'}, 'R1OuterDoor': {'R1InnerDoor', 'L1OuterDoor'}, 'R2InnerDoor': {'R2'}, - 'R2OuterDoor': {'R2InnerDoor', 'HoruInnerDoor'}, 'R3': {'HoruR3ElevatorLever'}, 'R3InnerDoor': {'R3'}, - 'R3OuterDoor': {'R3InnerDoor', 'HoruInnerDoor'}, 'R4': {'HoruR4StompHideout'}, 'R4InnerDoor': {'R4'}, - 'R4OuterDoor': {'R4InnerDoor', 'HoruInnerDoor'}, 'RazielNoArea': {'GumoHideout', 'BlackrootGrottoConnection'}, - 'SideFallCell': {'LeftGumoHideout', 'GumoHideout'}, 'SorrowBashLedge': {'LowerSorrow'}, - 'SorrowMainShaftKeystoneArea': {'LowerSorrow'}, 'SorrowMapstoneArea': {'HoruInnerDoor'}, - 'SorrowTeleporter': {'AboveChargeJumpArea', 'BelowSunstoneArea'}, - 'SpiderSacArea': {'SpiritTreeRefined', 'SpiderWaterArea', 'SpiderSacTetherArea', 'SpiderSacEnergyNook'}, - 'SpiderSacEnergyNook': {'ChargeFlameAreaPlantAccess'}, - 'SpiderSacTetherArea': {'SpiderWaterArea', 'SpiderSacEnergyNook'}, - 'SpiderWaterArea': {'HollowGrove', 'DeathGauntletRoof', 'SpiderSacEnergyNook', 'SpiderSacArea'}, - 'SpiritCavernsDoor': {'SpiritCavernsDoorOpened'}, 'SpiritCavernsDoorOpened': {'LowerSpiritCaverns', 'GladesMain'}, - 'SpiritTreeDoor': {'SpiritTreeDoorOpened'}, 'SpiritTreeDoorOpened': {'SpiritTreeRefined', 'UpperSpiritCaverns'}, - 'SpiritTreeRefined': {'ChargeFlameAreaStump', 'SpiritTreeDoor', 'ChargeFlameSkillTreeChamber', 'ValleyEntry', - 'SpiderSacArea'}, - 'SunkenGladesRunaway': {'MoonGrotto', 'LowerChargeFlameArea', 'ValleyTeleporter', 'SorrowTeleporter', - 'HoruTeleporter', 'GladesMain', 'GinsoTeleporter', 'SwampTeleporter', 'SpiritTreeRefined', - 'BlackrootDarknessRoom', 'DeathGauntletDoor', 'ForlornTeleporter'}, - 'SunstoneArea': {'SorrowTeleporter', 'UpperSorrow'}, - 'Swamp': {'SwampKeyDoorPlatform', 'SwampDrainlessArea', 'SwampWater'}, - 'SwampEntryArea': {'SwampDrainlessArea', 'Swamp'}, 'SwampKeyDoorOpened': {'RightSwamp'}, - 'SwampKeyDoorPlatform': {'SwampKeyDoorOpened', 'InnerSwampSkyArea'}, - 'SwampTeleporter': {'HollowGrove', 'OuterSwampMortarAbilityCellLedge'}, 'TopGinsoTree': {'GinsoEscape'}, - 'UpperGinsoDoorClosed': {'UpperGinsoDoorOpened'}, 'UpperGinsoDoorOpened': {'GinsoTeleporter', 'UpperGinsoTree'}, - 'UpperGinsoRedirectArea': {'UpperGinsoTree', 'BashTree'}, - 'UpperGinsoTree': {'UpperGinsoDoorClosed', 'UpperGinsoRedirectArea'}, - 'UpperGrotto': {'MoonGrottoStompPlantAccess', 'Iceless', 'MoonGrottoAboveTeleporter', - 'OuterSwampMortarAbilityCellLedge', 'OuterSwampLowerArea'}, 'UpperLeftGlades': {'LeftGlades'}, - 'UpperSorrow': {'SunstoneArea', 'MiddleSorrow', 'SorrowTeleporter', 'ChargeJumpDoor'}, - 'UpperSpiritCaverns': {'SpiritTreeDoor', 'MidSpiritCaverns'}, - 'ValleyEntry': {'ValleyThreeBirdLever', 'ValleyStompFloor', 'ValleyPostStompDoor', 'ValleyEntryTreePlantAccess', - 'ValleyEntryTree', 'SpiritTreeRefined'}, - 'ValleyEntryTree': {'ValleyPostStompDoor', 'ValleyEntryTreePlantAccess'}, - 'ValleyForlornApproach': {'ValleyStompFloor', 'OutsideForlornCliff'}, - 'ValleyMain': {'LowerValleyPlantApproach', 'LowerValley', 'MistyEntrance', 'WilhelmLedge', 'ValleyStompless'}, - 'ValleyPostStompDoor': {'ValleyEntry', 'ValleyRight', 'ValleyEntryTree'}, - 'ValleyRight': {'ValleyPostStompDoor', 'ValleyStomplessApproach'}, - 'ValleyStompFloor': {'ValleyThreeBirdLever', 'ValleyEntry', 'ValleyForlornApproach'}, - 'ValleyStompless': {'LowerValleyPlantApproach', 'ValleyMain', 'LowerValley', 'WilhelmLedge', 'MistyEntrance', - 'ValleyStomplessApproach'}, 'ValleyStomplessApproach': {'ValleyRight', 'ValleyStompless'}, - 'ValleyTeleporter': {'LowerValleyPlantApproach', 'ValleyRight', 'ValleyPostStompDoor', 'LowerValley', - 'MistyEntrance', 'ValleyStompless'}, - 'ValleyThreeBirdLever': {'ValleyStompFloor', 'ValleyEntry', 'LowerValley'}, - 'WaterVeinArea': {'MoonGrotto', 'LeftGumoHideout', 'LowerLeftGumoHideout'}, - 'WilhelmLedge': {'ValleyMain', 'SorrowBashLedge', 'ValleyStompless'}} diff --git a/worlds_disabled/oribf/Rules.py b/worlds_disabled/oribf/Rules.py deleted file mode 100644 index e59bc6412fe4..000000000000 --- a/worlds_disabled/oribf/Rules.py +++ /dev/null @@ -1,59 +0,0 @@ -from typing import Set - -from .RulesData import location_rules -from worlds.generic.Rules import set_rule -from BaseClasses import Location, CollectionState - - -# TODO: implement Mapstone counting, Open, OpenWorld, connection rules - -def oribf_has_all(state: CollectionState, items: Set[str], player:int) -> bool: - return all(state.prog_items[item, player] if type(item) == str - else state.prog_items[item[0], player] >= item[1] for item in items) - -def set_rules(world): - temp_base_rule(world.multiworld, world.player) - for logicset in world.logic_sets: - apply_or_ruleset(world.multiworld, world.player, logicset) - - -def tautology(state): - return True - - -def add_or_rule_check_first(world, location: str, player: int, conditionsets): - location = world.get_location(location, player) - for set in conditionsets: - if "Free" in set: - location.access_rule = tautology - return - rule = lambda state, conditionsets=conditionsets: any( - oribf_has_all(state, conditionset, player) for conditionset in conditionsets) - if location.access_rule is Location.access_rule: - location.access_rule = rule - else: - old_rule = location.access_rule - location.access_rule = lambda state: rule(state) or old_rule(state) - - -def temp_base_rule(world, player): - world.completion_condition[player] = lambda state: oribf_has_all(state, - {"Bash", "ChargeFlame", "ChargeJump", "Climb", "Dash", "DoubleJump", "Glide", "Grenade", "Stomp", "WallJump"}, - player) - - -def base_rule(world, player): - if world.logic[player] != 'nologic': - # Victory gets placed on Escaped Horu Event - world.completion_condition[player] = lambda state: state.has('Victory', player) - # Events - # Also add: can complete goal - set_rule(world.get_location("Escaped Horu", player), - lambda state: state.can_reach("HoruEscapeInnerDoor", player) - and state.has_any({"Dash", "Stomp", "ChargeJump", "ChargeFlame"}, player)) - - -def apply_or_ruleset(world, player, rulesetname): - rules = location_rules[rulesetname] - for location, conditionsets in rules.items(): - add_or_rule_check_first(world, location, player, conditionsets) diff --git a/worlds_disabled/oribf/RulesData.py b/worlds_disabled/oribf/RulesData.py deleted file mode 100644 index 11a51c07637d..000000000000 --- a/worlds_disabled/oribf/RulesData.py +++ /dev/null @@ -1,6 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -# Rules from areas.ori -location_rules = {'casual-core': {'AboveChargeJumpAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'BashSkillTree': {frozenset({'GinsoKey'})}, 'BashAreaExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'GinsoKey', 'ChargeJump'})}, 'DashAreaOrbRoomExp': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DashAreaAbilityCell': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DashAreaRoofExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'BlackrootBoulderExp': {frozenset({'Stomp'})}, 'BlackrootMap': {frozenset({'MapStone', 'ChargeJump'}), frozenset({'Climb', 'MapStone', 'DoubleJump'}), frozenset({'MapStone', 'WallJump'}), frozenset({'Grenade', 'Bash', 'MapStone'})}, 'ChargeFlameAreaPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DashAreaMapstone': {frozenset({'Dash'})}, 'DashAreaPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DeathGauntletExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DeathGauntletStompSwim': {frozenset({'Stomp', 'Water'})}, 'DeathGauntletEnergyCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DeathGauntletSwimEnergyDoor': {frozenset({('EC', 4)})}, 'DeathGauntletRoofPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DoubleJumpSkillTree': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'DoubleJump'})}, 'DoubleJumpAreaExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'Bash', 'WallJump', 'Water'}), frozenset({'ChargeJump', 'WallJump', 'Water'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey', 'Bash'})}, 'ForlornKeystone1': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey'}), frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'ForlornKey', 'DoubleJump', 'Bash'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'Glide', 'ForlornKey', 'DoubleJump', 'WallJump'}), frozenset({'ForlornKey'}), frozenset({'Climb', 'ForlornKey', 'Glide', 'DoubleJump'})}, 'ForlornEntranceExp': {frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'Open'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'}), frozenset({'ForlornKey', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ForlornKey', 'WallJump', 'Open'}), frozenset({'ForlornKey', 'DoubleJump', 'Open'}), frozenset({'Climb', 'ForlornKey', 'DoubleJump'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'}), frozenset({'Glide', 'ForlornKey', 'Climb', 'Open'})}, 'ForlornEscape': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'ForlornMap': {frozenset({'ForlornKey', 'MapStone'})}, 'ForlornKeystone4': {frozenset({'ForlornKey'}), frozenset({'Grenade', 'ForlornKey', 'WallJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'})}, 'ForlornKeystone3': {frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'}), frozenset({'Glide', 'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}, 'ForlornPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'LowerGinsoKeystone1': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'LowerGinsoKeystone2': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'LowerGinsoKeystone3': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'LowerGinsoKeystone4': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GladesLaser': {frozenset({'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}, 'GladesMap': {frozenset({'MapStone'})}, 'GrenadeSkillTree': {frozenset({'Climb', 'Dash'}), frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'})}, 'GrenadeAreaExp': {frozenset({'Climb', 'Dash', 'Glide'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'Dash', 'Bash'}), frozenset({'Glide', 'Dash', 'WallJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Grenade', 'Dash', 'ChargeJump'})}, 'GumoHideoutMap': {frozenset({'MapStone'})}, 'GumoHideoutRightHangingExp': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}, 'GumoHideoutMapstone': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'DoubleJump'})}, 'GumoHideoutMiniboss': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GumoHideoutEnergyCell': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutCrusherExp': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'Climb'}), frozenset({'WallJump'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'GumoHideoutRedirectPlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeFlame'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Climb', 'Grenade'})}, 'GumoHideoutRedirectEnergyCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GumoHideoutRedirectExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GroveWaterStompAbilityCell': {frozenset({'Stomp', 'Water'})}, 'HoruFieldsHealthCell': {frozenset({'Stomp'})}, 'HollowGroveTreePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'HollowGroveTreeAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'HollowGroveMap': {frozenset({'MapStone'})}, 'HollowGroveMapPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SwampTeleporterAbilityCell': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash', 'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide', 'WallJump'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb', 'Glide'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'DoorWarpExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruFieldsPlant': {frozenset({'Grenade', 'Glide', 'ChargeJump'}), frozenset({'ChargeFlame', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Bash'}), frozenset({'Climb', 'ChargeJump', 'Grenade'}), frozenset({'Climb', 'ChargeJump', 'ChargeFlame'})}, 'HoruFieldsEnergyCell': {frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'})}, 'HoruFieldsHiddenExp': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', 'Bash'}), frozenset({'Glide', 'Open', 'DoubleJump'}), frozenset({'Open', 'ChargeJump'})}, 'HoruLavaDrainedRightExp': {frozenset({'Glide', 'Open', 'Bash'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'Glide', 'Open', 'ChargeJump'})}, 'HoruL4': {frozenset({'Stomp'})}, 'HoruL4LowerExp': {frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}, 'HoruL4ChaseExp': {frozenset({'Free'})}, 'HoruMap': {frozenset({'MapStone'})}, 'HoruR1EnergyCell': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'Glide', 'WallJump'})}, 'HoruR3Plant': {frozenset({'Grenade'})}, 'HoruR4DrainedExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump'})}, 'HoruR4LaserExp': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'InnerSwampDrainExp': {frozenset({'Grenade', 'Bash', 'WallJump', 'Water'}), frozenset({'Climb', 'ChargeJump', 'Water'}), frozenset({'Glide'}), frozenset({'Climb', 'Bash', 'Grenade', 'Water'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'Water', 'Glide', 'Stomp', 'WallJump'}), frozenset({'DoubleJump', 'WallJump', 'Water'}), frozenset({'Grenade', 'Glide', 'Water', 'Bash'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'Water'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'Water'}), frozenset({'DoubleJump'}), frozenset({'Water', 'Grenade', 'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', 'DoubleJump', 'Water'}), frozenset({'Climb', 'Dash', 'Glide', 'Water'})}, 'HoruL1': {frozenset({'Grenade', 'Glide', 'Stomp', 'Bash'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump'})}, 'HoruL3': {frozenset({'Glide', 'Bash', 'Stomp', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'Stomp'}), frozenset({'Stomp', 'DoubleJump', 'Bash'})}, 'WallJumpAreaExp': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'WallJumpAreaEnergyCell': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Climb', 'ChargeFlame'}), frozenset({'Grenade'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump'})}, 'FarLeftGumoHideoutExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({'Glide', 'Bash'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}, 'LeftSorrowGrenade': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}, 'LeftSorrowPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump', 'WallJump'}), frozenset({'Grenade'})}, 'LeftSorrowKeystone1': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'LeftSorrowKeystone2': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'LeftSorrowKeystone3': {frozenset({'Glide'})}, 'LeftSorrowKeystone4': {frozenset({'Glide'})}, 'LeftSorrowEnergyCell': {frozenset({'Glide'})}, 'LostGroveLongSwim': {frozenset({'Water'})}, 'LostGroveHiddenExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'LostGroveTeleporter': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'LowerBlackrootAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Grenade', 'Dash', 'Bash'})}, 'LowerBlackrootLaserExp': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}, 'LowerBlackrootGrenadeThrow': {frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Climb', 'Grenade'}), frozenset({'Grenade', 'Glide'}), frozenset({'Grenade', 'DoubleJump'})}, 'LowerGinsoHiddenExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerGinsoPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'LeftGumoHideoutLowerPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GumoHideoutLeftHangingExp': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'LeftGumoHideoutExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'LeftGumoHideoutHealthCell': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'})}, 'LeftGumoHideoutSwim': {frozenset({'Water'})}, 'SorrowSpikeKeystone': {frozenset({'Glide'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'SorrowHiddenKeystone': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Glide'})}, 'SorrowHealthCell': {frozenset({'Glide', 'ChargeJump', 'Bash'})}, 'SorrowLowerLeftKeystone': {frozenset({'Glide'})}, 'SpiritCavernsKeystone2': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'LowerValleyMapstone': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Glide', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide'}), frozenset({'Bash'}), frozenset({'Glide', 'OpenWorld'}), frozenset({'Stomp'})}, 'ValleyMainPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'MistyGrenade': {frozenset({'Grenade'})}, 'MistyEntranceStompExp': {frozenset({'Stomp'})}, 'MistyEntranceTreeExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}, 'GumonSeal': {frozenset({'Climb'}), frozenset({'DoubleJump'}), frozenset({'Bash'}), frozenset({'WallJump'})}, 'MistyFrogNookExp': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', 'Bash', 'DoubleJump'})}, 'MistyAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Glide', 'Bash'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Glide'})}, 'MistyPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GrottoEnergyDoorSwim': {frozenset({('EC', 2), 'Water'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'ChargeJump'}), frozenset({('EC', 2), 'Bash', 'Grenade'}), frozenset({('EC', 2), 'DoubleJump', 'WallJump'})}, 'AboveGrottoTeleporterExp': {frozenset({'Grenade', 'Bash'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'Bash', 'WallJump'})}, 'LeftGrottoTeleporterExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}, 'BelowGrottoTeleporterPlant': {frozenset({'ChargeFlame', 'Glide'}), frozenset({'Grenade', 'Glide'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'MoonGrottoStompPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GrottoSwampDrainAccessExp': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'DoubleJump'})}, 'GrottoSwampDrainAccessPlant': {frozenset({'Grenade', 'Stomp'}), frozenset({'ChargeFlame', 'Stomp', 'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump', 'Glide'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump', 'DoubleJump'})}, 'OuterSwampStompExp': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'OuterSwampHealthCell': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'OuterSwampMortarPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'OuterSwampGrenadeExp': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'Climb'})}, 'OutsideForlornTreeExp': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'OutsideForlornWaterExp': {frozenset({'Water'})}, 'OutsideForlornCliffExp': {frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Dash'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'HoruR1HangingExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'HoruR2': {frozenset({'ChargeJump', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'Grenade', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'RightForlornPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'StompAreaExp': {frozenset({'Bash'}), frozenset({'Stomp'})}, 'StompAreaRoofExp': {frozenset({'ChargeJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'Glide', 'Water'}), frozenset({'Climb', 'Water', 'Grenade', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Stomp', 'ChargeJump', 'Water'}), frozenset({'Grenade', 'Bash', 'Stomp', 'Water'})}, 'SorrowMapstone': {frozenset({'Bash'})}, 'SorrowMap': {frozenset({'Bash', 'MapStone'}), frozenset({'Stomp', 'MapStone'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'ChargeFlame', 'Climb', 'ChargeJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 4)})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GroveSpiderWaterSwim': {frozenset({'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'})}, 'AboveChargeFlameTreeExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GladesGrenadePool': {frozenset({'Grenade', 'Water'})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesMainPool': {frozenset({'Water'})}, 'GladesMainPoolDeep': {frozenset({'Water'})}, 'FronkeyWalkRoof': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'})}, 'SunstonePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SwampMap': {frozenset({'MapStone'})}, 'SwampEntranceSwim': {frozenset({'Water'})}, 'SwampEntrancePlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Climb'})}, 'InnerSwampStompExp': {frozenset({'Stomp', 'Water'})}, 'InnerSwampSwimRightKeystone': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Glide', 'WallJump'})}, 'TopGinsoLeftLowerExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'TopGinsoLeftUpperExp': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'UpperGinsoLowerKeystone': {frozenset({'Glide', 'Bash', 'GinsoKey'}), frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Glide', 'Bash', 'GinsoKey'}), frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoEnergyCell': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'LeftGladesExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'UpperSorrowRightKeystone': {frozenset({'Glide'})}, 'UpperSorrowFarRightKeystone': {frozenset({'Glide'})}, 'UpperSorrowLeftKeystone': {frozenset({'Glide'})}, 'UpperSorrowSpikeExp': {frozenset({'Glide'})}, 'UpperSorrowFarLeftKeystone': {frozenset({'Glide'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Glide'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'ChargeJump', 'OpenWorld'}), frozenset({'Bash'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'ValleyEntryGrenadeLongSwim': {frozenset({'Grenade', 'Water'})}, 'ValleyEntryTreePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'ValleyForlornApproachGrenade': {frozenset({'Grenade'})}, 'ValleyMap': {frozenset({'Bash', 'MapStone'})}, 'ValleyRightSwimExp': {frozenset({'Water'})}, 'ValleyRightBirdStompCell': {frozenset({'Climb', 'ChargeJump'})}, 'ValleyRightFastStomplessCell': {frozenset({'Glide', 'Wind'})}, 'ValleyRightExp': {frozenset({'Bash'})}, 'ValleyMainFACS': {frozenset({'Climb', 'ChargeJump'})}, 'WilhelmExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Climb'})}}, 'dbash': {'AboveChargeJumpAbilityCell': {frozenset({'Bash'})}, 'GrenadeSkillTree': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Bash', 'DoubleJump'})}, 'GrenadeAreaExp': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Bash', 'DoubleJump'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Bash'})}, 'HoruFieldsEnergyCell': {frozenset({'Bash'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', 'Bash'}), frozenset({'Bash'})}, 'HoruR4DrainedExp': {frozenset({'Bash'})}, 'HoruR4LaserExp': {frozenset({'Bash'})}, 'LeftSorrowGrenade': {frozenset({'Grenade', 'Bash'})}, 'GumoHideoutLeftHangingExp': {frozenset({'Bash'})}, 'GumoHideoutRightHangingExp': {frozenset({'Bash'})}, 'LeftGumoHideoutExp': {frozenset({'Bash'})}, 'LeftGumoHideoutHealthCell': {frozenset({'Bash'})}, 'SorrowSpikeKeystone': {frozenset({'Bash'})}, 'SorrowHiddenKeystone': {frozenset({'Bash'})}, 'SorrowHealthCell': {frozenset({'Bash'})}, 'AboveGrottoTeleporterExp': {frozenset({'Bash'})}, 'GrottoSwampDrainAccessExp': {frozenset({'Bash'})}, 'StompAreaRoofExp': {frozenset({'Bash'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Bash'})}, 'ValleyMainFACS': {frozenset({'Bash'})}, 'WilhelmExp': {frozenset({'Bash'})}}, 'expert-abilities': {'AboveChargeJumpAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'BashAreaExp': {frozenset({('AC', 6), 'Dash', 'GinsoKey'}), frozenset({('AC', 6), 'Dash', 'GinsoKey', 'DoubleJump', 'WallJump'})}, 'ChargeFlameAreaPlant': {frozenset({'Dash', ('AC', 6)})}, 'DashAreaPlant': {frozenset({'Dash', ('AC', 6)})}, 'DeathGauntletRoofPlant': {frozenset({'Dash', ('AC', 6)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', ('AC', 6), 'Dash'})}, 'ForlornPlant': {frozenset({'Dash', ('AC', 6)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'ForlornKey', ('AC', 6), 'Dash'})}, 'GladesLaser': {frozenset({'Dash', ('AC', 6)})}, 'GladesLaserGrenade': {frozenset({('AC', 6), ('EC', 1), 'Dash', 'Grenade', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'Glide', 'ChargeJump'}), frozenset({('AC', 6), ('EC', 2), 'Climb', 'Dash', 'Grenade', 'ChargeJump'})}, 'GrenadeSkillTree': {frozenset({'Dash', ('AC', 6)})}, 'GrenadeAreaExp': {frozenset({'Dash', ('AC', 6)})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GumoHideoutRedirectPlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'HollowGroveTreePlant': {frozenset({'Dash', ('AC', 6)})}, 'HollowGroveTreeAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'HollowGroveMapPlant': {frozenset({'Dash', ('AC', 6)})}, 'SwampTeleporterAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'HoruFieldsPlant': {frozenset({'Dash', ('AC', 6), ('EC', 3)})}, 'HoruFieldsEnergyCell': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'HoruFieldsHiddenExp': {frozenset({'Dash', ('AC', 6)})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'HoruL4LowerExp': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', 'Stomp', ('AC', 3)})}, 'HoruR3Plant': {frozenset({'Dash', ('AC', 6)})}, 'HoruR4DrainedExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)}), frozenset({'Dash', ('AC', 6)})}, 'HoruR4LaserExp': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 2)})}, 'HoruL1': {frozenset({'Dash', 'Stomp', ('AC', 3), 'Bash'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', ('EC', 3)})}, 'HoruL2': {frozenset({'Stomp', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}, 'HoruL3': {frozenset({('AC', 6), 'Climb', 'Dash', ('EC', 2), 'ChargeJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'LeftSorrowPlant': {frozenset({'Dash', ('AC', 6)})}, 'LowerBlackrootAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'LowerBlackrootLaserExp': {frozenset({'Dash', ('AC', 6)})}, 'LowerGinsoPlant': {frozenset({'Dash', ('AC', 6)})}, 'LeftGumoHideoutLowerPlant': {frozenset({'Dash', ('AC', 6)})}, 'LeftGumoHideoutHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'SorrowSpikeKeystone': {frozenset({'Dash', ('AC', 6)})}, 'SorrowHiddenKeystone': {frozenset({'Dash', ('AC', 6)})}, 'SorrowLowerLeftKeystone': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp'})}, 'SpiritCavernsKeystone2': {frozenset({'Dash', ('AC', 6)})}, 'SpiritCavernsAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'LowerValleyMapstone': {frozenset({'Dash', ('AC', 6)})}, 'KuroPerchExp': {frozenset({'Dash', ('AC', 6), 'OpenWorld'}), frozenset({'Dash', ('AC', 3), 'ChargeJump', 'WallJump'}), frozenset({'Dash', ('AC', 6)})}, 'ValleyMainPlant': {frozenset({'Dash', ('AC', 6)})}, 'MistyEntranceTreeExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyMortarCorridorUpperExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'MistyPlant': {frozenset({'Dash', ('AC', 6)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'AboveGrottoTeleporterExp': {frozenset({'Dash', ('AC', 6)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'BelowGrottoTeleporterPlant': {frozenset({'Dash', ('AC', 6)})}, 'MoonGrottoStompPlant': {frozenset({'Dash', ('AC', 6)})}, 'GrottoSwampDrainAccessExp': {frozenset({'Dash', ('AC', 6)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampStompExp': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampMortarPlant': {frozenset({'Dash', ('AC', 6)})}, 'RightForlornPlant': {frozenset({'Dash', ('AC', 6)})}, 'StompAreaExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}, 'StompAreaGrenadeExp': {frozenset({('AC', 6), 'Dash', 'Water', 'Grenade', 'Stomp'}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Water', 'Grenade'})}, 'SorrowMapstone': {frozenset({'Dash', ('AC', 6)})}, 'AboveChargeFlameTreeExp': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterExp': {frozenset({'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'FronkeyWalkRoof': {frozenset({'Dash', ('AC', 6)})}, 'SunstonePlant': {frozenset({'Dash', ('AC', 6)})}, 'InnerSwampDrainExp': {frozenset({'Climb', 'Dash', 'Water', 'Grenade', 'Stomp', ('AC', 3)}), frozenset({'Climb', 'Dash', ('AC', 6), 'Water'}), frozenset({'ChargeFlame', 'Climb', 'Dash', 'Water', 'Stomp', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'WallJump', 'Water'})}, 'SwampEntrancePlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'InnerSwampStompExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3), 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({'Dash', ('AC', 6)})}, 'TopGinsoLeftUpperExp': {frozenset({'Dash', ('AC', 6)})}, 'TopGinsoRightPlant': {frozenset({'Dash', ('AC', 6)})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoLowerKeystone': {frozenset({('AC', 6), 'Dash', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}, 'UpperSorrowLeftKeystone': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyEntryTreePlant': {frozenset({'Dash', ('AC', 6)})}, 'ValleyMap': {frozenset({'Grenade', 'Dash', 'MapStone', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', 'MapStone', ('AC', 3)})}, 'ValleyMainFACS': {frozenset({'WallJump', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Wind', 'Dash', 'Glide', ('AC', 3), 'ChargeJump', 'WallJump'})}}, 'master-abilities': {'BashAreaExp': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'GumoHideoutRedirectPlant': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}, 'HoruFieldsAbilityCell': {frozenset({'Glide', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', ('AC', 12), 'DoubleJump'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)}), frozenset({'Glide', 'Open', ('AC', 12), 'DoubleJump'})}, 'HoruR4DrainedExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'HoruL1': {frozenset({('AC', 6), ('EC', 1), 'Dash', 'Stomp', 'DoubleJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', ('AC', 3), 'Dash'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}, 'HoruL3': {frozenset({('AC', 6), 'Dash', ('EC', 6), 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', ('EC', 3)}), frozenset({('AC', 6), ('EC', 4), 'Dash', 'Glide', 'DoubleJump'}), frozenset({'Dash', ('AC', 6), ('EC', 7)}), frozenset({'Glide', 'Dash', ('AC', 6), ('EC', 6)}), frozenset({('AC', 12), 'Climb', 'Dash', 'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({('AC', 6), 'Climb', 'Dash', ('EC', 6), 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'LowerGinsoHiddenExp': {frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'WallJump'})}, 'LeftGumoHideoutExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'LeftGumoHideoutHealthCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'SorrowLowerLeftKeystone': {frozenset({('AC', 12), 'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyFrogNookExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyMortarCorridorUpperExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyMortarCorridorHiddenExp': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'OuterSwampHealthCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'SpiderSacHealthCell': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'TopGinsoLeftUpperExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump'})}, 'UpperSorrowRightKeystone': {frozenset({('AC', 6), 'Dash', 'Grenade', 'Bash', 'DoubleJump'})}, 'UpperSorrowFarRightKeystone': {frozenset({('AC', 12), 'Dash', 'Grenade', 'Bash', 'DoubleJump'})}, 'ValleyThreeBirdAbilityCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'WilhelmExp': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'KuroPerchExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'master-core': {'DashAreaRoofExp': {frozenset({'DoubleJump'}), frozenset({'Bash'})}, 'DoubleJumpAreaExp': {frozenset({'DoubleJump'})}, 'ForlornKeystone4': {frozenset({'Grenade', 'ForlornKey', 'DoubleJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}, 'LowerGinsoKeystone3': {frozenset({'DoubleJump'})}, 'LowerGinsoKeystone4': {frozenset({'DoubleJump'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Bash', 'DoubleJump'})}, 'GrenadeSkillTree': {frozenset({'ChargeJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'ChargeJump'})}, 'GumoHideoutMiniboss': {frozenset({'DoubleJump'})}, 'GumoHideoutEnergyCell': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Stomp', 'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}, 'DoorWarpExp': {frozenset({'DoubleJump'})}, 'HoruFieldsPlant': {frozenset({'Grenade', 'Glide'}), frozenset({'Grenade', 'Dash'}), frozenset({'Grenade', 'DoubleJump'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash'})}, 'HoruL4LowerExp': {frozenset({'Dash', 'Stomp'})}, 'HoruR1EnergyCell': {frozenset({'DoubleJump'})}, 'HoruL2': {frozenset({'Glide', 'Stomp', 'DoubleJump'})}, 'HoruL3': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', 'Stomp'})}, 'WallJumpAreaEnergyCell': {frozenset({'DoubleJump'})}, 'FarLeftGumoHideoutExp': {frozenset({'Bash'})}, 'LeftSorrowAbilityCell': {frozenset({'Bash'})}, 'LeftSorrowKeystone2': {frozenset({'Bash'})}, 'LeftSorrowKeystone3': {frozenset({'Bash'})}, 'LeftSorrowKeystone4': {frozenset({'Bash'})}, 'LeftSorrowEnergyCell': {frozenset({'Bash'})}, 'LowerBlackrootAbilityCell': {frozenset({'DoubleJump'})}, 'LowerGinsoHiddenExp': {frozenset({'DoubleJump'})}, 'SorrowSpikeKeystone': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'SorrowLowerLeftKeystone': {frozenset({'Bash'})}, 'SpiritCavernsKeystone2': {frozenset({'Free'})}, 'LowerValleyMapstone': {frozenset({'Free'})}, 'MistyEntranceStompExp': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'ChargeFlame', 'Dash'})}, 'MistyEntranceTreeExp': {frozenset({'DoubleJump'}), frozenset({'WallJump'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Bash'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Bash'})}, 'OuterSwampHealthCell': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'})}, 'OutsideForlornTreeExp': {frozenset({'Bash'})}, 'HoruR1HangingExp': {frozenset({'Glide', 'WallJump'})}, 'HoruR2': {frozenset({'Stomp', 'DoubleJump'})}, 'HoruR4DrainedExp': {frozenset({'Bash'})}, 'StompAreaExp': {frozenset({'Grenade'})}, 'AboveChargeFlameTreeExp': {frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Stomp', 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 2)})}, 'InnerSwampDrainExp': {frozenset({'DoubleJump', 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({'DoubleJump'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Grenade', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'DoubleJump'}), frozenset({'Climb'})}, 'KuroPerchExp': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide', 'ChargeJump'})}}, 'glitched': {'BlackrootBoulderExp': {frozenset({'Free'})}, 'GroveWaterStompAbilityCell': {frozenset({'Bash'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 3)})}, 'GladesGrenadeTree': {frozenset({'Grenade'})}, 'KuroPerchExp': {frozenset({'ChargeJump'})}}, 'standard-abilities': {'BlackrootMap': {frozenset({'Climb', 'Dash', 'MapStone', ('AC', 3)})}, 'DoubleJumpSkillTree': {frozenset({'Dash', ('AC', 3)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Bash', 'Dash', ('AC', 3)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'ChargeJump', 'Dash', ('AC', 3)})}, 'LowerGinsoKeystone1': {frozenset({'Dash', ('AC', 3)})}, 'LowerGinsoKeystone2': {frozenset({'Dash', ('AC', 3)})}, 'GladesLaserGrenade': {frozenset({'Dash', 'Grenade', 'Glide', ('AC', 3), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'GumoHideoutMapstone': {frozenset({'Dash', ('AC', 3)})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Dash', ('AC', 3)})}, 'HollowGroveTreeAbilityCell': {frozenset({'WallJump', 'Dash', 'Glide', 'Stomp', ('AC', 3)}), frozenset({'Climb', 'Dash', 'Glide', 'Stomp', ('AC', 3)})}, 'SwampTeleporterAbilityCell': {frozenset({'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'HoruFieldsPlant': {frozenset({'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'HoruFieldsEnergyCell': {frozenset({'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Glide', 'ChargeJump', 'Dash', ('AC', 3)})}, 'HoruLavaDrainedLeftExp': {frozenset({'Glide', 'Open', 'Dash', ('AC', 3)})}, 'HoruR1EnergyCell': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'HoruR4DrainedExp': {frozenset({'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Glide', 'Dash', ('AC', 3)})}, 'InnerSwampDrainExp': {frozenset({'Dash', ('AC', 3)})}, 'HoruL1': {frozenset({'WallJump', 'Dash', 'Stomp', ('AC', 3), 'Bash'}), frozenset({'Dash', 'Grenade', 'Stomp', ('AC', 3), 'Bash'}), frozenset({'Dash', 'Stomp', 'ChargeJump', ('AC', 3), 'Bash'}), frozenset({'Climb', 'Dash', 'Stomp', ('AC', 3), 'Bash'})}, 'HoruL2': {frozenset({'Stomp', ('AC', 3), 'Dash', 'WallJump'}), frozenset({'Climb', 'Dash', 'Stomp', 'DoubleJump', ('AC', 3)})}, 'HoruL3': {frozenset({'Bash', 'Stomp', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Bash', 'Dash', ('AC', 3)})}, 'FarLeftGumoHideoutExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'GumoHideoutLeftHangingExp': {frozenset({'Dash', ('AC', 3)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'Dash', ('AC', 3)})}, 'BelowGrottoTeleporterPlant': {frozenset({'Grenade', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', ('AC', 3)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Dash', ('AC', 3), 'WallJump'}), frozenset({'ChargeFlame', 'Glide', 'Dash', ('AC', 3)})}, 'HoruR1HangingExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'HoruLavaDrainedRightExp': {frozenset({'Dash', ('AC', 3)})}, 'AboveChargeFlameTreeExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'UpperGinsoLowerKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}}, 'expert-core': {'BlackrootMap': {frozenset({'Climb', 'MapStone'})}, 'DashAreaMapstone': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DoubleJumpSkillTree': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'})}, 'DoubleJumpAreaExp': {frozenset({'Climb', 'Bash', 'Water'}), frozenset({'Grenade', 'Bash'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', 'DoubleJump', 'WallJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'Open'})}, 'GladesLaserGrenade': {frozenset({'Water', 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'Water'})}, 'GrenadeSkillTree': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Dash', 'Bash'})}, 'GumoHideoutCrusherExp': {frozenset({'DoubleJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'HoruL4LowerExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'HoruR1EnergyCell': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Glide'})}, 'HoruR4DrainedExp': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruL1': {frozenset({'Glide', 'Stomp', 'Bash'})}, 'HoruL2': {frozenset({'Climb', 'Stomp', 'Glide', 'DoubleJump'})}, 'HoruL3': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'ChargeFlame'})}, 'LeftSorrowKeystone1': {frozenset({'ChargeJump', 'WallJump'})}, 'LeftSorrowKeystone2': {frozenset({'ChargeJump', 'WallJump'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerBlackrootLaserExp': {frozenset({'Grenade', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'GumoHideoutRightHangingExp': {frozenset({'DoubleJump'})}, 'LeftGumoHideoutExp': {frozenset({'Climb', 'DoubleJump'})}, 'SorrowHiddenKeystone': {frozenset({'Bash', 'ChargeJump', 'WallJump'})}, 'SorrowHealthCell': {frozenset({'Climb', 'ChargeJump'})}, 'SorrowLowerLeftKeystone': {frozenset({'Bash', 'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'Climb', 'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'MistyEntranceStompExp': {frozenset({'Climb', 'Dash', 'ChargeJump'})}, 'MistyEntranceTreeExp': {frozenset({'Bash'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Bash', 'DoubleJump'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Bash', 'DoubleJump'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'Glide'})}, 'LeftGrottoTeleporterExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruR1HangingExp': {frozenset({'DoubleJump'}), frozenset({'Dash'})}, 'HoruR2': {frozenset({'Stomp', 'WallJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'ChargeJump'})}, 'StompAreaExp': {frozenset({'ChargeFlame'})}, 'AboveChargeFlameTreeExp': {frozenset({'ChargeFlame', 'Climb', 'Glide'}), frozenset({'Dash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'Glide'}), frozenset({'ChargeFlame', 'Glide', 'WallJump'}), frozenset({'Grenade', 'Glide', 'WallJump'}), frozenset({'Climb', 'Stomp', 'Glide'}), frozenset({'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', 'Dash'})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'Climb', 'DoubleJump'})}, 'InnerSwampDrainExp': {frozenset({'ChargeJump', 'DoubleJump', 'Water'}), frozenset({'Glide', 'Dash', 'WallJump', 'Water'})}, 'SwampEntrancePlant': {frozenset({'Grenade'})}, 'InnerSwampStompExp': {frozenset({'Grenade', 'Bash', 'ChargeJump', 'Water'})}, 'InnerSwampSwimRightKeystone': {frozenset({'DoubleJump'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'ChargeFlame', 'GinsoKey'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'}), frozenset({'ChargeFlame', 'GinsoKey'})}, 'UpperGinsoEnergyCell': {frozenset({'Dash', 'GinsoKey', 'ChargeJump'}), frozenset({'ChargeFlame', 'GinsoKey'})}, 'LeftGladesExp': {frozenset({'DoubleJump'}), frozenset({'Bash'})}, 'UpperSorrowLeftKeystone': {frozenset({'Grenade', 'Bash'})}, 'ValleyMap': {frozenset({'Grenade', 'MapStone', 'DoubleJump'}), frozenset({'Grenade', 'MapStone', 'ChargeJump'}), frozenset({'ChargeFlame', 'MapStone', 'ChargeJump'}), frozenset({'ChargeFlame', 'MapStone', 'DoubleJump'})}, 'WilhelmExp': {frozenset({'Climb', 'Bash'}), frozenset({'Grenade', 'Bash'})}}, 'expert-dboost': {'UpperSorrowSpikeExp': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('HC', 2)}), frozenset({('EC', 2), 'Dash', ('AC', 6), ('HC', 2)}), frozenset({'Grenade', 'Bash', 'DoubleJump', ('HC', 2)}), frozenset({('AC', 6), 'Dash', ('HC', 2), 'Grenade', 'Bash'})}, 'DeathGauntletStompSwim': {frozenset({('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Climb', 'Bash', ('HC', -1)})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'WallJump', ('HC', 1)})}, 'GladesLaser': {frozenset({'Glide', 'WallJump'})}, 'GladesLaserGrenade': {frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'Glide'}), frozenset({'Grenade', 'Glide', 'ChargeJump', ('HC', 0)}), frozenset({('AC', 6), ('EC', 1), 'Climb', 'Dash', ('HC', 2), 'Grenade'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'DoubleJump'}), frozenset({('HC', 0), 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Grenade', 'ChargeJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Water', 'Grenade'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Dash', 'Grenade', 'Glide', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', ('HC', 0)}), frozenset({'Grenade', 'ChargeJump', ('HC', 2)}), frozenset({('HC', 0), ('EC', 2), 'Grenade', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 6), ('HC', 0), ('EC', 2), 'Dash', 'Grenade', 'WallJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Dash', 'Water', 'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', ('HC', 0)}), frozenset({'Grenade', 'ChargeJump', ('HC', 0), 'Water'}), frozenset({('AC', 6), ('HC', 0), ('EC', 2), 'Climb', 'Dash', 'Grenade'}), frozenset({('EC', 1), ('HC', 1), 'Grenade', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 6), ('EC', 1), 'Dash', ('HC', 2), 'Grenade', 'WallJump'})}, 'GroveWaterStompAbilityCell': {frozenset({'Stomp', ('HC', 2)}), frozenset({('HC', 3), 'Bash'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash', 'WallJump', ('HC', 2)})}, 'HoruR1EnergyCell': {frozenset({'WallJump', ('HC', 2)}), frozenset({'Climb', ('HC', 2)})}, 'HoruR4DrainedExp': {frozenset({('HC', 3), 'DoubleJump'}), frozenset({('HC', 3), 'Dash', ('AC', 3)}), frozenset({('HC', 3), 'Glide'})}, 'LeftSorrowAbilityCell': {frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'LeftSorrowKeystone3': {frozenset({'Climb', 'ChargeJump', ('HC', 2)})}, 'LeftSorrowKeystone4': {frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 2)}), frozenset({'Climb', 'Dash', 'ChargeJump', ('HC', 2)})}, 'LeftSorrowEnergyCell': {frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 2)})}, 'LowerBlackrootAbilityCell': {frozenset({'DoubleJump', ('HC', 2)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'DoubleJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Glide', 'Stomp', ('HC', 1)}), frozenset({'Glide', 'WallJump', ('HC', 1)}), frozenset({'Dash', ('AC', 3), ('HC', 1)})}, 'LeftGumoHideoutSwim': {frozenset({'Free'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'DoubleJump', ('HC', 2)}), frozenset({'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'DoubleJump', 'WallJump', ('HC', 2)})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'Bash', ('HC', 2)}), frozenset({'Bash', 'WallJump', ('HC', 2)})}, 'SorrowHealthCell': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 2)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({('HC', 4), 'Dash', 'WallJump'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', ('HC', 1)})}, 'MistyMortarCorridorUpperExp': {frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Bash', ('HC', 1)})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Grenade', 'Bash', ('HC', 1)}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({('HC', 4), 'Bash'})}, 'GrottoEnergyDoorSwim': {frozenset({('EC', 2)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'DoubleJump'})}, 'LeftGrottoTeleporterExp': {frozenset({('HC', 4), 'WallJump'}), frozenset({'Glide', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 4)}), frozenset({'Glide', 'WallJump', ('HC', 1)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Bash', ('HC', 2)})}, 'OutsideForlornWaterExp': {frozenset({('HC', 1)}), frozenset({'Stomp', ('HC', -1)})}, 'HoruR1HangingExp': {frozenset({'ChargeJump', ('HC', 2)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', ('HC', 0)}), frozenset({('HC', 0), 'Climb', 'Dash', 'Water', 'Grenade', 'Stomp', 'DoubleJump', ('AC', 3)}), frozenset({'Climb', 'Dash', ('HC', 1), 'Grenade', 'Stomp', 'DoubleJump', ('AC', 3)}), frozenset({('HC', 0), 'Water', 'Grenade', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Grenade', ('HC', 1)}), frozenset({('HC', 1), 'Grenade', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'ChargeJump', ('HC', 1)})}, 'GroveSpiderWaterSwim': {frozenset({'Bash', ('HC', 2)}), frozenset({('HC', 3)})}, 'GladesGrenadePool': {frozenset({'Grenade', ('HC', 3)}), frozenset({'Grenade', 'Stomp', ('HC', 2)})}, 'GladesMainPool': {frozenset({'Bash', ('HC', 0)}), frozenset({('HC', 1)}), frozenset({'Stomp', ('HC', 0)})}, 'GladesMainPoolDeep': {frozenset({('HC', 4)})}, 'SwampEntranceSwim': {frozenset({'Free'})}, 'InnerSwampStompExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Stomp'}), frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'TopGinsoLeftLowerExp': {frozenset({('HC', 2)})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'DoubleJump', 'WallJump', ('HC', 0)}), frozenset({'Climb', ('HC', 0), 'DoubleJump', 'ChargeFlame'})}, 'UpperGinsoLowerKeystone': {frozenset({'GinsoKey', ('HC', 2)})}, 'UpperGinsoRightKeystone': {frozenset({'GinsoKey', 'DoubleJump', 'WallJump', ('HC', 2)})}, 'UpperSorrowRightKeystone': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('HC', 2)})}, 'UpperSorrowLeftKeystone': {frozenset({'ChargeJump', ('HC', 2)})}, 'ValleyRightSwimExp': {frozenset({('HC', 1)})}, 'ValleyRightFastStomplessCell': {frozenset({'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'ValleyRightExp': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'ValleyMainFACS': {frozenset({'WallJump', 'Dash', ('HC', 1), 'ChargeJump', ('AC', 3)})}, 'WilhelmExp': {frozenset({'ChargeJump', ('HC', 2)})}}, 'master-lure': {'UpperSorrowSpikeExp': {frozenset({'Bash'})}, 'UpperSorrowFarLeftKeystone': {frozenset({'Bash'})}, 'UpperSorrowRightKeystone': {frozenset({'Bash'})}, 'UpperSorrowFarRightKeystone': {frozenset({'Bash'})}, 'UpperSorrowLeftKeystone': {frozenset({'Bash'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'Bash'})}, 'ForlornEscape': {frozenset({'Bash'})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'Bash'})}, 'GroveWaterStompAbilityCell': {frozenset({('AC', 12)}), frozenset({('HC', 2)})}, 'SwampTeleporterAbilityCell': {frozenset({'Bash'})}, 'WallJumpAreaExp': {frozenset({'Bash'})}, 'WallJumpAreaEnergyCell': {frozenset({'Bash'})}, 'SorrowHealthCell': {frozenset({'Glide', 'Stomp', 'WallJump'}), frozenset({'Glide', 'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'Stomp'})}, 'KuroPerchExp': {frozenset({'Bash'})}, 'LeftGrottoTeleporterExp': {frozenset({'Bash'})}, 'InnerSwampDrainExp': {frozenset({'Bash', 'Water'})}, 'InnerSwampStompExp': {frozenset({'Bash', 'Water'}), frozenset({'Bash', ('HC', 0)})}}, 'master-dboost': {'UpperSorrowSpikeExp': {frozenset({('AC', 12), 'Dash', 'Grenade', 'Bash', ('HC', 1)}), frozenset({('AC', 12), 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('EC', 2), 'Dash', ('AC', 12), ('HC', 1)}), frozenset({('AC', 12), 'Dash', 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'UpperSorrowFarLeftKeystone': {frozenset({('AC', 12), 'Dash', ('HC', 1), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'Climb', 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', 'Dash', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 7)}), frozenset({('AC', 12), 'Climb', 'Dash', 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', ('AC', 12), ('HC', 0), 'WallJump'})}, 'HoruR1EnergyCell': {frozenset({('AC', 12), 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), ('HC', 1)})}, 'HoruR4DrainedExp': {frozenset({('HC', 8)}), frozenset({('AC', 12), ('HC', 6)})}, 'HoruL1': {frozenset({('EC', 1), ('AC', 12), 'Climb', ('HC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', ('EC', 2), 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), ('AC', 12), 'Climb', 'Stomp', 'DoubleJump'}), frozenset({('AC', 12), ('HC', 1), 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Bash', 'Stomp', ('HC', 2)}), frozenset({'Stomp', 'ChargeJump', ('HC', 2)})}, 'HoruL3': {frozenset({('HC', 3), ('AC', 12), 'Climb', 'Dash', ('EC', 2), 'Glide', 'DoubleJump'}), frozenset({('HC', 0), ('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeFlame', ('HC', 0), ('AC', 12), 'ChargeJump', 'DoubleJump'}), frozenset({('EC', 1), ('AC', 12), 'Climb', 'Dash', 'Glide', 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 0), ('AC', 12), 'Stomp', 'ChargeJump', 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)})}, 'LeftSorrowKeystone3': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LeftSorrowKeystone4': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LeftSorrowEnergyCell': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LostGroveLongSwim': {frozenset({('HC', 3), ('AC', 12)}), frozenset({('HC', 9)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Stomp', ('HC', 1)})}, 'SorrowLowerLeftKeystone': {frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}, 'MistyFrogNookExp': {frozenset({'DoubleJump', ('HC', 1)})}, 'MistyPostClimbSpikeCave': {frozenset({'Bash', ('HC', 1)}), frozenset({'DoubleJump', ('HC', 8)})}, 'MistyMortarCorridorHiddenExp': {frozenset({('HC', 7)}), frozenset({('HC', 4), ('AC', 12)}), frozenset({'DoubleJump', ('HC', 1)})}, 'LeftGrottoTeleporterExp': {frozenset({'DoubleJump', ('HC', 1)})}, 'OutsideForlornWaterExp': {frozenset({('AC', 12), ('HC', -1)})}, 'HoruR1HangingExp': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'DoubleJump', ('HC', 2)}), frozenset({'Water', ('HC', 2), 'Grenade', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Water', ('HC', 2), 'Grenade', 'DoubleJump'})}, 'GroveSpiderWaterSwim': {frozenset({('HC', 2)}), frozenset({'Bash', ('AC', 12)}), frozenset({('AC', 12), ('HC', 1)})}, 'GladesGrenadePool': {frozenset({'Grenade', ('HC', 2)})}, 'GladesMainPool': {frozenset({('HC', 0)})}, 'InnerSwampDrainExp': {frozenset({('HC', 4), 'Dash', ('AC', 12), 'WallJump'}), frozenset({('HC', 4), 'Bash', ('AC', 12)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', ('AC', 12)}), frozenset({'ChargeFlame', ('HC', 4), ('AC', 12), 'Glide', 'Stomp', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({'Climb', 'Dash', ('HC', 4), ('AC', 12)})}, 'TopGinsoLeftUpperExp': {frozenset({('HC', 0), 'Glide', 'DoubleJump'}), frozenset({('HC', 0), 'Dash', 'DoubleJump'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'DoubleJump', ('HC', 0)}), frozenset({'Grenade', 'DoubleJump', ('HC', 0)})}, 'UpperGinsoRightKeystone': {frozenset({('HC', 0), ('AC', 12), 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump', ('HC', 2)})}, 'UpperGinsoUpperLeftKeystone': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump', ('HC', 2)})}, 'UpperSorrowRightKeystone': {frozenset({('HC', 4), 'ChargeJump', 'DoubleJump', ('AC', 12)}), frozenset({('AC', 12), 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}, 'UpperSorrowFarRightKeystone': {frozenset({('HC', 4), 'Dash', 'ChargeJump', ('AC', 12)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'DoubleJump'})}, 'UpperSorrowLeftKeystone': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}, 'ValleyEntryGrenadeLongSwim': {frozenset({'Grenade', 'Bash', ('HC', 10)}), frozenset({'Grenade', ('HC', 11)}), frozenset({'Grenade', ('HC', 4), ('AC', 12)})}, 'ValleyRightFastStomplessCell': {frozenset({'Climb', ('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 2)})}, 'ValleyRightExp': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'WilhelmExp': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}}, 'standard-lure': {'DeathGauntletExp': {frozenset({'Bash'})}, 'DeathGauntletStompSwim': {frozenset({'Water'})}, 'GladesLaser': {frozenset({'Bash'})}, 'HoruFieldsHealthCell': {frozenset({'Free'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', 'Bash'})}, 'LeftSorrowKeystone1': {frozenset({'Bash'})}, 'MistyEntranceStompExp': {frozenset({'Bash'})}, 'MistyAbilityCell': {frozenset({'Bash'})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Grenade'})}, 'SorrowMap': {frozenset({'MapStone'})}, 'FronkeyWalkRoof': {frozenset({'Bash'})}, 'ValleyRightFastStomplessCell': {frozenset({'Bash'})}, 'WilhelmExp': {frozenset({'Bash', 'WallJump'})}, 'KuroPerchExp': {frozenset({'HoruKey'})}}, 'casual-dboost': {'DoubleJumpSkillTree': {frozenset({'Bash', ('HC', 0)}), frozenset({'Climb', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Grenade', 'Bash', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0), 'Water'}), frozenset({('HC', -1), 'ChargeJump', 'WallJump'}), frozenset({'Bash', ('HC', 0), 'Water'}), frozenset({'Bash', 'WallJump', ('HC', -1)})}, 'GrenadeAreaExp': {frozenset({'ChargeJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'WallJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'ChargeJump', 'Water'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'InnerSwampSwimRightKeystone': {frozenset({'Climb'}), frozenset({'WallJump'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'ChargeJump'}), frozenset({'Bash'})}}, 'standard-dboost': {'DoubleJumpSkillTree': {frozenset({'Dash', ('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', 'ChargeJump', ('HC', 0)}), frozenset({('HC', 0), 'Bash', 'Dash'}), frozenset({'ChargeJump', ('HC', 0), ('AC', 3), ('EC', 1)}), frozenset({'Bash', ('HC', 0), ('AC', 3), ('EC', 1)}), frozenset({'Bash', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'ChargeJump', ('HC', 1)})}, 'LowerGinsoKeystone1': {frozenset({('HC', 0)})}, 'LowerGinsoKeystone2': {frozenset({'ChargeJump', ('HC', 0)})}, 'GumoHideoutMapstone': {frozenset({'ChargeJump', ('HC', 1)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Dash', 'ChargeJump', ('HC', 1)})}, 'MistyAbilityCell': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'WallJump'})}, 'BelowGrottoTeleporterHealthCell': {frozenset({('HC', 0), 'Bash', 'DoubleJump'}), frozenset({'Bash', ('HC', 0), 'WallJump'}), frozenset({'ChargeJump', ('HC', 0)})}, 'BelowGrottoTeleporterPlant': {frozenset({'ChargeFlame', ('HC', 1)}), frozenset({'Grenade', ('HC', 1)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Glide', ('HC', 1)}), frozenset({'ChargeFlame', 'DoubleJump', ('HC', 1)}), frozenset({'ChargeFlame', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeFlame', 'WallJump', ('HC', 1)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', ('HC', 0), 'Water'})}, 'InnerSwampDrainExp': {frozenset({'Grenade', 'Bash', ('HC', 1), 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({('HC', 0), 'DoubleJump'}), frozenset({'ChargeJump', ('HC', 0)})}, 'TopGinsoLeftUpperExp': {frozenset({('HC', 0), 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'DoubleJump', ('HC', 0)}), frozenset({'Climb', 'Glide', 'DoubleJump', ('HC', 0)}), frozenset({('HC', 0), 'Glide', 'DoubleJump', 'WallJump'})}, 'TopGinsoRightPlant': {frozenset({'Grenade', 'DoubleJump', 'WallJump', ('HC', 0)}), frozenset({'Climb', 'Grenade', 'DoubleJump', ('HC', 0)})}, 'UpperGinsoLowerKeystone': {frozenset({'Bash', 'GinsoKey', ('HC', 0)}), frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'}), frozenset({('HC', 0), 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoRightKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}}, 'standard-core': {'DoubleJumpAreaExp': {frozenset({'ChargeJump', 'WallJump'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ForlornKey', 'Dash', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'Dash', 'DoubleJump'}), frozenset({'Glide', 'ForlornKey', 'Climb', 'Dash'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'Dash', 'WallJump', 'Open'}), frozenset({'Climb', 'ForlornKey', 'Dash', 'Open'})}, 'LowerGinsoKeystone1': {frozenset({'Grenade', 'Bash'})}, 'LowerGinsoKeystone2': {frozenset({'Grenade', 'Bash'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'Bash'}), frozenset({'Climb', 'Grenade', 'Glide', 'ChargeJump', 'DoubleJump'})}, 'GrenadeSkillTree': {frozenset({'Grenade', 'Bash'})}, 'GrenadeAreaExp': {frozenset({'Dash', 'DoubleJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'GumoHideoutMapstone': {frozenset({'Climb'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'SwampTeleporterAbilityCell': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}, 'HoruFieldsHiddenExp': {frozenset({'Bash'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', 'Dash', 'DoubleJump'})}, 'HoruL4LowerExp': {frozenset({'Climb', 'Stomp'})}, 'HoruR1EnergyCell': {frozenset({'Grenade', 'Bash'})}, 'HoruR3Plant': {frozenset({'ChargeFlame'})}, 'HoruR4DrainedExp': {frozenset({'Grenade', 'Bash', 'Climb'})}, 'HoruL1': {frozenset({'Glide', 'ChargeJump', 'Stomp', 'Bash'})}, 'HoruL3': {frozenset({'ChargeFlame', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Glide', 'Bash', 'ChargeFlame', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeFlame'}), frozenset({'Grenade', 'Bash', 'ChargeFlame'})}, 'FarLeftGumoHideoutExp': {frozenset({'Climb', 'Bash', 'Grenade'})}, 'LeftSorrowKeystone1': {frozenset({'Dash'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Dash', 'DoubleJump'})}, 'LowerBlackrootGrenadeThrow': {frozenset({'ChargeJump', 'DoubleJump'})}, 'GumoHideoutRightHangingExp': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'Dash', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump', 'WallJump'})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'Bash', 'Dash', 'DoubleJump'}), frozenset({'Bash', 'Dash', 'DoubleJump', 'WallJump'})}, 'SorrowHealthCell': {frozenset({'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'DoubleJump', 'WallJump'})}, 'MistyFrogNookExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', 'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Grenade', 'Bash'})}, 'OuterSwampHealthCell': {frozenset({'Climb', 'DoubleJump'})}, 'HoruR1HangingExp': {frozenset({'Grenade', 'Bash'})}, 'HoruR2': {frozenset({'Glide', 'Stomp', 'Climb', 'Bash'}), frozenset({'Glide', 'Stomp', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'})}, 'StompAreaExp': {frozenset({'Climb', 'ChargeJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'DoubleJump', 'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Bash', 'ChargeJump'})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'AboveChargeFlameTreeExp': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'Climb', 'Wind'}), frozenset({'Grenade', 'Glide', 'WallJump', 'Wind'})}, 'InnerSwampSwimRightKeystone': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}, 'TopGinsoLeftLowerExp': {frozenset({'Bash'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Glide', 'GinsoKey', 'ChargeJump'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Glide', 'GinsoKey', 'ChargeJump'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoEnergyCell': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'GrottoLasersRoofExp': {frozenset({'Climb', 'DoubleJump'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'ValleyRightBirdStompCell': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Dash', 'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'ForlornKeystone1': {frozenset({'ForlornKey', 'Bash'})}, 'GumoHideoutMiniboss': {frozenset({'Bash'})}, 'GroveWaterStompAbilityCell': {frozenset({'Bash', 'Water'})}, 'SorrowHealthCell': {frozenset({'Grenade', 'Glide', 'Stomp', 'Bash'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Glide', 'Stomp'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump'}), frozenset({'Glide', 'Stomp', 'ChargeJump'})}}, 'gjump': {'GladesLaserGrenade': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruFieldsEnergyCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruR4LaserExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruL3': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowLowerLeftKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'KuroPerchExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'Water'})}, 'SorrowMapstone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'UpperSorrowLeftKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'insane': {'GrenadeSkillTree': {frozenset({'WallJump'})}, 'ValleyRightBirdStompCell': {frozenset({'Bash'})}}, 'timed-level': {'LowerBlackrootGrenadeThrow': {frozenset({'Free'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 2)})}}} -connection_rules = {'AboveChargeJumpArea': {'casual-core': {'SorrowTeleporter': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'})}}, 'expert-dboost': {'SorrowTeleporter': {frozenset({'Dash', 'ChargeJump', 'WallJump', ('HC', 2)})}, 'ChargeJumpArea': {frozenset({('HC', 3), 'Bash', 'ChargeJump'}), frozenset({('HC', 3), 'Dash', 'ChargeJump', ('AC', 6)})}}, 'master-core': {'SorrowTeleporter': {frozenset({'Bash'})}, 'ChargeJumpArea': {frozenset({'Bash'})}}, 'standard-lure': {'ChargeJumpArea': {frozenset({'Climb', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'WallJump'})}}, 'expert-core': {'ChargeJumpArea': {frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', 'WallJump'})}}, 'expert-abilities': {'ChargeJumpArea': {frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'}), frozenset({'Climb', 'Dash', 'ChargeJump', ('AC', 6)}), frozenset({'Bash', 'ChargeJump', 'Dash', ('AC', 3)}), frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)})}}, 'gjump': {'ChargeJumpArea': {frozenset({'Climb', 'Dash', 'ChargeJump', 'Grenade'}), frozenset({'Climb', ('HC', 3), 'ChargeJump', 'Grenade'})}}, 'dbash': {'ChargeJumpArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}}, 'BashTree': {'casual-core': {'BashTreeDoorClosed': {frozenset({'Open'})}, 'UpperGinsoRedirectArea': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Dash', 'ChargeJump', 'DoubleJump'})}}, 'standard-dboost': {'UpperGinsoRedirectArea': {frozenset({'ChargeJump', ('HC', 1)})}}, 'expert-dboost': {'UpperGinsoRedirectArea': {frozenset({'ChargeJump', ('HC', 0)})}}, 'expert-abilities': {'UpperGinsoRedirectArea': {frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}, 'master-core': {'UpperGinsoRedirectArea': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump'})}}, 'master-abilities': {'UpperGinsoRedirectArea': {frozenset({('AC', 12), 'DoubleJump'})}}}, 'BashTreeDoorClosed': {'casual-core': {'BashTreeDoorOpened': {frozenset({('KS', 4)})}}}, 'BashTreeDoorOpened': {'casual-core': {'GinsoMiniBossDoor': {frozenset({'Open', 'GinsoKey'})}, 'BashTree': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'master-core': {'BashTree': {frozenset({'DoubleJump'})}}}, 'BelowSunstoneArea': {'casual-core': {'SunstoneArea': {frozenset({'Glide', 'Stomp'})}, 'UpperSorrow': {frozenset({'Stomp'})}}, 'standard-core': {'SunstoneArea': {frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'UpperSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'SunstoneArea': {frozenset({'Glide', 'Dash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', 'Glide'})}, 'UpperSorrow': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}}, 'gjump': {'SunstoneArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'SunstoneArea': {frozenset({'Bash'})}, 'UpperSorrow': {frozenset({'Bash'})}}, 'master-dboost': {'SunstoneArea': {frozenset({('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'UpperSorrow': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}}, 'BlackrootDarknessRoom': {'casual-core': {'DashArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'expert-core': {'DashArea': {frozenset({'DoubleJump'})}}, 'master-core': {'DashArea': {frozenset({'Bash'})}}}, 'BlackrootGrottoConnection': {'casual-core': {'SideFallCell': {frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-abilities': {'SideFallCell': {frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}}, 'expert-core': {'SideFallCell': {frozenset({'Climb', 'Stomp'})}}}, 'ChargeFlameAreaStump': {'casual-core': {'ChargeFlameSkillTreeChamber': {frozenset({'ChargeFlame'}), frozenset({'Grenade'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}}, 'standard-core': {'ChargeFlameSkillTreeChamber': {frozenset({'Stomp'})}}, 'expert-abilities': {'ChargeFlameSkillTreeChamber': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'ChargeFlameSkillTreeChamber': {frozenset({'DoubleJump'})}}}, 'ChargeFlameSkillTreeChamber': {'casual-core': {'SpiritTreeRefined': {frozenset({'ChargeJump'})}, 'ChargeFlameAreaStump': {frozenset({'ChargeJump'}), frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-abilities': {'ChargeFlameAreaStump': {frozenset({'Dash', ('AC', 6)})}}}, 'ChargeJumpArea': {'casual-core': {'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'ChargeJumpDoor': {frozenset({'Open'})}}, 'gjump': {'AboveChargeJumpArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Dash', 'ChargeJump', ('HC', 2)})}}, 'expert-abilities': {'AboveChargeJumpArea': {frozenset({'Climb', 'Dash', 'ChargeJump', ('AC', 6)})}}, 'master-core': {'AboveChargeJumpArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}}, 'ChargeJumpDoor': {'casual-core': {'ChargeJumpDoorOpen': {frozenset({('KS', 4)})}}}, 'ChargeJumpDoorOpen': {'casual-core': {'ChargeJumpArea': {frozenset({'Glide'})}}, 'master-dboost': {'ChargeJumpArea': {frozenset({('AC', 12), 'Dash', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('HC', 10), ('AC', 12), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}, 'ChargeJumpDoorOpenLeft': {frozenset({'ChargeJump', ('HC', 2)})}}, 'expert-dboost': {'ChargeJumpDoorOpenLeft': {frozenset({('HC', 3), 'ChargeJump'})}}, 'master-lure': {'ChargeJumpDoorOpenLeft': {frozenset({'Bash'})}}}, 'ChargeJumpDoorOpenLeft': {'casual-core': {'UpperSorrow': {frozenset({'Glide'})}}, 'master-dboost': {'UpperSorrow': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('AC', 6), ('HC', 6), 'Dash', ('EC', 2), 'ChargeJump'}), frozenset({('HC', 4), ('AC', 12), 'Dash', ('EC', 2), 'ChargeJump'})}}, 'master-lure': {'UpperSorrow': {frozenset({'Bash'})}}}, 'DashArea': {'casual-core': {'DashPlantAccess': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'WallJump'})}, 'GrenadeAreaAccess': {frozenset({'Stomp', 'Dash'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump'})}, 'RazielNoArea': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}, 'standard-abilities': {'DashPlantAccess': {frozenset({'Climb', 'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}, 'RazielNoArea': {frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Dash', ('AC', 3)}), frozenset({'WallJump'})}}, 'expert-core': {'DashPlantAccess': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Glide'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'GrenadeAreaAccess': {frozenset({'Stomp'})}}, 'expert-abilities': {'DashPlantAccess': {frozenset({'Climb', 'Dash', ('AC', 6), ('EC', 2)}), frozenset({'Grenade', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', ('AC', 6), 'WallJump'}), frozenset({('EC', 2), 'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6), 'ChargeFlame'})}, 'RazielNoArea': {frozenset({'Climb'})}}, 'master-core': {'DashPlantAccess': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Dash', 'DoubleJump'})}, 'GrenadeAreaAccess': {frozenset({'Bash'})}}, 'master-abilities': {'DashPlantAccess': {frozenset({'Climb', 'ChargeFlame', ('AC', 3)}), frozenset({'ChargeFlame', ('AC', 3), 'WallJump'}), frozenset({('AC', 12), 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump', ('AC', 3)})}, 'RazielNoArea': {frozenset({'DoubleJump'})}}, 'standard-core': {'GrenadeAreaAccess': {frozenset({'Climb', 'ChargeJump'})}, 'RazielNoArea': {frozenset({'Grenade', 'Bash'})}}, 'glitched': {'GrenadeAreaAccess': {frozenset({'Free'})}}, 'insane': {'GrenadeAreaAccess': {frozenset({'Free'})}}}, 'DeathGauntlet': {'casual-core': {'DeathGauntletMoat': {frozenset({'Water'})}, 'DeathGauntletDoor': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'DeathGauntletRoof': {frozenset({'ChargeJump'})}, 'MoonGrotto': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'expert-dboost': {'DeathGauntletMoat': {frozenset({('HC', 1)})}}, 'master-dboost': {'DeathGauntletMoat': {frozenset({('HC', 0)})}}, 'expert-core': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Bash', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Grenade'}), frozenset({'ChargeFlame', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Climb'})}}, 'master-core': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', 'DoubleJump'})}}, 'master-abilities': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', ('AC', 3)})}}, 'master-lure': {'MoonGrotto': {frozenset({'Dash', ('AC', 6), ('EC', 1)}), frozenset({'Bash'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Bash'})}}}, 'DeathGauntletDoor': {'casual-core': {'DeathGauntletDoorOpened': {frozenset({('EC', 4)})}}, 'glitched': {'DeathGauntletDoorOpened': {frozenset({('EC', 3)})}}, 'timed-level': {'DeathGauntletDoorOpened': {frozenset({('EC', 2)})}}}, 'DeathGauntletDoorOpened': {'casual-core': {'DeathGauntlet': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'WallJump', 'Water'}), frozenset({'Climb', 'Water'}), frozenset({'Bash', 'Water'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}, 'DeathGauntletMoat': {frozenset({'Water'})}}, 'standard-dboost': {'DeathGauntlet': {frozenset({'Climb', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'Bash', ('HC', 1)})}}, 'expert-dboost': {'DeathGauntlet': {frozenset({'Climb', ('HC', 0)}), frozenset({'Bash', ('HC', 0)}), frozenset({('HC', 0), 'WallJump'})}, 'DeathGauntletMoat': {frozenset({('HC', 2)})}}, 'expert-abilities': {'DeathGauntlet': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}}, 'master-core': {'DeathGauntlet': {frozenset({'DoubleJump'})}}, 'master-dboost': {'DeathGauntletMoat': {frozenset({('HC', 1)})}}}, 'DeathGauntletRoof': {'casual-core': {'DeathGauntlet': {frozenset({'Stomp'})}}, 'standard-lure': {'DeathGauntlet': {frozenset({'Free'})}}}, 'DoubleJumpKeyDoor': {'casual-core': {'DoubleJumpKeyDoorOpened': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'expert-core': {'DoubleJumpKeyDoorOpened': {frozenset({'DoubleJump'})}}}, 'ForlornGravityRoom': {'casual-core': {'ForlornMapArea': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'ForlornInnerDoor': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'master-core': {'ForlornMapArea': {frozenset({'DoubleJump'})}}, 'master-lure': {'ForlornMapArea': {frozenset({'Bash'})}}, 'standard-dboost': {'ForlornInnerDoor': {frozenset({('HC', 1)})}}, 'standard-core': {'ForlornInnerDoor': {frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'ForlornInnerDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'ForlornInnerDoor': {frozenset({'ChargeJump'})}}, 'master-dboost': {'ForlornInnerDoor': {frozenset({('AC', 12), ('HC', 0)})}}}, 'ForlornInnerDoor': {'casual-core': {'ForlornOuterDoor': {frozenset({'ForlornKey'})}, 'ForlornOrbPossession': {frozenset({'Climb', 'Glide', 'Open'}), frozenset({'Open', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Open'}), frozenset({'Glide', 'WallJump', 'Open'}), frozenset({'Open', 'DoubleJump'})}, 'ForlornGravityRoom': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'ForlornOrbPossession': {frozenset({'Dash', 'WallJump', 'Open'}), frozenset({'Climb', 'Dash', 'Open'})}, 'ForlornGravityRoom': {frozenset({'Climb', 'Dash', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'ForlornOrbPossession': {frozenset({'Open'})}, 'ForlornGravityRoom': {frozenset({'ChargeJump'})}}, 'standard-dboost': {'ForlornGravityRoom': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)})}}, 'standard-abilities': {'ForlornGravityRoom': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-dboost': {'ForlornGravityRoom': {frozenset({'WallJump', ('HC', 1)})}}, 'master-dboost': {'ForlornGravityRoom': {frozenset({('AC', 12), ('HC', 0), 'WallJump'})}}}, 'ForlornKeyDoor': {'casual-core': {'ForlornLaserRoom': {frozenset({'ForlornKey', ('KS', 4)})}}}, 'ForlornLaserRoom': {'casual-core': {'ForlornStompDoor': {frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Glide', 'Stomp', 'ChargeJump'})}}, 'standard-abilities': {'ForlornStompDoor': {frozenset({'Dash', 'Glide', ('AC', 3), 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', ('HC', 1), 'Stomp', 'ChargeJump', ('AC', 3)}), frozenset({'Dash', 'Stomp', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'standard-dboost': {'ForlornStompDoor': {frozenset({'Stomp', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'ForlornStompDoor': {frozenset({'Stomp', ('AC', 6), 'Dash', 'DoubleJump'}), frozenset({'Climb', 'Stomp', ('AC', 6), 'Dash'}), frozenset({('AC', 6), 'Stomp', 'ChargeJump', 'Dash'}), frozenset({'Stomp', ('AC', 6), 'Dash', 'WallJump'})}}, 'master-abilities': {'ForlornStompDoor': {frozenset({'Glide', 'Stomp', ('AC', 12), 'DoubleJump'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', ('AC', 12)})}}, 'master-lure': {'ForlornStompDoor': {frozenset({'Stomp', 'Bash'})}}, 'gjump': {'ForlornStompDoor': {frozenset({'Climb', 'Stomp', 'ChargeJump', 'Grenade'})}}}, 'ForlornMapArea': {'casual-core': {'ForlornTeleporter': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'ForlornPlantAccess': {frozenset({'Grenade', 'ForlornKey', 'WallJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'}), frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'})}}, 'standard-abilities': {'ForlornTeleporter': {frozenset({'Glide', 'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', 'Glide', ('AC', 3)}), frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-dboost': {'ForlornTeleporter': {frozenset({'ChargeJump', ('HC', 1)})}}, 'master-core': {'ForlornTeleporter': {frozenset({'DoubleJump'})}, 'ForlornPlantAccess': {frozenset({'Grenade', 'ForlornKey', 'DoubleJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}}, 'master-lure': {'ForlornTeleporter': {frozenset({'Bash'})}}, 'master-dboost': {'ForlornTeleporter': {frozenset({('AC', 12), 'ChargeJump', ('HC', 0)})}}}, 'ForlornOrbPossession': {'casual-core': {'ForlornPlantAccess': {frozenset({'ForlornKey'})}, 'ForlornInnerDoor': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'ForlornInnerDoor': {frozenset({('HC', 1)})}}, 'standard-core': {'ForlornInnerDoor': {frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'ForlornInnerDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'ForlornInnerDoor': {frozenset({'ChargeJump'})}}, 'master-dboost': {'ForlornInnerDoor': {frozenset({('AC', 12), ('HC', 0)})}}}, 'ForlornStompDoor': {'casual-core': {'RightForlorn': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'standard-abilities': {'RightForlorn': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Climb', 'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'RightForlorn': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)})}}, 'expert-dboost': {'RightForlorn': {frozenset({'Climb', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)})}}, 'master-dboost': {'RightForlorn': {frozenset({'Climb', ('AC', 12), ('HC', 0)}), frozenset({('AC', 12), ('HC', 0), 'WallJump'})}}, 'master-lure': {'RightForlorn': {frozenset({'Bash'})}}, 'master-abilities': {'RightForlorn': {frozenset({('AC', 12), 'DoubleJump'})}}}, 'ForlornTeleporter': {'casual-core': {'ForlornOrbPossession': {frozenset({'ForlornKey', 'Open'})}, 'ForlornMapArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}}, 'GinsoEscape': {'casual-core': {'GinsoEscapeComplete': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'})}}, 'standard-core': {'GinsoEscapeComplete': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-core': {'GinsoEscapeComplete': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'expert-dboost': {'GinsoEscapeComplete': {frozenset({'Climb', 'ChargeJump', ('HC', 0)}), frozenset({('AC', 6), ('HC', 0), 'Dash', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', ('HC', 6), 'WallJump'})}}, 'dbash': {'GinsoEscapeComplete': {frozenset({'Bash'})}}, 'master-dboost': {'GinsoEscapeComplete': {frozenset({('HC', 3), ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Climb', ('AC', 12), 'DoubleJump', ('HC', 7)}), frozenset({('HC', 4), 'ChargeJump', 'DoubleJump'})}}, 'insane': {'GinsoEscapeComplete': {frozenset({('HC', 9), ('AC', 12), 'DoubleJump'})}}}, 'GinsoInnerDoor': {'casual-core': {'LowerGinsoTree': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-core': {'LowerGinsoTree': {frozenset({'DoubleJump'})}}, 'master-abilities': {'LowerGinsoTree': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}}}, 'GinsoMiniBossDoor': {'casual-core': {'BashTreeDoorClosed': {frozenset({'Free'})}}}, 'GinsoTeleporter': {'casual-core': {'TopGinsoTree': {frozenset({'Bash', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'GinsoKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'GinsoKey', 'DoubleJump'}), frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoDoorClosed': {frozenset({'Open'})}}, 'standard-core': {'TopGinsoTree': {frozenset({'Grenade', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'GinsoKey', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'TopGinsoTree': {frozenset({'Stomp', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'GinsoKey', 'ChargeJump'})}}, 'master-abilities': {'TopGinsoTree': {frozenset({'ChargeFlame', ('AC', 12), 'GinsoKey', 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'GinsoKey', 'DoubleJump'}), frozenset({'Stomp', 'GinsoKey', 'DoubleJump', ('AC', 12)})}}}, 'GladesLaserArea': {'casual-core': {'MidSpiritCaverns': {frozenset({('EC', 4), 'DoubleJump'}), frozenset({('EC', 4), 'WallJump'}), frozenset({'Grenade', 'Bash', ('EC', 4)}), frozenset({'Climb', ('EC', 4)}), frozenset({'ChargeJump', ('EC', 4)})}}, 'expert-core': {'MidSpiritCaverns': {frozenset({'Dash', ('EC', 4)})}}, 'dbash': {'MidSpiritCaverns': {frozenset({'Bash', ('EC', 4)})}}, 'timed-level': {'MidSpiritCaverns': {frozenset({'Climb', ('EC', 2)}), frozenset({('EC', 2), 'WallJump'}), frozenset({('EC', 2), 'DoubleJump'}), frozenset({('EC', 2), 'Dash'}), frozenset({('EC', 2), 'ChargeJump'}), frozenset({('EC', 2), 'Bash'})}}}, 'GladesMain': {'casual-core': {'GladesMainAttic': {frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesLaserArea': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'LowerChargeFlameArea': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'standard-core': {'GladesMainAttic': {frozenset({'DoubleJump', 'WallJump'})}}, 'expert-core': {'GladesMainAttic': {frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash'})}, 'GladesLaserArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'GladesMainAttic': {frozenset({'Dash', ('AC', 6)})}, 'GladesLaserArea': {frozenset({'Dash', ('AC', 6)})}, 'LowerChargeFlameArea': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'GladesMainAttic': {frozenset({'Bash'})}, 'GladesLaserArea': {frozenset({'Bash'})}}, 'master-core': {'GladesMainAttic': {frozenset({'DoubleJump'})}}}, 'GladesMainAttic': {'glitched': {'LowerChargeFlameArea': {frozenset({'Dash'})}}}, 'GrenadeAreaAccess': {'casual-core': {'GrenadeArea': {frozenset({'Dash'})}, 'LowerBlackroot': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'})}}, 'expert-core': {'GrenadeArea': {frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'gjump': {'GrenadeArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'glitched': {'GrenadeArea': {frozenset({'Free'})}}, 'insane': {'GrenadeArea': {frozenset({'Free'})}}, 'casual-dboost': {'LowerBlackroot': {frozenset({'Free'})}}, 'standard-core': {'LowerBlackroot': {frozenset({'Grenade', 'Bash'})}}, 'expert-abilities': {'LowerBlackroot': {frozenset({'Dash', ('AC', 3)})}}, 'dbash': {'LowerBlackroot': {frozenset({'Bash'})}}}, 'GumoHideout': {'casual-core': {'DoubleJumpKeyDoor': {frozenset({('KS', 2)})}, 'LeftGumoHideout': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'})}, 'SideFallCell': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'ChargeJump', 'WallJump'})}}, 'expert-core': {'LeftGumoHideout': {frozenset({'ChargeJump'})}}, 'master-core': {'LeftGumoHideout': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}, 'LowerLeftGumoHideout': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}}, 'master-abilities': {'LeftGumoHideout': {frozenset({('AC', 12), 'DoubleJump'})}}, 'dbash': {'SideFallCell': {frozenset({'Bash'})}}}, 'GumoHideoutRedirectArea': {'casual-core': {'GumoHideoutRedirectEnergyVault': {frozenset({('EC', 4)})}}, 'glitched': {'GumoHideoutRedirectEnergyVault': {frozenset({'Free'})}}}, 'HollowGrove': {'casual-core': {'SpiderWaterArea': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'SwampTeleporter': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'OuterSwampUpperArea': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'HoruFields': {frozenset({'Bash'})}, 'Iceless': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'standard-core': {'SpiderWaterArea': {frozenset({'Bash'})}, 'HoruFields': {frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'master-core': {'SpiderWaterArea': {frozenset({'Free'})}, 'SwampTeleporter': {frozenset({'DoubleJump'})}, 'OuterSwampUpperArea': {frozenset({'DoubleJump'})}, 'HoruFields': {frozenset({'DoubleJump'})}, 'Iceless': {frozenset({'DoubleJump'}), frozenset({'WallJump'})}}, 'standard-abilities': {'HoruFields': {frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}}, 'expert-core': {'HoruFields': {frozenset({'ChargeJump'}), frozenset({'WallJump'})}}, 'expert-abilities': {'HoruFields': {frozenset({'Climb', 'Dash', ('AC', 3)})}, 'Iceless': {frozenset({'Dash', ('AC', 6)})}}, 'standard-lure': {'Iceless': {frozenset({'Bash'})}}, 'master-lure': {'MoonGrottoStompPlantAccess': {frozenset({'Dash', ('AC', 6)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'DoubleJump'}), frozenset({'Glide', 'WallJump'})}}}, 'HoruBasement': {'casual-core': {'HoruEscapeOuterDoor': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Dash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}}, 'HoruFields': {'casual-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}, 'HoruOuterDoor': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'})}, 'HoruOuterDoor': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}}, 'standard-abilities': {'HoruFieldsPushBlock': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)}), frozenset({'WallJump', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-abilities': {'HoruFieldsPushBlock': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 4)}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Glide', 'ChargeJump'})}}, 'dbash': {'HoruFieldsPushBlock': {frozenset({'Bash'})}}, 'master-abilities': {'HoruFieldsPushBlock': {frozenset({('EC', 4), ('AC', 12), 'Climb', 'Dash', 'DoubleJump'}), frozenset({('AC', 12), 'Dash', ('EC', 5), 'DoubleJump', 'WallJump'})}, 'HoruOuterDoor': {frozenset({('AC', 12), 'Dash', ('EC', 3), 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'gjump': {'HoruFieldsPushBlock': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruOuterDoor': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'HoruOuterDoor': {frozenset({'Bash'})}}}, 'HoruFieldsPushBlock': {'master-lure': {'HollowGrove': {frozenset({'Bash'})}}}, 'HoruInnerDoor': {'casual-core': {'HoruMapLedge': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'L1OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'L2OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'L3OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'L4OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Open', 'ChargeJump'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'R1OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'R2OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'R3OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'R4OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump'})}, 'HoruBasement': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'HoruTeleporter': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}}, 'expert-core': {'HoruMapLedge': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'L1OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'L2OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'L3OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'L4OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'R1OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'R2OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'R3OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'R4OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'HoruBasement': {frozenset({'Free'})}, 'HoruTeleporter': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}}, 'dbash': {'HoruMapLedge': {frozenset({'Bash'})}, 'L1OuterDoor': {frozenset({'Bash'})}, 'L2OuterDoor': {frozenset({'Open', 'Bash'})}, 'L3OuterDoor': {frozenset({'Open', 'Bash'})}, 'R1OuterDoor': {frozenset({'Bash'})}, 'R2OuterDoor': {frozenset({'Open', 'Bash'})}, 'R3OuterDoor': {frozenset({'Open', 'Bash'})}, 'R4OuterDoor': {frozenset({'Open', 'Bash'})}}, 'master-dboost': {'HoruMapLedge': {frozenset({('AC', 12), ('HC', 1), 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L1OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L2OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'L3OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'L4OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'R1OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R2OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R3OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'R4OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'HoruBasement': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'HoruTeleporter': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'L2OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L3OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R2OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Dash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'Dash', 'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'})}, 'R3OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'expert-dboost': {'L2OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'L3OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'R3OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}}, 'expert-abilities': {'L2OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'L3OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'L4OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'R2OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'R3OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'R4OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash'})}}, 'master-abilities': {'L2OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'L3OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'R2OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'R3OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}}, 'gjump': {'L2OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'L3OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'R2OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'R3OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}}}, 'HoruL4LavaChasePeg': {'casual-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Stomp'})}}, 'standard-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'HoruL4CutscenePeg': {frozenset({'Climb', 'Bash', 'Stomp', 'DoubleJump'})}}, 'expert-abilities': {'HoruL4CutscenePeg': {frozenset({('AC', 6), 'Dash', ('EC', 2), 'Bash', 'Stomp'})}}, 'master-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'DoubleJump'})}}}, 'HoruOuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'HoruKey'})}, 'HoruFieldsPushBlock': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'HoruFieldsPushBlock': {frozenset({'Dash', 'DoubleJump', 'Bash'})}}, 'standard-abilities': {'HoruFieldsPushBlock': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)}), frozenset({'WallJump', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-abilities': {'HoruFieldsPushBlock': {frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}, 'master-core': {'HoruFieldsPushBlock': {frozenset({'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'HoruFieldsPushBlock': {frozenset({'Bash', ('AC', 12), 'DoubleJump'})}}, 'gjump': {'HoruFieldsPushBlock': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'HoruR1CutsceneTrigger': {'glitched': {'LowerGinsoTree': {frozenset({'Dash'})}}}, 'HoruR1MapstoneSecret': {'casual-core': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}}, 'expert-core': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-dboost': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'ChargeJump', 'DoubleJump', ('HC', 2)}), frozenset({('AC', 6), ('EC', 1), 'Dash', ('HC', 2), 'ChargeJump'})}}, 'dbash': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'Dash', ('AC', 3)}), frozenset({'Bash', 'DoubleJump'})}}, 'master-core': {'HoruR1CutsceneTrigger': {frozenset({'Bash', 'DoubleJump'})}}, 'master-dboost': {'HoruR1CutsceneTrigger': {frozenset({('HC', 4), ('EC', 4), ('AC', 12), 'Dash', 'DoubleJump'})}}, 'gjump': {'HoruR1CutsceneTrigger': {frozenset({('AC', 12), 'Climb', 'Grenade', 'Glide', 'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 2), 'Grenade', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 6)}), frozenset({('AC', 12), 'Climb', 'Grenade', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', ('HC', 2), 'Grenade', 'Glide', 'ChargeJump'})}}}, 'HoruR3ElevatorLever': {'casual-core': {'HoruR3CutsceneTrigger': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Glide', 'WallJump'})}}, 'casual-dboost': {'HoruR3CutsceneTrigger': {frozenset({'Climb', ('HC', -1), 'ChargeJump'})}}, 'standard-core': {'HoruR3CutsceneTrigger': {frozenset({'WallJump'})}}, 'master-core': {'HoruR3CutsceneTrigger': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-abilities': {'HoruR3CutsceneTrigger': {frozenset({('AC', 12), 'DoubleJump'})}, 'HoruR3PlantCove': {frozenset({'Glide', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump', ('EC', 1)}), frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 1)})}}}, 'HoruR4PuzzleEntrance': {'casual-core': {'HoruR4CutsceneTrigger': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-abilities': {'HoruR4CutsceneTrigger': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 2)})}}, 'gjump': {'HoruR4CutsceneTrigger': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'HoruR4StompHideout': {'casual-core': {'HoruR4PuzzleEntrance': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-abilities': {'HoruR4PuzzleEntrance': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Bash', 'Dash', ('AC', 3)})}}, 'expert-dboost': {'HoruR4PuzzleEntrance': {frozenset({'ChargeJump', ('HC', 2)}), frozenset({'Bash', ('HC', 2)})}, 'HoruR4CutsceneTrigger': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 2)})}}, 'dbash': {'HoruR4PuzzleEntrance': {frozenset({'Bash'})}, 'HoruR4CutsceneTrigger': {frozenset({'Bash'})}}, 'master-dboost': {'HoruR4PuzzleEntrance': {frozenset({('AC', 12), 'DoubleJump', ('HC', 1)})}}, 'gjump': {'HoruR4PuzzleEntrance': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-core': {'HoruR4CutsceneTrigger': {frozenset({'Bash', 'ChargeJump'})}}}, 'HoruTeleporter': {'casual-core': {'HoruInnerDoor': {frozenset({'Climb', 'Open', 'ChargeJump'}), frozenset({'Open', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Open', 'Bash'})}}, 'dbash': {'HoruInnerDoor': {frozenset({'Open', 'Bash'})}}, 'master-core': {'HoruInnerDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'HoruInnerDoor': {frozenset({'Open', ('AC', 12), 'DoubleJump', 'WallJump'})}}}, 'Iceless': {'casual-core': {'UpperGrotto': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'UpperGrotto': {frozenset({'Grenade', 'Bash'})}}, 'standard-dboost': {'UpperGrotto': {frozenset({('HC', 1)})}}, 'gjump': {'UpperGrotto': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'InnerSwampAboveDrainArea': {'casual-core': {'InnerSwampDrainBroken': {frozenset({'ChargeFlame', 'Water'}), frozenset({'Grenade'})}}, 'casual-dboost': {'InnerSwampDrainBroken': {frozenset({'ChargeFlame'})}}}, 'InnerSwampDrainBroken': {'casual-core': {'Swamp': {frozenset({'Climb', 'ChargeJump', 'Water'}), frozenset({'Climb', 'Bash', 'Grenade', 'Water'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump', 'Water'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'WallJump', 'Water'})}}, 'casual-dboost': {'Swamp': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Water'}), frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'Swamp': {frozenset({'DoubleJump', 'Water'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'expert-dboost': {'Swamp': {frozenset({'ChargeJump'}), frozenset({'Climb', ('HC', 0), 'Water'})}}, 'master-core': {'Swamp': {frozenset({'Bash'})}}, 'standard-core': {'Swamp': {frozenset({'Climb', 'DoubleJump', 'Water'})}}, 'standard-abilities': {'Swamp': {frozenset({'Climb', 'Dash', ('AC', 3), 'Water'}), frozenset({'Dash', ('AC', 3), 'WallJump', 'Water'})}}, 'master-dboost': {'Swamp': {frozenset({('HC', 10), 'WallJump'}), frozenset({'Climb', ('HC', 4), ('AC', 12)}), frozenset({'Climb', ('HC', 10)}), frozenset({('HC', 10), 'DoubleJump'}), frozenset({('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({('HC', 4), ('AC', 12), 'WallJump'})}}}, 'L2OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'L3OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'L4': {'casual-core': {'HoruL4LavaChasePeg': {frozenset({'Bash'})}}, 'expert-core': {'HoruL4CutscenePeg': {frozenset({'Free'})}}}, 'LeftGlades': {'casual-core': {'UpperLeftGlades': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'standard-lure': {'UpperLeftGlades': {frozenset({'Bash'})}}, 'expert-core': {'UpperLeftGlades': {frozenset({'DoubleJump'})}}}, 'LeftGumoHideout': {'casual-core': {'WaterVeinArea': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'})}}, 'standard-core': {'WaterVeinArea': {frozenset({'Climb', 'DoubleJump'})}}, 'standard-abilities': {'WaterVeinArea': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'master-core': {'WaterVeinArea': {frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}}}, 'LeftSorrow': {'casual-core': {'LeftSorrowKeystones': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide'})}}, 'expert-dboost': {'LeftSorrowKeystones': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}}, 'master-dboost': {'LeftSorrowKeystones': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)})}}, 'master-abilities': {'LeftSorrowKeystones': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}, 'master-core': {'LeftSorrowKeystones': {frozenset({'Bash'})}}}, 'LeftSorrowKeystones': {'casual-core': {'LeftSorrowMiddleDoor': {frozenset({('KS', 4)})}}, 'standard-core': {'MiddleSorrow': {frozenset({'Bash', 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'Dash', 'DoubleJump'})}}, 'expert-abilities': {'MiddleSorrow': {frozenset({'Bash', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Bash', ('AC', 6), 'Dash'})}}, 'dbash': {'MiddleSorrow': {frozenset({'Bash'})}}, 'master-abilities': {'MiddleSorrow': {frozenset({'ChargeJump', ('AC', 12), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'Stomp', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 12), 'Climb', 'Stomp', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', 'ChargeJump', 'WallJump'})}}}, 'LeftSorrowLowerDoor': {'casual-core': {'LeftSorrow': {frozenset({'Glide', 'Stomp', 'Bash'})}}, 'standard-core': {'LeftSorrow': {frozenset({'Climb', 'Bash', 'ChargeJump', 'Stomp'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'ChargeJump', 'Stomp', 'WallJump'})}}, 'expert-dboost': {'LeftSorrow': {frozenset({'Climb', 'ChargeJump', ('HC', 2)})}}, 'dbash': {'LeftSorrow': {frozenset({'Bash', 'Stomp', ('HC', 2)}), frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}}}, 'LeftSorrowMiddleDoor': {'casual-core': {'MiddleSorrow': {frozenset({'Bash', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Climb', 'Bash', 'Stomp', 'DoubleJump'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'})}}, 'standard-core': {'MiddleSorrow': {frozenset({'Climb', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'WallJump'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}}, 'expert-dboost': {'MiddleSorrow': {frozenset({'Climb', ('HC', 2), 'Bash', 'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'MiddleSorrow': {frozenset({('AC', 6), 'Climb', 'Dash', 'Bash', 'ChargeJump'}), frozenset({('AC', 6), 'Bash', 'Stomp', 'Dash'})}}, 'master-dboost': {'MiddleSorrow': {frozenset({('AC', 12), 'Climb', 'Bash', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'glitched': {'MiddleSorrow': {frozenset({'Dash'})}}}, 'LostGrove': {'casual-core': {'LostGroveExit': {frozenset({'Grenade', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}}, 'casual-dboost': {'LostGroveExit': {frozenset({'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'})}}, 'expert-core': {'LostGroveExit': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Glide', 'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'WallJump'})}}, 'expert-dboost': {'LostGroveExit': {frozenset({'Grenade', ('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Dash', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', ('HC', 4)}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'WallJump'})}}, 'expert-abilities': {'LostGroveExit': {frozenset({'Climb', 'Dash', 'Grenade', 'ChargeJump', ('AC', 3)})}}, 'master-abilities': {'LostGroveExit': {frozenset({'Grenade', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump', 'WallJump'})}}, 'gjump': {'LostGroveExit': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}}}, 'LowerBlackroot': {'casual-core': {'LostGrove': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Grenade'})}}, 'expert-core': {'LostGrove': {frozenset({'Grenade', 'DoubleJump'})}}}, 'LowerChargeFlameArea': {'casual-core': {'GladesMain': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'ChargeFlameAreaStump': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'standard-core': {'GladesMain': {frozenset({'Stomp'})}}, 'expert-abilities': {'GladesMain': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'ChargeFlameAreaStump': {frozenset({'DoubleJump'})}}, 'master-lure': {'ChargeFlameAreaStump': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', ('AC', 6), 'Dash'}), frozenset({'Bash', 'Stomp'})}}}, 'LowerGinsoTree': {'casual-core': {'GinsoMiniBossDoor': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide'}), frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'}), frozenset({'Glide', 'WallJump'})}}, 'standard-dboost': {'GinsoMiniBossDoor': {frozenset({'Climb', ('HC', 0)}), frozenset({('HC', 0), 'WallJump'}), frozenset({'ChargeJump', ('HC', 0)})}}, 'standard-abilities': {'GinsoMiniBossDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'expert-core': {'GinsoMiniBossDoor': {frozenset({'WallJump'})}}, 'master-core': {'GinsoMiniBossDoor': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}, 'glitched': {'R4InnerDoor': {frozenset({'Dash'})}}}, 'LowerLeftGumoHideout': {'glitched': {'LowerBlackroot': {frozenset({'Dash'})}}}, 'LowerSorrow': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'DoubleJump'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Bash', 'WallJump'})}, 'SorrowMapstoneArea': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'LeftSorrowLowerDoor': {frozenset({('KS', 4)})}, 'LeftSorrow': {frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}, 'MiddleSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'WilhelmLedge': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}, 'MiddleSorrow': {frozenset({'Glide', 'Bash'})}}, 'expert-dboost': {'WilhelmLedge': {frozenset({'Glide', ('HC', 2)}), frozenset({'DoubleJump', ('HC', 2)})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Dash', ('AC', 6)})}, 'LeftSorrow': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'Stomp', 'ChargeJump'}), frozenset({('AC', 6), 'Dash', 'ChargeJump', 'DoubleJump'}), frozenset({('EC', 2), 'Dash', 'ChargeJump', ('AC', 6)})}, 'MiddleSorrow': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'WilhelmLedge': {frozenset({'Bash'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Bash'})}, 'SorrowMapstoneArea': {frozenset({'Bash'})}, 'LeftSorrow': {frozenset({'Bash'})}, 'SunstoneArea': {frozenset({'Glide', 'Bash'})}}, 'master-dboost': {'WilhelmLedge': {frozenset({'Glide', ('AC', 12), ('HC', 1)})}, 'LeftSorrow': {frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}}, 'master-abilities': {'WilhelmLedge': {frozenset({('AC', 12), 'DoubleJump'})}, 'LeftSorrow': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}, 'standard-lure': {'SorrowMapstoneArea': {frozenset({'Climb', 'Glide'}), frozenset({'Glide', 'WallJump'})}}, 'gjump': {'LeftSorrow': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'MiddleSorrow': {frozenset({'Bash'})}}, 'glitched': {'MiddleSorrow': {frozenset({'Glide', 'ChargeJump'})}}}, 'LowerSpiritCaverns': {'casual-core': {'MidSpiritCaverns': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'GladesLaserArea': {frozenset({'Bash', ('EC', 4)})}, 'SpiritCavernsDoor': {frozenset({'Open'})}}, 'expert-core': {'MidSpiritCaverns': {frozenset({'Bash', 'Dash'})}}, 'dbash': {'MidSpiritCaverns': {frozenset({'Bash'})}}, 'master-core': {'MidSpiritCaverns': {frozenset({'DoubleJump'})}}}, 'LowerValley': {'casual-core': {'LowerValleyPlantApproach': {frozenset({'Glide', 'Wind'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'DoubleJump'})}, 'MistyEntrance': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Wind'})}, 'ValleyTeleporter': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'DoubleJump'})}}, 'standard-lure': {'LowerValleyPlantApproach': {frozenset({'Bash'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}}, 'standard-core': {'ValleyThreeBirdLever': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}, 'MistyEntrance': {frozenset({'Climb', 'Bash', 'Grenade'})}, 'ValleyTeleporter': {frozenset({'Climb', 'Bash', 'Grenade', 'OpenWorld'}), frozenset({'OpenWorld', 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'ValleyThreeBirdLever': {frozenset({('HC', 1)})}}, 'expert-dboost': {'ValleyThreeBirdLever': {frozenset({('HC', -1)})}}, 'dbash': {'ValleyThreeBirdLever': {frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'MistyEntrance': {frozenset({'Dash', ('AC', 6)})}, 'ValleyTeleporter': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}, 'master-lure': {'MistyEntrance': {frozenset({'Bash'})}, 'ValleyTeleporter': {frozenset({'Bash', 'OpenWorld'})}}}, 'MidSpiritCaverns': {'casual-core': {'GladesLaserArea': {frozenset({('EC', 4)})}, 'UpperSpiritCaverns': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'glitched': {'GladesLaserArea': {frozenset({('EC', 3)})}}, 'casual-dboost': {'UpperSpiritCaverns': {frozenset({'DoubleJump'})}}, 'standard-core': {'UpperSpiritCaverns': {frozenset({'Bash'})}}}, 'MiddleSorrow': {'casual-core': {'UpperSorrow': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Stomp'})}, 'LowerSorrow': {frozenset({'Stomp'})}}, 'gjump': {'UpperSorrow': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'UpperSorrow': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'ChargeJump', ('HC', 2)})}}, 'master-dboost': {'UpperSorrow': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)})}}, 'expert-abilities': {'LeftSorrow': {frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'})}, 'LeftSorrowKeystones': {frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}, 'LowerSorrow': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-core': {'SorrowMainShaftKeystoneArea': {frozenset({'Climb', 'ChargeJump'})}, 'LowerSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'SorrowMainShaftKeystoneArea': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'LowerSorrow': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'SunstoneArea': {frozenset({'Glide', 'Bash'})}}}, 'MistyAbove200xp': {'casual-core': {'MistyBeforeMiniBoss': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'MistyBeforeMiniBoss': {frozenset({'Grenade', 'Bash'}), frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'MistyBeforeMiniBoss': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'MistyBeforeMiniBoss': {frozenset({'Bash'})}}}, 'MistyBeforeDocks': {'casual-core': {'MistyAbove200xp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'})}}, 'standard-core': {'MistyAbove200xp': {frozenset({'Glide', 'ChargeJump'})}}, 'standard-abilities': {'MistyAbove200xp': {frozenset({'Bash', ('AC', 6), 'Dash'}), frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-abilities': {'MistyAbove200xp': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'MistyAbove200xp': {frozenset({'Bash'})}}}, 'MistyBeforeMiniBoss': {'casual-core': {'MistyOrbRoom': {frozenset({('KS', 4)})}}}, 'MistyEntrance': {'casual-core': {'MistyPostFeatherTutorial': {frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-core': {'MistyPostFeatherTutorial': {frozenset({'Glide', 'Bash'})}}, 'standard-abilities': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', 'Glide', ('AC', 3), 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-dboost': {'MistyPostFeatherTutorial': {frozenset({('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'MistyPostFeatherTutorial': {frozenset({'Dash', ('AC', 6), ('EC', 4)}), frozenset({'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'master-core': {'MistyPostFeatherTutorial': {frozenset({'Bash'})}}, 'gjump': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 1)})}}}, 'MistyKeystone3Ledge': {'casual-core': {'MistyPreLasers': {frozenset({'Glide'})}}, 'standard-abilities': {'MistyPreLasers': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}}, 'expert-core': {'MistyPreLasers': {frozenset({'Grenade', 'Bash'}), frozenset({'Dash', 'DoubleJump'})}}, 'expert-dboost': {'MistyPreLasers': {frozenset({'ChargeJump', ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'MistyPreLasers': {frozenset({('HC', 4), 'WallJump'})}}, 'gjump': {'MistyPreLasers': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}}}, 'MistyKeystone4Ledge': {'casual-core': {'MistyBeforeDocks': {frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'Glide'}), frozenset({'Climb', 'Bash', 'Glide', 'DoubleJump'})}}, 'standard-core': {'MistyBeforeDocks': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'})}}, 'master-abilities': {'MistyBeforeDocks': {frozenset({'Dash', ('AC', 6)})}}, 'master-dboost': {'MistyBeforeDocks': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 7)})}}, 'master-lure': {'MistyBeforeDocks': {frozenset({'Bash'})}}}, 'MistyMortarSpikeCave': {'casual-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}}, 'standard-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash'})}}, 'expert-abilities': {'MistyKeystone4Ledge': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'master-core': {'MistyKeystone4Ledge': {frozenset({'Bash'})}}, 'master-abilities': {'MistyKeystone4Ledge': {frozenset({'Dash', ('AC', 6)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}}, 'MistyOrbRoom': {'casual-core': {'MistyPreKeystone2': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'master-core': {'MistyPreKeystone2': {frozenset({'DoubleJump'})}}}, 'MistyPostClimb': {'casual-core': {'MistySpikeCave': {frozenset({'Climb', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'MistySpikeCave': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'MistySpikeCave': {frozenset({'ChargeJump'})}}, 'expert-abilities': {'MistySpikeCave': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'dbash': {'MistySpikeCave': {frozenset({'Bash'})}}, 'master-core': {'MistySpikeCave': {frozenset({'DoubleJump'})}}}, 'MistyPostFeatherTutorial': {'casual-core': {'MistyPostKeystone1': {frozenset({'Free'})}}}, 'MistyPostKeystone1': {'casual-core': {'MistyPreMortarCorridor': {frozenset({'Glide', 'Bash'})}}, 'expert-core': {'MistyPreMortarCorridor': {frozenset({'Glide'})}}, 'expert-dboost': {'MistyPreMortarCorridor': {frozenset({('HC', 6)}), frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-core': {'MistyPreMortarCorridor': {frozenset({'Bash'})}}, 'master-abilities': {'MistyPreMortarCorridor': {frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump'})}}, 'master-dboost': {'MistyPreMortarCorridor': {frozenset({('HC', 3)}), frozenset({('AC', 12), ('HC', 1)})}}}, 'MistyPostLasers': {'casual-core': {'MistyMortarSpikeCave': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'standard-core': {'MistyMortarSpikeCave': {frozenset({'Glide', 'Bash'})}}, 'expert-core': {'MistyMortarSpikeCave': {frozenset({'Glide'})}}, 'master-core': {'MistyMortarSpikeCave': {frozenset({'Bash'})}}}, 'MistyPostMortarCorridor': {'casual-core': {'MistyPrePlantLedge': {frozenset({'Bash'})}}, 'standard-core': {'MistyPrePlantLedge': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'})}}, 'master-core': {'MistyPrePlantLedge': {frozenset({'DoubleJump'})}}, 'master-abilities': {'MistyPrePlantLedge': {frozenset({'Dash', ('AC', 6)})}}}, 'MistyPreClimb': {'casual-core': {'MistyPostClimb': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Stomp'})}}, 'expert-core': {'MistyPostClimb': {frozenset({'Grenade', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}}, 'master-core': {'MistyPostClimb': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump'})}}, 'glitched': {'ForlornTeleporter': {frozenset({'Dash'})}, 'RightForlorn': {frozenset({'Dash'})}}}, 'MistyPreLasers': {'casual-core': {'MistyPostLasers': {frozenset({'Climb', 'Glide', 'WallJump'})}}, 'standard-core': {'MistyPostLasers': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'expert-core': {'MistyPostLasers': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-core': {'MistyPostLasers': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}}, 'MistyPreMortarCorridor': {'casual-core': {'MistyPostMortarCorridor': {frozenset({'Glide'})}}, 'expert-dboost': {'MistyPostMortarCorridor': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', 'DoubleJump', ('AC', 3), ('HC', 1)})}}, 'master-core': {'MistyPostMortarCorridor': {frozenset({'Grenade', 'Bash', 'DoubleJump'})}}, 'master-abilities': {'MistyPostMortarCorridor': {frozenset({'Dash', ('AC', 6)})}}, 'master-dboost': {'MistyPostMortarCorridor': {frozenset({('AC', 12), ('HC', 6)}), frozenset({('HC', 7)})}}, 'glitched': {'RightForlorn': {frozenset({'Free'})}}}, 'MistyPrePlantLedge': {'casual-core': {'MistyPreClimb': {frozenset({'ChargeJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}}, 'standard-core': {'MistyPreClimb': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}}, 'expert-core': {'MistyPreClimb': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'master-core': {'MistyPreClimb': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}}, 'MistySpikeCave': {'casual-core': {'MistyKeystone3Ledge': {frozenset({'Climb', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'MistyKeystone3Ledge': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-core': {'MistyKeystone3Ledge': {frozenset({'DoubleJump'})}}, 'master-core': {'MistyKeystone3Ledge': {frozenset({'Bash'})}}, 'master-dboost': {'MistyKeystone3Ledge': {frozenset({'ChargeJump', ('HC', 1)})}}}, 'MoonGrotto': {'casual-core': {'MoonGrottoAboveTeleporter': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'DeathGauntlet': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'WaterVeinArea': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'MoonGrottoBelowTeleporter': {frozenset({'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'master-core': {'MoonGrottoAboveTeleporter': {frozenset({'DoubleJump'})}}, 'expert-abilities': {'MoonGrottoAboveTeleporter': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}}, 'standard-core': {'WaterVeinArea': {frozenset({'Dash'})}}, 'expert-core': {'WaterVeinArea': {frozenset({'WallJump'})}}, 'master-lure': {'WaterVeinArea': {frozenset({'Bash'})}}, 'standard-dboost': {'MoonGrottoBelowTeleporter': {frozenset({'Glide', ('HC', 1)})}}, 'standard-abilities': {'MoonGrottoBelowTeleporter': {frozenset({'Dash', ('AC', 3)})}}}, 'MoonGrottoAboveTeleporter': {'casual-core': {'UpperGrotto': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'})}, 'MoonGrottoSwampAccessArea': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'})}}, 'standard-core': {'UpperGrotto': {frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'UpperGrotto': {frozenset({'Climb', 'Glide'})}, 'MoonGrottoStompPlantAccess': {frozenset({'ChargeFlame'})}}, 'master-core': {'UpperGrotto': {frozenset({'DoubleJump'}), frozenset({'Bash', 'Dash', ('AC', 3)})}}, 'casual-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'DoubleJump'})}}, 'standard-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'ChargeJump', ('HC', 0)})}}, 'expert-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'Dash', ('HC', 1)})}}, 'expert-abilities': {'MoonGrottoSwampAccessArea': {frozenset({'Dash', ('AC', 6)})}}, 'gjump': {'MoonGrottoSwampAccessArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-lure': {'DeathGauntletRoof': {frozenset({'Bash'})}, 'MoonGrottoBelowTeleporter': {frozenset({'Bash'})}}}, 'MoonGrottoSwampAccessArea': {'casual-core': {'InnerSwampAboveDrainArea': {frozenset({'ChargeJump'})}}, 'standard-lure': {'InnerSwampAboveDrainArea': {frozenset({'Bash'})}}, 'expert-lure': {'InnerSwampAboveDrainArea': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Climb', 'ChargeFlame'})}}, 'master-lure': {'InnerSwampAboveDrainArea': {frozenset({'Grenade', 'DoubleJump'})}}}, 'OuterSwampAbilityCellNook': {'glitched': {'InnerSwampSkyArea': {frozenset({'Dash'})}}}, 'OuterSwampLowerArea': {'casual-core': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Bash'})}, 'OuterSwampUpperArea': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'OuterSwampAbilityCellNook': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'})}, 'OuterSwampMortarPlantAccess': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash'})}, 'SwampEntryArea': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'UpperGrotto': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'expert-abilities': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampUpperArea': {frozenset({'Dash', ('AC', 6)})}}, 'master-abilities': {'OuterSwampMortarAbilityCellLedge': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}, 'expert-core': {'OuterSwampUpperArea': {frozenset({'Climb'}), frozenset({'WallJump'})}}, 'standard-core': {'OuterSwampAbilityCellNook': {frozenset({'Climb'}), frozenset({'Bash'}), frozenset({'WallJump'})}}}, 'OuterSwampMortarAbilityCellLedge': {'expert-core': {'OuterSwampMortarPlantAccess': {frozenset({'ChargeFlame'})}}}, 'OuterSwampUpperArea': {'casual-core': {'GinsoOuterDoor': {frozenset({'GinsoKey'})}, 'OuterSwampAbilityCellNook': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'OuterSwampAbilityCellNook': {frozenset({'Free'})}}}, 'OutsideForlorn': {'casual-core': {'OutsideForlornCliff': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'})}, 'ForlornOuterDoor': {frozenset({'ForlornKey'})}}, 'expert-abilities': {'OutsideForlornCliff': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'OutsideForlornCliff': {frozenset({'Bash'})}}, 'master-core': {'OutsideForlornCliff': {frozenset({'ChargeJump', 'DoubleJump'})}}, 'glitched': {'RightForlorn': {frozenset({'Free'})}}}, 'OutsideForlornCliff': {'casual-core': {'ValleyForlornApproach': {frozenset({'Stomp', 'ChargeJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Bash'})}}, 'expert-core': {'ValleyForlornApproach': {frozenset({'ChargeFlame', 'Stomp', 'WallJump'}), frozenset({'ChargeFlame', 'Stomp', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump'})}}, 'master-core': {'ValleyForlornApproach': {frozenset({'Bash'})}}}, 'R1': {'casual-core': {'HoruR1MapstoneSecret': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'HoruR1MapstoneSecret': {frozenset({'Grenade', 'Bash'})}}, 'standard-abilities': {'HoruR1MapstoneSecret': {frozenset({'Dash', ('AC', 3)})}}, 'expert-dboost': {'HoruR1MapstoneSecret': {frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'Bash', ('HC', 2)}), frozenset({'Dash', ('HC', 2)})}}, 'master-dboost': {'HoruR1MapstoneSecret': {frozenset({'Dash', ('AC', 12), ('HC', 1)}), frozenset({('HC', 6)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)}), frozenset({'Bash', ('AC', 12), ('HC', 1)}), frozenset({('HC', 4), ('AC', 12)})}}, 'gjump': {'HoruR1MapstoneSecret': {frozenset({('AC', 12), 'Climb', 'Grenade', 'ChargeJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 2)}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'Grenade'})}}}, 'R1OuterDoor': {'expert-core': {'L1OuterDoor': {frozenset({'Free'})}}}, 'R3': {'casual-core': {'HoruR3ElevatorLever': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Climb'})}}, 'expert-core': {'HoruR3ElevatorLever': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'WallJump'})}}, 'master-abilities': {'HoruR3ElevatorLever': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}}, 'R3OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'R4': {'casual-core': {'HoruR4StompHideout': {frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Grenade'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-core': {'HoruR4StompHideout': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'HoruR4StompHideout': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', 'Stomp'})}}, 'expert-abilities': {'HoruR4StompHideout': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'expert-dboost': {'HoruR4StompHideout': {frozenset({('HC', 3), 'Bash'})}}, 'dbash': {'HoruR4StompHideout': {frozenset({'Bash'})}}}, 'RazielNoArea': {'casual-core': {'BlackrootGrottoConnection': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}, 'standard-core': {'BlackrootGrottoConnection': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'BlackrootGrottoConnection': {frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'})}}, 'expert-dboost': {'BlackrootGrottoConnection': {frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'glitched': {'BlackrootGrottoConnection': {frozenset({'Climb'})}, 'GumoHideout': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}}, 'SorrowBashLedge': {'casual-core': {'LowerSorrow': {frozenset({'Glide', 'Wind'})}}, 'expert-lure': {'LowerSorrow': {frozenset({'Climb', 'Dash', 'Glide', 'DoubleJump', 'Bash'}), frozenset({'Dash', 'Glide', 'DoubleJump', 'WallJump', 'Bash'})}}, 'dbash': {'LowerSorrow': {frozenset({'Bash'})}}, 'expert-dboost': {'LowerSorrow': {frozenset({'Climb', 'ChargeJump', ('HC', 6)}), frozenset({'ChargeJump', ('HC', 6), 'WallJump'})}}, 'master-dboost': {'LowerSorrow': {frozenset({('AC', 12), ('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', ('AC', 12)}), frozenset({('AC', 12), ('HC', 10), 'DoubleJump', 'WallJump'})}}}, 'SorrowMapstoneArea': {'glitched': {'HoruInnerDoor': {frozenset({'Dash'})}}}, 'SorrowTeleporter': {'casual-core': {'BelowSunstoneArea': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'AboveChargeJumpArea': {frozenset({'Climb', 'Stomp', 'ChargeJump'})}}, 'standard-core': {'BelowSunstoneArea': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'AboveChargeJumpArea': {frozenset({'Climb', 'ChargeJump'})}}, 'gjump': {'BelowSunstoneArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'BelowSunstoneArea': {frozenset({'Grenade', 'Stomp', ('HC', 2), 'Bash'}), frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'Glide', 'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'WallJump', 'Dash', ('HC', 2), 'ChargeJump', ('AC', 3)})}, 'AboveChargeJumpArea': {frozenset({('HC', 2), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'master-core': {'BelowSunstoneArea': {frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'Stomp', 'Bash'})}, 'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Stomp', 'Bash'})}}, 'master-dboost': {'BelowSunstoneArea': {frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'ChargeJump', 'WallJump'}), frozenset({('AC', 12), ('HC', 1), 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), ('HC', 1), 'Glide', 'ChargeJump', 'WallJump'})}}, 'expert-core': {'AboveChargeJumpArea': {frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'})}}, 'expert-abilities': {'AboveChargeJumpArea': {frozenset({'WallJump', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}}, 'SpiderSacArea': {'casual-core': {'SpiderSacTetherArea': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'SpiderWaterArea': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'SpiderSacEnergyNook': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'SpiritTreeRefined': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Climb'})}}, 'master-core': {'SpiderSacTetherArea': {frozenset({'DoubleJump'})}, 'SpiritTreeRefined': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}}, 'expert-abilities': {'SpiderWaterArea': {frozenset({'Dash', ('AC', 3)})}, 'SpiderSacEnergyNook': {frozenset({'Dash', ('AC', 3)})}}, 'standard-core': {'SpiritTreeRefined': {frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}}, 'SpiderSacEnergyNook': {'master-abilities': {'ChargeFlameAreaPlantAccess': {frozenset({'ChargeFlame', ('AC', 3)})}}}, 'SpiderSacTetherArea': {'casual-core': {'SpiderWaterArea': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SpiderSacEnergyNook': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-abilities': {'SpiderWaterArea': {frozenset({'Grenade', 'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'SpiderSacEnergyNook': {frozenset({'Grenade', 'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}}, 'SpiderWaterArea': {'casual-core': {'SpiderSacEnergyNook': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'SpiderSacArea': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}, 'HollowGrove': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'DeathGauntletRoof': {frozenset({'Stomp', 'WallJump', 'Water'}), frozenset({'Bash', 'Stomp', 'Water'}), frozenset({'Climb', 'Stomp', 'Water'})}}, 'standard-core': {'SpiderSacEnergyNook': {frozenset({'Dash', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'})}, 'SpiderSacArea': {frozenset({'Climb', 'Bash'}), frozenset({'Glide', 'Dash', 'WallJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Climb', 'Dash', 'Glide'})}, 'HollowGrove': {frozenset({'Bash'})}}, 'expert-core': {'SpiderSacEnergyNook': {frozenset({'DoubleJump'})}}, 'dbash': {'SpiderSacEnergyNook': {frozenset({'Bash'})}, 'SpiderSacArea': {frozenset({'Bash'})}}, 'expert-abilities': {'SpiderSacEnergyNook': {frozenset({'Dash', ('AC', 3)})}, 'SpiderSacArea': {frozenset({'Dash', ('AC', 6)})}}, 'gjump': {'SpiderSacEnergyNook': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'SpiderSacArea': {frozenset({'Climb', 'ChargeJump'})}}, 'master-abilities': {'HollowGrove': {frozenset({'Dash', ('AC', 6)})}}, 'expert-dboost': {'DeathGauntletRoof': {frozenset({'Climb', 'Stomp', ('HC', 2)}), frozenset({'Stomp', 'WallJump', ('HC', 2)}), frozenset({'Bash', 'Stomp', ('HC', 1)}), frozenset({'Stomp', 'DoubleJump', ('HC', 2)})}}, 'master-dboost': {'DeathGauntletRoof': {frozenset({'Climb', 'Stomp', ('AC', 12)}), frozenset({'Stomp', ('AC', 12), 'WallJump'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}}}, 'SpiritCavernsDoor': {'casual-core': {'SpiritCavernsDoorOpened': {frozenset({('KS', 2)})}}}, 'SpiritCavernsDoorOpened': {'casual-core': {'LowerSpiritCaverns': {frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'})}}, 'standard-lure': {'LowerSpiritCaverns': {frozenset({'Bash'})}}, 'expert-abilities': {'LowerSpiritCaverns': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'LowerSpiritCaverns': {frozenset({'DoubleJump'})}}}, 'SpiritTreeDoor': {'casual-core': {'SpiritTreeDoorOpened': {frozenset({('KS', 4)})}}}, 'SpiritTreeDoorOpened': {'casual-core': {'SpiritTreeRefined': {frozenset({'Climb'}), frozenset({'Bash'}), frozenset({'WallJump'})}}, 'casual-dboost': {'SpiritTreeRefined': {frozenset({'ChargeJump'})}}, 'master-core': {'SpiritTreeRefined': {frozenset({'DoubleJump'})}}}, 'SpiritTreeRefined': {'casual-core': {'SpiritTreeDoor': {frozenset({'Open'})}, 'ValleyEntry': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SpiderSacArea': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'ChargeFlame', 'Climb', 'Glide'}), frozenset({'Grenade', 'WallJump'}), frozenset({'ChargeFlame', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Climb', 'Dash'}), frozenset({'Grenade', 'Climb', 'Glide'}), frozenset({'Grenade', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Climb', 'Dash'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'ChargeJump'})}}, 'standard-core': {'ValleyEntry': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'expert-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacArea': {frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'WallJump'})}}, 'expert-core': {'SpiderSacArea': {frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'Climb'})}}, 'master-core': {'SpiderSacArea': {frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}}, 'master-abilities': {'SpiderSacArea': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}}}, 'SunkenGladesRunaway': {'casual-core': {'GladesMain': {frozenset({('KS', 2)}), frozenset({'OpenWorld'})}, 'BlackrootDarknessRoom': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'DeathGauntletDoor': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'SpiritTreeRefined': {frozenset({'TPGrove'})}, 'MoonGrotto': {frozenset({'TPGrotto'})}, 'SwampTeleporter': {frozenset({'TPSwamp'})}, 'ValleyTeleporter': {frozenset({'TPValley'})}, 'SorrowTeleporter': {frozenset({'TPSorrow'})}, 'GinsoTeleporter': {frozenset({'TPGinso'})}, 'ForlornTeleporter': {frozenset({'TPForlorn'})}, 'HoruTeleporter': {frozenset({'TPHoru', 'HoruKey'})}}, 'glitched': {'LowerChargeFlameArea': {frozenset({'Grenade'})}}, 'master-core': {'BlackrootDarknessRoom': {frozenset({'DoubleJump'})}, 'DeathGauntletDoor': {frozenset({'DoubleJump'})}}, 'casual-dboost': {'DeathGauntletDoor': {frozenset({'Climb'}), frozenset({'WallJump'})}}, 'standard-lure': {'DeathGauntletDoor': {frozenset({'Bash'})}}}, 'SunstoneArea': {'casual-core': {'UpperSorrow': {frozenset({'Stomp'})}, 'SorrowTeleporter': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'standard-core': {'UpperSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-dboost': {'SorrowTeleporter': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 2)})}}}, 'Swamp': {'casual-core': {'SwampDrainlessArea': {frozenset({'Stomp'})}, 'SwampKeyDoorPlatform': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'ChargeJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'SwampWater': {frozenset({'Water'})}}, 'expert-core': {'SwampDrainlessArea': {frozenset({'Climb', 'ChargeJump'})}}, 'casual-dboost': {'SwampKeyDoorPlatform': {frozenset({'Free'})}}, 'standard-core': {'SwampKeyDoorPlatform': {frozenset({'Dash'})}}, 'master-dboost': {'SwampWater': {frozenset({('HC', 4), ('AC', 12)}), frozenset({('HC', 12)})}}}, 'SwampEntryArea': {'casual-core': {'SwampDrainlessArea': {frozenset({'Climb', 'Stomp'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}, 'Swamp': {frozenset({'Stomp', 'ChargeJump'})}}, 'standard-core': {'SwampDrainlessArea': {frozenset({'Climb', 'ChargeJump'})}, 'Swamp': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'SwampDrainlessArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'Swamp': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}}}, 'SwampKeyDoorOpened': {'casual-core': {'RightSwamp': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'})}}, 'standard-core': {'RightSwamp': {frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'standard-dboost': {'RightSwamp': {frozenset({'Climb', 'ChargeJump', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0), 'WallJump'}), frozenset({('HC', 0), 'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump', ('HC', 0)})}}, 'expert-dboost': {'RightSwamp': {frozenset({'Climb', 'DoubleJump', ('HC', 2)}), frozenset({('HC', 0), 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', ('HC', 0), 'WallJump', 'Water'}), frozenset({'DoubleJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'Dash', ('AC', 6), ('HC', 0)}), frozenset({('AC', 6), ('HC', 0), 'Dash', ('EC', 3), 'Bash'}), frozenset({'Dash', ('AC', 6), ('HC', 0), 'WallJump'})}}, 'expert-abilities': {'RightSwamp': {frozenset({('EC', 2), 'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6), ('EC', 2)})}}, 'dbash': {'RightSwamp': {frozenset({'Bash', 'Water'}), frozenset({'Bash', ('HC', 2)})}}, 'master-dboost': {'RightSwamp': {frozenset({('HC', 9), 'WallJump'}), frozenset({('AC', 12), 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), 'DoubleJump'}), frozenset({('AC', 12), 'WallJump', 'Water', ('HC', 2)}), frozenset({('HC', 4), ('AC', 12), 'WallJump'}), frozenset({('HC', 6), 'WallJump', 'Water'})}}, 'master-abilities': {'RightSwamp': {frozenset({('EC', 2), 'Dash', ('AC', 6), 'DoubleJump'})}}, 'gjump': {'RightSwamp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'SwampKeyDoorPlatform': {'casual-core': {'SwampKeyDoorOpened': {frozenset({('KS', 2)})}, 'InnerSwampSkyArea': {frozenset({'Glide', 'Wind'})}}, 'standard-core': {'InnerSwampSkyArea': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'dbash': {'InnerSwampSkyArea': {frozenset({'Bash'})}}, 'gjump': {'InnerSwampSkyArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'SwampTeleporter': {'glitched': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Free'})}}}, 'TopGinsoTree': {'casual-core': {'GinsoEscape': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}}, 'standard-core': {'GinsoEscape': {frozenset({'Bash'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-dboost': {'GinsoEscape': {frozenset({('HC', 0), 'Climb', 'Dash', 'Stomp', 'DoubleJump'}), frozenset({('HC', 0), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('HC', 0), 'Climb', 'Glide', 'Stomp', 'DoubleJump'}), frozenset({('HC', 0), 'Dash', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'expert-abilities': {'GinsoEscape': {frozenset({'Stomp', ('AC', 6), 'Dash'})}}, 'master-abilities': {'GinsoEscape': {frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}}, 'master-dboost': {'GinsoEscape': {frozenset({('HC', 0), 'Stomp', 'DoubleJump', 'Dash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', ('HC', 0)})}}}, 'UpperGinsoDoorClosed': {'casual-core': {'UpperGinsoDoorOpened': {frozenset({('KS', 4)})}}}, 'UpperGinsoDoorOpened': {'casual-core': {'GinsoTeleporter': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}, 'UpperGinsoTree': {frozenset({'Open', 'Bash'}), frozenset({'Open', 'DoubleJump'}), frozenset({'Glide', 'Open'})}}, 'standard-core': {'GinsoTeleporter': {frozenset({'Bash'})}}, 'expert-dboost': {'GinsoTeleporter': {frozenset({'ChargeJump', ('HC', 2)}), frozenset({('HC', 0), 'ChargeJump', 'DoubleJump'})}}, 'master-dboost': {'GinsoTeleporter': {frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 2)})}}, 'casual-dboost': {'UpperGinsoTree': {frozenset({'Open', ('HC', 0)})}}, 'standard-abilities': {'UpperGinsoTree': {frozenset({'Open', 'Dash', ('AC', 3)})}}}, 'UpperGinsoRedirectArea': {'casual-core': {'UpperGinsoTree': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'BashTree': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}, 'master-abilities': {'UpperGinsoTree': {frozenset({'ChargeFlame', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', ('AC', 12), 'DoubleJump'}), frozenset({'ChargeFlame', ('AC', 12), 'DoubleJump', 'WallJump'})}}, 'standard-abilities': {'BashTree': {frozenset({'Dash', ('AC', 3)})}}, 'standard-dboost': {'BashTree': {frozenset({'Glide', ('HC', 1)}), frozenset({'Dash', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 1)})}}}, 'UpperGinsoTree': {'casual-core': {'UpperGinsoDoorClosed': {frozenset({'Free'})}, 'UpperGinsoRedirectArea': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Stomp'})}}, 'standard-core': {'UpperGinsoRedirectArea': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'UpperGinsoRedirectArea': {frozenset({'ChargeFlame', 'ChargeJump'})}}, 'expert-abilities': {'UpperGinsoRedirectArea': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'master-core': {'UpperGinsoRedirectArea': {frozenset({'Bash'})}}}, 'UpperGrotto': {'casual-core': {'OuterSwampMortarAbilityCellLedge': {frozenset({'ChargeJump'})}, 'MoonGrottoStompPlantAccess': {frozenset({'Stomp'})}, 'OuterSwampLowerArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'Iceless': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'Dash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'standard-core': {'MoonGrottoStompPlantAccess': {frozenset({'Climb', 'ChargeJump'})}, 'Iceless': {frozenset({'Grenade', 'Bash'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Grenade', 'Bash'})}}, 'master-core': {'MoonGrottoStompPlantAccess': {frozenset({'Bash'})}, 'Iceless': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'})}}, 'expert-core': {'OuterSwampLowerArea': {frozenset({'DoubleJump'})}}, 'standard-dboost': {'Iceless': {frozenset({'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', ('HC', 1)})}}, 'standard-abilities': {'Iceless': {frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'gjump': {'Iceless': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'glitched': {'MoonGrottoAboveTeleporter': {frozenset({'Free'})}}}, 'UpperSorrow': {'glitched': {'SunstoneArea': {frozenset({'Glide', 'ChargeJump'})}, 'SorrowTeleporter': {frozenset({'Climb', 'Glide', 'ChargeJump'})}}, 'casual-core': {'ChargeJumpDoor': {frozenset({'Free'})}}}, 'UpperSpiritCaverns': {'casual-core': {'SpiritTreeDoor': {frozenset({'Free'})}}}, 'ValleyEntry': {'casual-core': {'ValleyEntryTree': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Bash'}), frozenset({'WallJump'})}, 'ValleyEntryTreePlantAccess': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'ValleyPostStompDoor': {frozenset({'Stomp', 'ChargeJump', 'WallJump'}), frozenset({'OpenWorld', 'DoubleJump', 'WallJump'}), frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump'}), frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'ChargeJump', 'OpenWorld', 'WallJump'}), frozenset({'Climb', 'OpenWorld', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld', 'WallJump'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'DoubleJump'})}, 'ValleyStompFloor': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Glide', 'DoubleJump', 'OpenWorld'})}, 'SpiritTreeRefined': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'standard-lure': {'ValleyEntryTree': {frozenset({'Bash'})}}, 'expert-dboost': {'ValleyEntryTree': {frozenset({'ChargeJump', ('HC', 1)})}, 'ValleyPostStompDoor': {frozenset({'Stomp', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeJump', 'OpenWorld', ('HC', 1)}), frozenset({'Bash', 'ChargeJump', ('HC', 1)})}}, 'expert-abilities': {'ValleyEntryTree': {frozenset({'Dash', ('AC', 6)})}, 'ValleyEntryTreePlantAccess': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'ValleyThreeBirdLever': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyStompFloor': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'SpiritTreeRefined': {frozenset({'Dash', ('AC', 6)})}}, 'expert-core': {'ValleyEntryTreePlantAccess': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade'})}}, 'expert-lure': {'ValleyPostStompDoor': {frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'})}}, 'standard-core': {'ValleyThreeBirdLever': {frozenset({'Dash', 'ChargeJump', 'DoubleJump', 'OpenWorld'})}, 'ValleyStompFloor': {frozenset({'Glide', 'Dash', 'OpenWorld'}), frozenset({'Dash', 'DoubleJump', 'OpenWorld'})}}, 'gjump': {'ValleyThreeBirdLever': {frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'Grenade'})}}, 'standard-abilities': {'ValleyStompFloor': {frozenset({'Dash', 'ChargeJump', 'OpenWorld', ('AC', 3)})}}, 'standard-dboost': {'ValleyStompFloor': {frozenset({'OpenWorld', ('HC', 1)})}}}, 'ValleyEntryTree': {'casual-core': {'ValleyEntryTreePlantAccess': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyPostStompDoor': {frozenset({'OpenWorld'})}}, 'expert-core': {'ValleyEntryTreePlantAccess': {frozenset({'Grenade'})}}, 'expert-abilities': {'ValleyEntryTreePlantAccess': {frozenset({'Dash', ('AC', 6)})}}}, 'ValleyForlornApproach': {'casual-core': {'OutsideForlornCliff': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'ValleyStompFloor': {frozenset({'ChargeJump'})}}, 'standard-core': {'OutsideForlornCliff': {frozenset({'Stomp'})}}, 'master-core': {'ValleyStompFloor': {frozenset({'Bash'})}}}, 'ValleyMain': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Dash'}), frozenset({'Bash'}), frozenset({'DoubleJump'})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}}, 'gjump': {'WilhelmLedge': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'ValleyPostStompDoor': {'casual-core': {'ValleyRight': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'ValleyEntry': {frozenset({'OpenWorld'})}, 'ValleyEntryTree': {frozenset({'Bash', 'OpenWorld'}), frozenset({'OpenWorld', 'WallJump'}), frozenset({'ChargeJump', 'OpenWorld'}), frozenset({'OpenWorld', 'DoubleJump'}), frozenset({'Climb', 'OpenWorld'})}}, 'expert-dboost': {'ValleyRight': {frozenset({('HC', 4), 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'dbash': {'ValleyRight': {frozenset({'Bash'})}}, 'master-dboost': {'ValleyRight': {frozenset({('HC', 0), ('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({('HC', 0), ('AC', 12), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 8)})}}, 'gjump': {'ValleyRight': {frozenset({('AC', 12), 'Climb', 'Grenade', 'Stomp', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', ('HC', 2), 'Grenade', 'ChargeJump'}), frozenset({'Climb', 'Grenade', 'Stomp', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 6), 'Climb', 'Dash', 'Grenade', 'ChargeJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', 'Grenade'})}}, 'standard-core': {'ValleyEntryTree': {frozenset({'Dash', 'OpenWorld'})}}}, 'ValleyRight': {'expert-dboost': {'ValleyPostStompDoor': {frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'ValleyPostStompDoor': {frozenset({('HC', 4)}), frozenset({('AC', 12), ('HC', 2)})}}, 'casual-core': {'ValleyStomplessApproach': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 6), 'WallJump'})}}}, 'ValleyStompFloor': {'casual-core': {'ValleyForlornApproach': {frozenset({'Stomp'})}, 'ValleyThreeBirdLever': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'ValleyEntry': {frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide', 'ChargeJump', 'OpenWorld'})}}, 'standard-core': {'ValleyForlornApproach': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'ValleyForlornApproach': {frozenset({'Bash'})}}, 'standard-dboost': {'ValleyEntry': {frozenset({'ChargeJump', 'OpenWorld', ('HC', 1)})}}, 'expert-dboost': {'ValleyEntry': {frozenset({('HC', 0), 'OpenWorld', 'DoubleJump'}), frozenset({'OpenWorld', 'ChargeJump', ('HC', 0)})}}, 'expert-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}}, 'ValleyStompless': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Bash'})}, 'ValleyStomplessApproach': {frozenset({'Bash'}), frozenset({'Glide'})}, 'MistyEntrance': {frozenset({'Bash', 'OpenWorld'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'OpenWorld', 'DoubleJump'}), frozenset({'Dash', 'OpenWorld'}), frozenset({'Glide', 'OpenWorld'})}, 'LowerValley': {frozenset({'OpenWorld'})}, 'LowerValleyPlantApproach': {frozenset({'OpenWorld'})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 6), ('EC', 3)})}}, 'expert-core': {'ValleyMain': {frozenset({'Bash'})}}, 'master-core': {'ValleyMain': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-dboost': {'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'ValleyStomplessApproach': {frozenset({('HC', 7)}), frozenset({('HC', 4), 'ChargeJump'}), frozenset({('AC', 12), 'ChargeJump', ('HC', 2)}), frozenset({('HC', 4), ('AC', 12)})}}}, 'ValleyStomplessApproach': {'casual-core': {'ValleyStompless': {frozenset({'Bash'})}}, 'expert-dboost': {'ValleyStompless': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'ValleyStompless': {frozenset({('EC', 2), 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'DoubleJump', ('EC', 2)})}}, 'master-dboost': {'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}}, 'ValleyTeleporter': {'casual-core': {'ValleyPostStompDoor': {frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyRight': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Glide', 'OpenWorld'})}, 'LowerValley': {frozenset({'OpenWorld'})}, 'LowerValleyPlantApproach': {frozenset({'OpenWorld'})}, 'ValleyStompless': {frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Glide', 'OpenWorld', 'Wind'})}}, 'expert-abilities': {'ValleyPostStompDoor': {frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({'Dash', ('AC', 6), ('EC', 3)})}, 'ValleyRight': {frozenset({'Dash', ('AC', 6)})}, 'MistyEntrance': {frozenset({'Dash', 'DoubleJump', ('AC', 3), 'OpenWorld'}), frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyStompless': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}, 'master-core': {'ValleyPostStompDoor': {frozenset({'DoubleJump'})}}, 'expert-dboost': {'ValleyRight': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Glide', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', ('HC', 1)})}}, 'gjump': {'ValleyRight': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-abilities': {'ValleyRight': {frozenset({('AC', 12), 'DoubleJump'})}, 'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump', 'WallJump', 'OpenWorld'})}}, 'standard-core': {'MistyEntrance': {frozenset({'Grenade', 'Bash', 'DoubleJump', 'OpenWorld'})}}, 'standard-abilities': {'MistyEntrance': {frozenset({'OpenWorld', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'expert-core': {'MistyEntrance': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'OpenWorld'}), frozenset({'Dash', 'ChargeJump', 'DoubleJump', 'OpenWorld'}), frozenset({'Grenade', 'Bash', 'OpenWorld'})}, 'ValleyStompless': {frozenset({'Climb', 'Bash', 'Grenade', 'OpenWorld'}), frozenset({'Grenade', 'Bash', 'OpenWorld', 'WallJump'})}}, 'master-lure': {'ValleyStompless': {frozenset({'Bash', 'OpenWorld', 'WallJump'})}}}, 'ValleyThreeBirdLever': {'casual-core': {'ValleyEntry': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide'})}, 'LowerValley': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'DoubleJump'})}}, 'standard-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 3)})}, 'LowerValley': {frozenset({'Dash', ('AC', 3)})}}, 'standard-dboost': {'ValleyEntry': {frozenset({('HC', 4)})}, 'LowerValley': {frozenset({('HC', 4)})}}, 'expert-dboost': {'ValleyEntry': {frozenset({'Climb', ('HC', -1)}), frozenset({('HC', -1), 'WallJump'}), frozenset({('HC', -1), 'ChargeJump'})}, 'LowerValley': {frozenset({('HC', 2)})}}, 'standard-core': {'LowerValley': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}}, 'dbash': {'LowerValley': {frozenset({'Bash'})}}}, 'WaterVeinArea': {'casual-core': {'LeftGumoHideout': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerLeftGumoHideout': {frozenset({'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'MoonGrotto': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}}, 'standard-core': {'LeftGumoHideout': {frozenset({'Dash'})}, 'LowerLeftGumoHideout': {frozenset({'Dash'})}, 'MoonGrotto': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}}}, 'WilhelmLedge': {'casual-core': {'SorrowBashLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Bash'}), frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'ValleyStompless': {frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyMain': {frozenset({'Stomp'})}}, 'standard-core': {'SorrowBashLedge': {frozenset({'Glide', 'Dash', 'Climb', 'DoubleJump'})}, 'ValleyMain': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-abilities': {'SorrowBashLedge': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}, 'ValleyStompless': {frozenset({'Dash', ('AC', 6)})}}, 'master-abilities': {'SorrowBashLedge': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump'})}, 'ValleyMain': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-abilities': {'ValleyStompless': {frozenset({'Dash', 'DoubleJump', ('AC', 3)})}}, 'standard-lure': {'ValleyMain': {frozenset({'HoruKey'})}}, 'expert-core': {'ValleyMain': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}}, 'master-core': {'ValleyMain': {frozenset({'Bash'})}}, 'glitched': {'ValleyMain': {frozenset({'ChargeJump'})}}}} diff --git a/worlds_disabled/oribf/Types.py b/worlds_disabled/oribf/Types.py deleted file mode 100644 index 1ed2423a487b..000000000000 --- a/worlds_disabled/oribf/Types.py +++ /dev/null @@ -1,5 +0,0 @@ -from typing import NamedTuple - -class Location(NamedTuple): - code: int - vanilla_item: str \ No newline at end of file diff --git a/worlds_disabled/oribf/__init__.py b/worlds_disabled/oribf/__init__.py deleted file mode 100644 index 6400961a5a8c..000000000000 --- a/worlds_disabled/oribf/__init__.py +++ /dev/null @@ -1,71 +0,0 @@ -from typing import Set - -from worlds.AutoWorld import World -from .Items import item_table, default_pool -from .Locations import lookup_name_to_id -from .Rules import set_rules, location_rules -from .Regions import locations_by_region, connectors -from .Options import options -from BaseClasses import Region, Item, Location, Entrance, ItemClassification - - -class OriBlindForest(World): - game: str = "Ori and the Blind Forest" - - topology_present = True - data_version = 1 - - item_name_to_id = item_table - location_name_to_id = lookup_name_to_id - - option_definitions = options - - hidden = True - - def generate_early(self): - logic_sets = {"casual-core"} - for logic_set in location_rules: - if logic_set != "casual-core" and getattr(self.multiworld, logic_set.replace("-", "_")): - logic_sets.add(logic_set) - self.logic_sets = logic_sets - - set_rules = set_rules - - def create_region(self, name: str): - return Region(name, self.player, self.multiworld) - - def create_regions(self): - world = self.multiworld - menu = self.create_region("Menu") - world.regions.append(menu) - start = Entrance(self.player, "Start Game", menu) - menu.exits.append(start) - - # workaround for now, remove duplicate locations - already_placed_locations = set() - - for region_name, locations in locations_by_region.items(): - locations -= already_placed_locations - already_placed_locations |= locations - region = self.create_region(region_name) - if region_name == "SunkenGladesRunaway": # starting point - start.connect(region) - region.locations = {Location(self.player, location, lookup_name_to_id[location], region) - for location in locations} - world.regions.append(region) - - for region_name, exits in connectors.items(): - parent = world.get_region(region_name, self.player) - for exit in exits: - connection = Entrance(self.player, exit, parent) - connection.connect(world.get_region(exit, self.player)) - parent.exits.append(connection) - - def generate_basic(self): - for item_name, count in default_pool.items(): - self.multiworld.itempool.extend([self.create_item(item_name) for _ in range(count)]) - - def create_item(self, name: str) -> Item: - return Item(name, - ItemClassification.progression if not name.startswith("EX") else ItemClassification.filler, - item_table[name], self.player) From f3e00b6d62ec773a35a1abdc867a2d95fb546d43 Mon Sep 17 00:00:00 2001 From: Doug Hoskisson Date: Tue, 20 May 2025 16:48:24 -0700 Subject: [PATCH 060/183] Zillion: fix `read_contents` to be compatible with base class (#5015) --- worlds/zillion/patch.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/worlds/zillion/patch.py b/worlds/zillion/patch.py index 0eee3315f4a1..e28d70f18182 100644 --- a/worlds/zillion/patch.py +++ b/worlds/zillion/patch.py @@ -1,5 +1,5 @@ import os -from typing import BinaryIO +from typing import Any, BinaryIO import zipfile from typing_extensions import override @@ -46,9 +46,10 @@ def write_contents(self, opened_zipfile: zipfile.ZipFile) -> None: compress_type=zipfile.ZIP_DEFLATED) @override - def read_contents(self, opened_zipfile: zipfile.ZipFile) -> None: - super().read_contents(opened_zipfile) + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> dict[str, Any]: + manifest = super().read_contents(opened_zipfile) self.gen_data_str = opened_zipfile.read("gen_data.json").decode() + return manifest @override def patch(self, target: str) -> None: From 7f4bf71807f7b6fc2fb70082abeff4376b1a0e34 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Wed, 21 May 2025 14:12:00 +0200 Subject: [PATCH 061/183] Adventure: Update AdventureDeltaPatch.read_contents to return the manifest as required by #4331 (#5016) --- worlds/adventure/Rom.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/worlds/adventure/Rom.py b/worlds/adventure/Rom.py index 4d56cd19e529..cb104c56d867 100644 --- a/worlds/adventure/Rom.py +++ b/worlds/adventure/Rom.py @@ -182,10 +182,11 @@ def write_contents(self, opened_zipfile: zipfile.ZipFile): json.dumps(self.rom_deltas), compress_type=zipfile.ZIP_LZMA) - def read_contents(self, opened_zipfile: zipfile.ZipFile): - super(AdventureDeltaPatch, self).read_contents(opened_zipfile) + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> dict[str, Any]: + manifest = super(AdventureDeltaPatch, self).read_contents(opened_zipfile) self.foreign_items = AdventureDeltaPatch.read_foreign_items(opened_zipfile) self.autocollect_items = AdventureDeltaPatch.read_autocollect_items(opened_zipfile) + return manifest @classmethod def get_source_data(cls) -> bytes: From 3069deb019cf06a21af4625224be78d5118d61c6 Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Wed, 21 May 2025 08:12:27 -0400 Subject: [PATCH 062/183] Jak and Daxter: Implement New Game (#3291) * Jak 1: Initial commit: Cell Locations, Items, and Regions modeled. * Jak 1: Wrote Regions, Rules, init. Untested. * Jak 1: Fixed mistakes, need better understanding of Entrances. * Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated. * Jak 1: Add Scout Fly Locations, code and style cleanup. * Jak 1: Add Scout Flies to Regions. * Jak 1: Add version info. * Jak 1: Reduced code smell. * Jak 1: Fixed UT bugs, added Free The Sages as Locations. * Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances. * Jak 1: Add some one-ways, adjust scout fly offset. * Jak 1: Found Scout Fly ID's for first 4 maps. * Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse. * Jak 1: Fixed a few things. Four maps to go. * Jak 1: Last of the scout flies mapped! * Jak 1: simplify citadel sages logic. * Jak 1: WebWorld setup, some documentation. * Jak 1: Initial checkin of Client. Removed the colon from the game name. * Jak 1: Refactored client into components, working on async communication between the client and the game. * Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory. * Jak 1: There's magic in the air... * Jak 1: Fixed bug translating scout fly ID's. * Jak 1: Make the REPL a little more verbose, easier to debug. * Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't. * Jak 1: Update Documentation. * Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops. * Jak 1: Simplified startup process, updated docs, prayed. * Jak 1: quick fix to settings. * Jak and Daxter: Implement New Game (#1) * Jak 1: Initial commit: Cell Locations, Items, and Regions modeled. * Jak 1: Wrote Regions, Rules, init. Untested. * Jak 1: Fixed mistakes, need better understanding of Entrances. * Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated. * Jak 1: Add Scout Fly Locations, code and style cleanup. * Jak 1: Add Scout Flies to Regions. * Jak 1: Add version info. * Jak 1: Reduced code smell. * Jak 1: Fixed UT bugs, added Free The Sages as Locations. * Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances. * Jak 1: Add some one-ways, adjust scout fly offset. * Jak 1: Found Scout Fly ID's for first 4 maps. * Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse. * Jak 1: Fixed a few things. Four maps to go. * Jak 1: Last of the scout flies mapped! * Jak 1: simplify citadel sages logic. * Jak 1: WebWorld setup, some documentation. * Jak 1: Initial checkin of Client. Removed the colon from the game name. * Jak 1: Refactored client into components, working on async communication between the client and the game. * Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory. * Jak 1: There's magic in the air... * Jak 1: Fixed bug translating scout fly ID's. * Jak 1: Make the REPL a little more verbose, easier to debug. * Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't. * Jak 1: Update Documentation. * Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops. * Jak 1: Simplified startup process, updated docs, prayed. * Jak 1: quick fix to settings. * Jak and Daxter: Genericize Items, Update Scout Fly logic, Add Victory Condition. (#3) * Jak 1: Update to 0.4.6. Decouple locations from items, support filler items. * Jak 1: Total revamp of Items. This is where everything broke. * Jak 1: Decouple 7 scout fly checks from normal checks, update regions/rules for orb counts/traders. * Jak 1: correct regions/rules, account for sequential oracle/miner locations. * Jak 1: make nicer strings. * Jak 1: Add logic for finished game. First full run complete! * Jak 1: update group names. * Jak and Daxter - Gondola, Pontoons, Rules, Regions, and Client Update * Jak 1: Overhaul of regions, rules, and special locations. Updated game info page. * Jak 1: Preparations for Alpha. Reintroducing automatic startup in client. Updating docs, readme, codeowners. * Alpha Updates (#15) * Jak 1: Consolidate client into apworld, create launcher icon, improve setup docs. * Jak 1: Update setup guide. * Jak 1: Load title screen, save states of in/outboxes. * Logging Update (#16) * Jak 1: Separate info and debug logs. * Jak 1: Update world info to refer to Archipelago Options menu. * Deathlink (#18) * Jak 1: Implement Deathlink. TODO: make it optional... * Jak 1: Issue a proper send-event for deathlink deaths. * Jak 1: Added cause of death to deathlink, fixed typo. * Jak 1: Make Deathlink toggleable. * Jak 1: Added player name to death text, added zoomer/flut/fishing text, simplified GOAL call for deathlink. * Jak 1: Fix death text in client logger. * Move Randomizer (#26) * Finally remove debug-segment text, update Python imports to relative paths. * HUGE refactor to Regions/Rules to support move rando, first hub area coded. * More refactoring. * Another refactor - may squash. * Fix some Rules, reuse some code by returning key regions from build_regions. * More regions added. A couple of TODOs. * Fixed trade logic, added LPC regions. * Added Spider, Snowy, Boggy. Fixed Misty's orbs. * Fix circular import, assert orb counts per level, fix a few naming errors. * Citadel added, missing locs and connections fixed. First move rando seed generated. * Add Move Rando to Options class. * Fixed rules for prerequisite moves. * Implement client functionality for move rando, add blurbs to game info page. * Fix wrong address for cache checks. * Fix byte alignment of offsets, refactor read_memory for better code reuse. * Refactor memory offsets and add some unit tests. * Make green eco the filler item, also define a maximum ID. Fix Boggy tether locations. * Move rando fixes (#29) * Fix virtual regions in Snowy. Fix some GMC problems. * Fix Deathlink on sunken slides. * Removed unncessary code causing build failure. * Orbsanity (#32) * My big dumb shortcut: a 2000 item array. * A better idea: bundle orbs as a numerical option and make array variable size. * Have Item/Region generation respect the chosen Orbsanity bundle size. Fix trade logic. * Separate Global/Local Orbsanity options. TODO - re-introduce orb factory for per-level option. * Per-level Orbsanity implemented w/ orb bundle factory. * Implement Orbsanity for client, fix some things up for regions. * Fix location name/id mappings. * Fix client orb collection on connection. * Fix minor Deathlink bug, add Update instructions. * Finishing Touches (#36) * Set up connector level thresholds, completion goal choices. * Send AP sender/recipient info to game via client. * Slight refactors. * Refactor option checking, add DataStorage handling of traded orbs. * Update instructions to change order of load/connect. * Add Option check to ensure enough Locations exist for Cell Count thresholds. Fix Final Door region. * Need some height move to get LPC sunken chamber cell. * Rename completion_condition to jak_completion_condition (#41) * The Afterparty (#42) * Fixes to Jak client, rules, options, and more. * Post-rebase fixes. * Remove orbsanity reset code, optimize game text in client. * More game text optimization. * Added more specific troubleshooting/setup instructions. * Add known issue about large releases taking time. (Dodge 6,666th commit.) * Remove "Bundle of", Add location name groups, set better default RootDirectory for new players. * Make orb trade amounts configurable, make orbsanity defaults more reasonable. * Add HUD info to doc. * Exempt's Code Review Updates (#43) * Round 1 of code review updates, the easy stuff. * Factor options checking away from region/rule creation. * Code review updates round 2, more complex stuff. * Code review updates round 3: the mental health annihilator * Code review updates part 4: redemption. * More code review feedback, simplifying code, etc. * Added a host.yaml option to override friendly limits, plus a couple of code review updates. * Added singleplayer limits, player names to enforcement rules. * Updated friendly limits to be more strict, optimized recalculate logic. * Today's the big day Jak: updates docs for mod support in OpenGOAL Launcher * Rearranged and clarified some instructions, ADDED PATH-SPACE FIX TO CLIENT. * Fix deathlink reset stalls on a busy client. (#47) * Jak & Daxter Client : queue game text messages to get items faster during release (#48) * queue game text messages to write them during the main_tick function and empty the message queue faster during release * wrap comment for code style character limit Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> * remove useless blank line Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> * whitespace code style Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> * Move JsonMessageData dataclass outside of ReplClient class for code clarity --------- Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> * Item Classifications (and REPL fixes) (#49) * Changes to item classifications * Bugfixes to power cell thresholds. * Fix bugs in item_type_helper. * Refactor 100 cell door to pass unit tests. * Quick fix to ReplClient. * Not so quick fix to ReplClient. * Display friendly limits in options tooltips. * Use math.ceil like a normal person. * Missed a space. * Fix non-accessibility due to bad orb calculation. * Updated documentation. * More Options, More Docs, More Tests (#51) * Reorder cell counts, require punch for Klaww. * Friendlier friendly friendlies. * Removed custom_worlds references from docs/setup guide, focused OpenGOAL Launcher language. * Increased breadth of unit tests. * Clean imports of unit tests. * Create OptionGroups. * Fix region rule bug with Punch for Klaww. * Include Punch For Klaww in slot data. * Update worlds/jakanddaxter/__init__.py Co-authored-by: Scipio Wright * Temper and Harden Text Client (#52) * Provide config path so OpenGOAL can use mod-specific saves and settings. * Add versioning to MemoryReader. Harden the client against user errors. * Updated comments. * Add Deathlink as a "statement of intent" to the YAML. Small updates to client. * Revert deathlink changes. * Update error message. * Added color markup to log messages printed in text client. * Separate loggers by agent, write markup to GUI and non-markup to disk simultaneously. * Refactor MemoryReader callbacks from main_tick to constructor. * Make callback names more... informative. * Give users explicit instructions in error messages. * Stellar Messaging (#54) * Use new ap-messenger functions for text writing. * Remove Powershell requirement, bump memory version to 3. * Error message update w/ instructions for game crash. * Create no console window for gk. * ISO Data Enhancement (#58) * Add iso-path as argument to GOAL compiler. # Conflicts: # worlds/jakanddaxter/Client.py * More resilient handling of iso_path. * Fixed scout fly ID mismatches. * Corrected iso_data subpath. * Update memory version to 4. * Docs update for iso_data. * Auto Detect OpenGOAL Install (#63) * Auto detect OpenGOAL install path. Also fix Deathlink on server connection. * Updated docs, add instructions to error messages. * Slight tweak to error text. * J&D : add per region location groups (#64) * add per region power cells location group * add per region scout flies location group * add per zone orb bundle groups (I'm not particularly happy about this code, but I figured doing it this way was the point of least friction/duplication) * guess who forgot 9 very important characters in each line of the last commit * Rearrange location group names, quick fix to client error handling. * Fix pycharm warnings. * Fix more pycharm warnings. * Light cleanup: fix icons, add bug report page, remove py 3.8 code. * Update worlds/jakanddaxter/Options.py Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/jakanddaxter/Options.py Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/jakanddaxter/Options.py Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/jakanddaxter/Options.py Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Code review updates on comments, tooltips, and type hints. * Update type hint for lists in regions. * Missed todo removal. * More type hint updates. * Small region updates for location accessibility, small updates to world guide and README.md. * Add GMC scout fly location group. * Improved sanitization of game text. * Traps 2 (#70) * Add trap items, relevant options, and citadel orb caches. * Update REPL to send traps to game. * Fix item counter. * Allow player to select which traps to use. * Fix host.yaml doc strings, ap-setup-options typing, bump memory version to 5. * Alter some trap names. * Update world doc. * Add health trap. * Added 3 more trap types. * Protect against empty trap list. * Reword traps paragraph in world doc. * Another update to trap paragraph. * Concisify trap option docstring. * Timestamp on game log file. * Update client to handle waiting on title screen. * Send slot name and seed to game. * Use self.random instead. * Update setup doc for new title screen. * Quick clarification of orb caches in world doc. * Sanitize slot info earlier. * Added to and improved unit tests. * Light cleanup on world. * Optimizations to movement rules, docs: known issues update. * Quick fixes for beta 0.5.0 release: template options and LPC logic. * Quick fix to spoiler counts. * Reorganize world guide for faster navigation. * Fix links. * Update HUD section. * Found a way to render apostrophes in item names. * March Refactors (#77) * Reorg imports, small fix to Rock Village movement. * Fix wait-on-title message never going to ready message. * Colorama init fix. * Swap trap list for a dictionary of trap weights. * The more laws, the less justice. * Quick readability update. * Have memory reader provide instructions for slow booting games. * Revert some things. * Update setup_en.md * Update HUD mode lingo for combined msgs. * Remade launcher icon, sized correctly. * I don't know why I can't be satisfied with things. * Apply suggestions from Scipio Co-authored-by: Scipio Wright * Properly use the settings API instead of Utils. * Newline on requirements.txt. * Add __init__ files for frozen builds. * Replace an ap_inform function with a CommonClient built-in. * Resize icon to match kivymd expected size. * First round of Treble code reviews. * Second round of Treble code reviews. * Third round of Treble code reviews. * Missed an unncessary if condition. * Missed unnecessary comments. * Fourth round of Treble code reviews. * Switch trap dictionary to OptionCounter. * Use existing slot name/seed from network protocol. * Violet code review updates. * Violet code review updates part 2. * Refactor to avoid floating imports (Violet part 3). * Found a few more valid characters for messaging. * Move tests out of init, add colon to game name (now that it's safe). * But don't include those chars for file text. * Implement Vi suggestion on webhost-capable friendly limits. * Revert "Implement Vi suggestion on webhost-capable friendly limits." This reverts commit 2d012b7f4a9a4c13985ecd7303bb1fc646831c86. * Rename all files for PEP8. * Refactor how maximums work on webhost. * Fix rogue UT. * Don't rush. * Fix client post-PEP8. --------- Co-authored-by: Justus Lind Co-authored-by: Romain BERNARD <30secondstodraw@gmail.com> Co-authored-by: Scipio Wright Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> --- README.md | 1 + docs/CODEOWNERS | 3 + worlds/jakanddaxter/__init__.py | 504 +++++++++++++++ worlds/jakanddaxter/agents/__init__.py | 0 worlds/jakanddaxter/agents/memory_reader.py | 489 ++++++++++++++ worlds/jakanddaxter/agents/repl_client.py | 527 +++++++++++++++ worlds/jakanddaxter/client.py | 600 ++++++++++++++++++ .../en_Jak and Daxter The Precursor Legacy.md | 258 ++++++++ worlds/jakanddaxter/docs/setup_en.md | 182 ++++++ worlds/jakanddaxter/game_id.py | 8 + worlds/jakanddaxter/icons/precursor_orb.ico | Bin 0 -> 6142 bytes worlds/jakanddaxter/icons/precursor_orb.png | Bin 0 -> 4698 bytes worlds/jakanddaxter/items.py | 156 +++++ worlds/jakanddaxter/levels.py | 76 +++ worlds/jakanddaxter/locations.py | 66 ++ worlds/jakanddaxter/locs/__init__.py | 0 worlds/jakanddaxter/locs/cell_locations.py | 194 ++++++ .../jakanddaxter/locs/orb_cache_locations.py | 52 ++ worlds/jakanddaxter/locs/orb_locations.py | 123 ++++ worlds/jakanddaxter/locs/scout_locations.py | 230 +++++++ worlds/jakanddaxter/locs/special_locations.py | 51 ++ worlds/jakanddaxter/options.py | 262 ++++++++ worlds/jakanddaxter/regions.py | 132 ++++ worlds/jakanddaxter/regs/__init__.py | 0 .../jakanddaxter/regs/boggy_swamp_regions.py | 174 +++++ .../jakanddaxter/regs/fire_canyon_regions.py | 38 ++ .../regs/forbidden_jungle_regions.py | 103 +++ .../jakanddaxter/regs/geyser_rock_regions.py | 48 ++ .../regs/gol_and_maias_citadel_regions.py | 137 ++++ worlds/jakanddaxter/regs/lava_tube_regions.py | 38 ++ .../regs/lost_precursor_city_regions.py | 155 +++++ .../jakanddaxter/regs/misty_island_regions.py | 131 ++++ .../regs/mountain_pass_regions.py | 67 ++ .../regs/precursor_basin_regions.py | 38 ++ worlds/jakanddaxter/regs/region_base.py | 91 +++ .../jakanddaxter/regs/rock_village_regions.py | 75 +++ .../regs/sandover_village_regions.py | 83 +++ .../regs/sentinel_beach_regions.py | 108 ++++ .../regs/snowy_mountain_regions.py | 203 ++++++ .../jakanddaxter/regs/spider_cave_regions.py | 127 ++++ .../regs/volcanic_crater_regions.py | 52 ++ worlds/jakanddaxter/requirements.txt | 1 + worlds/jakanddaxter/rules.py | 230 +++++++ worlds/jakanddaxter/test/__init__.py | 0 worlds/jakanddaxter/test/bases.py | 107 ++++ worlds/jakanddaxter/test/test_locations.py | 52 ++ worlds/jakanddaxter/test/test_moverando.py | 32 + worlds/jakanddaxter/test/test_orbsanity.py | 61 ++ .../test/test_orderedcellcounts.py | 29 + worlds/jakanddaxter/test/test_trades.py | 39 ++ worlds/jakanddaxter/test/test_traps.py | 80 +++ 51 files changed, 6213 insertions(+) create mode 100644 worlds/jakanddaxter/__init__.py create mode 100644 worlds/jakanddaxter/agents/__init__.py create mode 100644 worlds/jakanddaxter/agents/memory_reader.py create mode 100644 worlds/jakanddaxter/agents/repl_client.py create mode 100644 worlds/jakanddaxter/client.py create mode 100644 worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md create mode 100644 worlds/jakanddaxter/docs/setup_en.md create mode 100644 worlds/jakanddaxter/game_id.py create mode 100644 worlds/jakanddaxter/icons/precursor_orb.ico create mode 100644 worlds/jakanddaxter/icons/precursor_orb.png create mode 100644 worlds/jakanddaxter/items.py create mode 100644 worlds/jakanddaxter/levels.py create mode 100644 worlds/jakanddaxter/locations.py create mode 100644 worlds/jakanddaxter/locs/__init__.py create mode 100644 worlds/jakanddaxter/locs/cell_locations.py create mode 100644 worlds/jakanddaxter/locs/orb_cache_locations.py create mode 100644 worlds/jakanddaxter/locs/orb_locations.py create mode 100644 worlds/jakanddaxter/locs/scout_locations.py create mode 100644 worlds/jakanddaxter/locs/special_locations.py create mode 100644 worlds/jakanddaxter/options.py create mode 100644 worlds/jakanddaxter/regions.py create mode 100644 worlds/jakanddaxter/regs/__init__.py create mode 100644 worlds/jakanddaxter/regs/boggy_swamp_regions.py create mode 100644 worlds/jakanddaxter/regs/fire_canyon_regions.py create mode 100644 worlds/jakanddaxter/regs/forbidden_jungle_regions.py create mode 100644 worlds/jakanddaxter/regs/geyser_rock_regions.py create mode 100644 worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py create mode 100644 worlds/jakanddaxter/regs/lava_tube_regions.py create mode 100644 worlds/jakanddaxter/regs/lost_precursor_city_regions.py create mode 100644 worlds/jakanddaxter/regs/misty_island_regions.py create mode 100644 worlds/jakanddaxter/regs/mountain_pass_regions.py create mode 100644 worlds/jakanddaxter/regs/precursor_basin_regions.py create mode 100644 worlds/jakanddaxter/regs/region_base.py create mode 100644 worlds/jakanddaxter/regs/rock_village_regions.py create mode 100644 worlds/jakanddaxter/regs/sandover_village_regions.py create mode 100644 worlds/jakanddaxter/regs/sentinel_beach_regions.py create mode 100644 worlds/jakanddaxter/regs/snowy_mountain_regions.py create mode 100644 worlds/jakanddaxter/regs/spider_cave_regions.py create mode 100644 worlds/jakanddaxter/regs/volcanic_crater_regions.py create mode 100644 worlds/jakanddaxter/requirements.txt create mode 100644 worlds/jakanddaxter/rules.py create mode 100644 worlds/jakanddaxter/test/__init__.py create mode 100644 worlds/jakanddaxter/test/bases.py create mode 100644 worlds/jakanddaxter/test/test_locations.py create mode 100644 worlds/jakanddaxter/test/test_moverando.py create mode 100644 worlds/jakanddaxter/test/test_orbsanity.py create mode 100644 worlds/jakanddaxter/test/test_orderedcellcounts.py create mode 100644 worlds/jakanddaxter/test/test_trades.py create mode 100644 worlds/jakanddaxter/test/test_traps.py diff --git a/README.md b/README.md index c1e89bac7ce2..861a6eed1d27 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ Currently, the following games are supported: * Inscryption * Civilization VI * The Legend of Zelda: The Wind Waker +* Jak and Daxter: The Precursor Legacy For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/). Downloads can be found at [Releases](https://github.com/ArchipelagoMW/Archipelago/releases), including compiled diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index b89f668c0472..ca19d27da906 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -87,6 +87,9 @@ # Inscryption /worlds/inscryption/ @DrBibop @Glowbuzz +# Jak and Daxter: The Precursor Legacy +/worlds/jakanddaxter/ @massimilianodelliubaldini + # Kirby's Dream Land 3 /worlds/kdl3/ @Silvris diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py new file mode 100644 index 000000000000..d508e967ae9b --- /dev/null +++ b/worlds/jakanddaxter/__init__.py @@ -0,0 +1,504 @@ +# Python standard libraries +from collections import defaultdict +from math import ceil +from typing import Any, ClassVar, Callable, Union, cast + +# Archipelago imports +import settings +from worlds.AutoWorld import World, WebWorld +from worlds.LauncherComponents import components, Component, launch_subprocess, Type, icon_paths +from BaseClasses import (Item, + ItemClassification as ItemClass, + Tutorial, + CollectionState) +from Options import OptionGroup + +# Jak imports +from . import options +from .game_id import jak1_id, jak1_name, jak1_max +from .items import (JakAndDaxterItem, + OrbAssoc, + item_table, + cell_item_table, + scout_item_table, + special_item_table, + move_item_table, + orb_item_table, + trap_item_table) +from .levels import level_table, level_table_with_global +from .locations import (JakAndDaxterLocation, + location_table, + cell_location_table, + scout_location_table, + special_location_table, + cache_location_table, + orb_location_table) +from .regions import create_regions +from .rules import (enforce_multiplayer_limits, + enforce_singleplayer_limits, + verify_orb_trade_amounts, + set_orb_trade_rule) +from .locs import (cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches, + orb_locations as orbs) +from .regs.region_base import JakAndDaxterRegion + + +def launch_client(): + from . import client + launch_subprocess(client.launch, name="JakAndDaxterClient") + + +components.append(Component("Jak and Daxter Client", + func=launch_client, + component_type=Type.CLIENT, + icon="precursor_orb")) + +icon_paths["precursor_orb"] = f"ap:{__name__}/icons/precursor_orb.png" + + +class JakAndDaxterSettings(settings.Group): + class RootDirectory(settings.UserFolderPath): + """Path to folder containing the ArchipelaGOAL mod executables (gk.exe and goalc.exe). + Ensure this path contains forward slashes (/) only. This setting only applies if + Auto Detect Root Directory is set to false.""" + description = "ArchipelaGOAL Root Directory" + + class AutoDetectRootDirectory(settings.Bool): + """Attempt to find the OpenGOAL installation and the mod executables (gk.exe and goalc.exe) + automatically. If set to true, the ArchipelaGOAL Root Directory setting is ignored.""" + description = "ArchipelaGOAL Auto Detect Root Directory" + + class EnforceFriendlyOptions(settings.Bool): + """Enforce friendly player options in both single and multiplayer seeds. Disabling this allows for + more disruptive and challenging options, but may impact seed generation. Use at your own risk!""" + description = "ArchipelaGOAL Enforce Friendly Options" + + root_directory: RootDirectory = RootDirectory( + "%programfiles%/OpenGOAL-Launcher/features/jak1/mods/JakMods/archipelagoal") + # Don't ever change these type hints again. + auto_detect_root_directory: Union[AutoDetectRootDirectory, bool] = True + enforce_friendly_options: Union[EnforceFriendlyOptions, bool] = True + + +class JakAndDaxterWebWorld(WebWorld): + setup_en = Tutorial( + "Multiworld Setup Guide", + "A guide to setting up ArchipelaGOAL (Archipelago on OpenGOAL).", + "English", + "setup_en.md", + "setup/en", + ["markustulliuscicero"] + ) + + tutorials = [setup_en] + bug_report_page = "https://github.com/ArchipelaGOAL/Archipelago/issues" + + option_groups = [ + OptionGroup("Orbsanity", [ + options.EnableOrbsanity, + options.GlobalOrbsanityBundleSize, + options.PerLevelOrbsanityBundleSize, + ]), + OptionGroup("Power Cell Counts", [ + options.EnableOrderedCellCounts, + options.FireCanyonCellCount, + options.MountainPassCellCount, + options.LavaTubeCellCount, + ]), + OptionGroup("Orb Trade Counts", [ + options.CitizenOrbTradeAmount, + options.OracleOrbTradeAmount, + ]), + OptionGroup("Traps", [ + options.FillerPowerCellsReplacedWithTraps, + options.FillerOrbBundlesReplacedWithTraps, + options.TrapEffectDuration, + options.TrapWeights, + ]), + ] + + +class JakAndDaxterWorld(World): + """ + Jak and Daxter: The Precursor Legacy is a 2001 action platformer developed by Naughty Dog + for the PlayStation 2. The game follows the eponymous protagonists, a young boy named Jak + and his friend Daxter, who has been transformed into an ottsel. With the help of Samos + the Sage of Green Eco and his daughter Keira, the pair travel north in search of a cure for Daxter, + discovering artifacts created by an ancient race known as the Precursors along the way. When the + rogue sages Gol and Maia Acheron plan to flood the world with Dark Eco, they must stop their evil plan + and save the world. + """ + # ID, name, version + game = jak1_name + required_client_version = (0, 5, 0) + + # Options + settings: ClassVar[JakAndDaxterSettings] + options_dataclass = options.JakAndDaxterOptions + options: options.JakAndDaxterOptions + + # Web world + web = JakAndDaxterWebWorld() + + # Stored as {ID: Name} pairs, these must now be swapped to {Name: ID} pairs. + # Remember, the game ID and various offsets for each item type have already been calculated. + item_name_to_id = {name: k for k, name in item_table.items()} + location_name_to_id = {name: k for k, name in location_table.items()} + item_name_groups = { + "Power Cells": set(cell_item_table.values()), + "Scout Flies": set(scout_item_table.values()), + "Specials": set(special_item_table.values()), + "Moves": set(move_item_table.values()), + "Precursor Orbs": set(orb_item_table.values()), + "Traps": set(trap_item_table.values()), + } + location_name_groups = { + "Power Cells": set(cell_location_table.values()), + "Power Cells - GR": set(cells.locGR_cellTable.values()), + "Power Cells - SV": set(cells.locSV_cellTable.values()), + "Power Cells - FJ": set(cells.locFJ_cellTable.values()), + "Power Cells - SB": set(cells.locSB_cellTable.values()), + "Power Cells - MI": set(cells.locMI_cellTable.values()), + "Power Cells - FC": set(cells.locFC_cellTable.values()), + "Power Cells - RV": set(cells.locRV_cellTable.values()), + "Power Cells - PB": set(cells.locPB_cellTable.values()), + "Power Cells - LPC": set(cells.locLPC_cellTable.values()), + "Power Cells - BS": set(cells.locBS_cellTable.values()), + "Power Cells - MP": set(cells.locMP_cellTable.values()), + "Power Cells - VC": set(cells.locVC_cellTable.values()), + "Power Cells - SC": set(cells.locSC_cellTable.values()), + "Power Cells - SM": set(cells.locSM_cellTable.values()), + "Power Cells - LT": set(cells.locLT_cellTable.values()), + "Power Cells - GMC": set(cells.locGMC_cellTable.values()), + "Scout Flies": set(scout_location_table.values()), + "Scout Flies - GR": set(scouts.locGR_scoutTable.values()), + "Scout Flies - SV": set(scouts.locSV_scoutTable.values()), + "Scout Flies - FJ": set(scouts.locFJ_scoutTable.values()), + "Scout Flies - SB": set(scouts.locSB_scoutTable.values()), + "Scout Flies - MI": set(scouts.locMI_scoutTable.values()), + "Scout Flies - FC": set(scouts.locFC_scoutTable.values()), + "Scout Flies - RV": set(scouts.locRV_scoutTable.values()), + "Scout Flies - PB": set(scouts.locPB_scoutTable.values()), + "Scout Flies - LPC": set(scouts.locLPC_scoutTable.values()), + "Scout Flies - BS": set(scouts.locBS_scoutTable.values()), + "Scout Flies - MP": set(scouts.locMP_scoutTable.values()), + "Scout Flies - VC": set(scouts.locVC_scoutTable.values()), + "Scout Flies - SC": set(scouts.locSC_scoutTable.values()), + "Scout Flies - SM": set(scouts.locSM_scoutTable.values()), + "Scout Flies - LT": set(scouts.locLT_scoutTable.values()), + "Scout Flies - GMC": set(scouts.locGMC_scoutTable.values()), + "Specials": set(special_location_table.values()), + "Orb Caches": set(cache_location_table.values()), + "Precursor Orbs": set(orb_location_table.values()), + "Precursor Orbs - GR": set(orbs.locGR_orbBundleTable.values()), + "Precursor Orbs - SV": set(orbs.locSV_orbBundleTable.values()), + "Precursor Orbs - FJ": set(orbs.locFJ_orbBundleTable.values()), + "Precursor Orbs - SB": set(orbs.locSB_orbBundleTable.values()), + "Precursor Orbs - MI": set(orbs.locMI_orbBundleTable.values()), + "Precursor Orbs - FC": set(orbs.locFC_orbBundleTable.values()), + "Precursor Orbs - RV": set(orbs.locRV_orbBundleTable.values()), + "Precursor Orbs - PB": set(orbs.locPB_orbBundleTable.values()), + "Precursor Orbs - LPC": set(orbs.locLPC_orbBundleTable.values()), + "Precursor Orbs - BS": set(orbs.locBS_orbBundleTable.values()), + "Precursor Orbs - MP": set(orbs.locMP_orbBundleTable.values()), + "Precursor Orbs - VC": set(orbs.locVC_orbBundleTable.values()), + "Precursor Orbs - SC": set(orbs.locSC_orbBundleTable.values()), + "Precursor Orbs - SM": set(orbs.locSM_orbBundleTable.values()), + "Precursor Orbs - LT": set(orbs.locLT_orbBundleTable.values()), + "Precursor Orbs - GMC": set(orbs.locGMC_orbBundleTable.values()), + "Trades": {location_table[cells.to_ap_id(k)] for k in + {11, 12, 31, 32, 33, 96, 97, 98, 99, 13, 14, 34, 35, 100, 101}}, + "'Free 7 Scout Flies' Power Cells": set(cells.loc7SF_cellTable.values()), + } + + # These functions and variables are Options-driven, keep them as instance variables here so that we don't clog up + # the seed generation routines with options checking. So we set these once, and then just use them as needed. + can_trade: Callable[[CollectionState, int, int | None], bool] + total_orbs: int = 2000 + orb_bundle_item_name: str = "" + orb_bundle_size: int = 0 + total_trade_orbs: int = 0 + total_prog_orb_bundles: int = 0 + total_trap_orb_bundles: int = 0 + total_filler_orb_bundles: int = 0 + total_power_cells: int = 101 + total_prog_cells: int = 0 + total_trap_cells: int = 0 + total_filler_cells: int = 0 + power_cell_thresholds: list[int] + power_cell_thresholds_minus_one: list[int] + trap_weights: tuple[list[str], list[int]] + + # Store these dictionaries for speed improvements. + level_to_regions: dict[str, list[JakAndDaxterRegion]] # Contains all levels and regions. + level_to_orb_regions: dict[str, list[JakAndDaxterRegion]] # Contains only regions which contain orbs. + + # Handles various options validation, rules enforcement, and caching of important information. + def generate_early(self) -> None: + + # Initialize the level-region dictionary. + self.level_to_regions = defaultdict(list) + self.level_to_orb_regions = defaultdict(list) + + # Cache the power cell threshold values for quicker reference. + self.power_cell_thresholds = [ + self.options.fire_canyon_cell_count.value, + self.options.mountain_pass_cell_count.value, + self.options.lava_tube_cell_count.value, + 100, # The 100 Power Cell Door. + ] + + # Order the thresholds ascending and set the options values to the new order. + if self.options.enable_ordered_cell_counts: + self.power_cell_thresholds.sort() + self.options.fire_canyon_cell_count.value = self.power_cell_thresholds[0] + self.options.mountain_pass_cell_count.value = self.power_cell_thresholds[1] + self.options.lava_tube_cell_count.value = self.power_cell_thresholds[2] + + # Store this for remove function. + self.power_cell_thresholds_minus_one = [x - 1 for x in self.power_cell_thresholds] + + # For the fairness of other players in a multiworld game, enforce some friendly limitations on our options, + # so we don't cause chaos during seed generation. These friendly limits should **guarantee** a successful gen. + # We would have done this earlier, but we needed to sort the power cell thresholds first. + enforce_friendly_options = self.settings.enforce_friendly_options + if enforce_friendly_options: + if self.multiworld.players > 1: + enforce_multiplayer_limits(self) + else: + enforce_singleplayer_limits(self) + + # Calculate the number of power cells needed for full region access, the number being replaced by traps, + # and the number of remaining filler. + if self.options.jak_completion_condition == options.CompletionCondition.option_open_100_cell_door: + self.total_prog_cells = 100 + else: + self.total_prog_cells = max(self.power_cell_thresholds[:3]) + non_prog_cells = self.total_power_cells - self.total_prog_cells + self.total_trap_cells = min(self.options.filler_power_cells_replaced_with_traps.value, non_prog_cells) + self.options.filler_power_cells_replaced_with_traps.value = self.total_trap_cells + self.total_filler_cells = non_prog_cells - self.total_trap_cells + + # Verify that we didn't overload the trade amounts with more orbs than exist in the world. + # This is easy to do by accident even in a singleplayer world. + self.total_trade_orbs = (9 * self.options.citizen_orb_trade_amount) + (6 * self.options.oracle_orb_trade_amount) + verify_orb_trade_amounts(self) + + # Cache the orb bundle size and item name for quicker reference. + if self.options.enable_orbsanity == options.EnableOrbsanity.option_per_level: + self.orb_bundle_size = self.options.level_orbsanity_bundle_size.value + self.orb_bundle_item_name = orb_item_table[self.orb_bundle_size] + elif self.options.enable_orbsanity == options.EnableOrbsanity.option_global: + self.orb_bundle_size = self.options.global_orbsanity_bundle_size.value + self.orb_bundle_item_name = orb_item_table[self.orb_bundle_size] + else: + self.orb_bundle_size = 0 + self.orb_bundle_item_name = "" + + # Calculate the number of orb bundles needed for trades, the number being replaced by traps, + # and the number of remaining filler. If Orbsanity is off, default values of 0 will prevail for all. + if self.orb_bundle_size > 0: + total_orb_bundles = self.total_orbs // self.orb_bundle_size + self.total_prog_orb_bundles = ceil(self.total_trade_orbs / self.orb_bundle_size) + non_prog_orb_bundles = total_orb_bundles - self.total_prog_orb_bundles + self.total_trap_orb_bundles = min(self.options.filler_orb_bundles_replaced_with_traps.value, + non_prog_orb_bundles) + self.options.filler_orb_bundles_replaced_with_traps.value = self.total_trap_orb_bundles + self.total_filler_orb_bundles = non_prog_orb_bundles - self.total_trap_orb_bundles + else: + self.options.filler_orb_bundles_replaced_with_traps.value = 0 + + self.trap_weights = self.options.trap_weights.weights_pair + + # Options drive which trade rules to use, so they need to be setup before we create_regions. + set_orb_trade_rule(self) + + # This will also set Locations, Location access rules, Region access rules, etc. + def create_regions(self) -> None: + create_regions(self) + + # Don't forget to add the created regions to the multiworld! + for level in self.level_to_regions: + self.multiworld.regions.extend(self.level_to_regions[level]) + + # As a lazy measure, let's also fill level_to_orb_regions here. + # This should help speed up orbsanity calculations. + self.level_to_orb_regions[level] = [reg for reg in self.level_to_regions[level] if reg.orb_count > 0] + + # from Utils import visualize_regions + # visualize_regions(self.multiworld.get_region("Menu", self.player), "jakanddaxter.puml") + + def item_data_helper(self, item: int) -> list[tuple[int, ItemClass, OrbAssoc, int]]: + """ + Helper function to reuse some nasty if/else trees. This outputs a list of pairs of item count and class. + For instance, not all 101 power cells need to be marked progression if you only need 72 to beat the game. + So we will have 72 Progression Power Cells, and 29 Filler Power Cells. + """ + data: list[tuple[int, ItemClass, OrbAssoc, int]] = [] + + # Make N Power Cells. We only want AP's Progression Fill routine to handle the amount of cells we need + # to reach the furthest possible region. Even for early completion goals, all areas in the game must be + # reachable or generation will fail. TODO - Option-driven region creation would be an enormous refactor. + if item in range(jak1_id, jak1_id + scouts.fly_offset): + data.append((self.total_prog_cells, ItemClass.progression_skip_balancing, OrbAssoc.IS_POWER_CELL, 0)) + data.append((self.total_filler_cells, ItemClass.filler, OrbAssoc.IS_POWER_CELL, 0)) + + # Make 7 Scout Flies per level. + elif item in range(jak1_id + scouts.fly_offset, jak1_id + specials.special_offset): + data.append((7, ItemClass.progression_skip_balancing, OrbAssoc.NEVER_UNLOCKS_ORBS, 0)) + + # Make only 1 of each Special Item. + elif item in range(jak1_id + specials.special_offset, jak1_id + caches.orb_cache_offset): + data.append((1, ItemClass.progression | ItemClass.useful, OrbAssoc.ALWAYS_UNLOCKS_ORBS, 0)) + + # Make only 1 of each Move Item. + elif item in range(jak1_id + caches.orb_cache_offset, jak1_id + orbs.orb_offset): + data.append((1, ItemClass.progression | ItemClass.useful, OrbAssoc.ALWAYS_UNLOCKS_ORBS, 0)) + + # Make N Precursor Orb bundles. Like Power Cells, only a fraction of these will be marked as Progression + # with the remainder as Filler, but they are still entirely fungible. See collect function for why these + # are OrbAssoc.NEVER_UNLOCKS_ORBS. + elif item in range(jak1_id + orbs.orb_offset, jak1_max - max(trap_item_table)): + data.append((self.total_prog_orb_bundles, ItemClass.progression_skip_balancing, + OrbAssoc.NEVER_UNLOCKS_ORBS, self.orb_bundle_size)) + data.append((self.total_filler_orb_bundles, ItemClass.filler, + OrbAssoc.NEVER_UNLOCKS_ORBS, self.orb_bundle_size)) + + # We will manually create trap items as needed. + elif item in range(jak1_max - max(trap_item_table), jak1_max): + data.append((0, ItemClass.trap, OrbAssoc.NEVER_UNLOCKS_ORBS, 0)) + + # We will manually create filler items as needed. + elif item == jak1_max: + data.append((0, ItemClass.filler, OrbAssoc.NEVER_UNLOCKS_ORBS, 0)) + + # If we try to make items with ID's higher than we've defined, something has gone wrong. + else: + raise KeyError(f"Tried to fill item pool with unknown ID {item}.") + + return data + + def create_items(self) -> None: + items_made: int = 0 + for item_name in self.item_name_to_id: + item_id = self.item_name_to_id[item_name] + + # Handle Move Randomizer option. + # If it is OFF, put all moves in your starting inventory instead of the item pool, + # then fill the item pool with a corresponding amount of filler items. + if item_name in self.item_name_groups["Moves"] and not self.options.enable_move_randomizer: + self.multiworld.push_precollected(self.create_item(item_name)) + self.multiworld.itempool.append(self.create_filler()) + items_made += 1 + continue + + # Handle Orbsanity option. + # If it is OFF, don't add any orb bundles to the item pool, period. + # If it is ON, don't add any orb bundles that don't match the chosen option. + if (item_name in self.item_name_groups["Precursor Orbs"] + and (self.options.enable_orbsanity == options.EnableOrbsanity.option_off + or item_name != self.orb_bundle_item_name)): + continue + + # Skip Traps for now. + if item_name in self.item_name_groups["Traps"]: + continue + + # In almost every other scenario, do this. Not all items with the same name will have the same item class. + data = self.item_data_helper(item_id) + for (count, classification, orb_assoc, orb_amount) in data: + self.multiworld.itempool += [JakAndDaxterItem(item_name, classification, item_id, + self.player, orb_assoc, orb_amount) + for _ in range(count)] + items_made += count + + # Handle Traps (for real). + # Manually fill the item pool with a weighted assortment of trap items, equal to the sum of + # total_trap_cells + total_trap_orb_bundles. Only do this if one or more traps have weights > 0. + names, weights = self.trap_weights + if sum(weights): + total_traps = self.total_trap_cells + self.total_trap_orb_bundles + trap_list = self.random.choices(names, weights=weights, k=total_traps) + self.multiworld.itempool += [self.create_item(trap_name) for trap_name in trap_list] + items_made += total_traps + + # Handle Unfilled Locations. + # Add an amount of filler items equal to the number of locations yet to be filled. + # This is the final set of items we will add to the pool. + all_regions = self.multiworld.get_regions(self.player) + total_locations = sum(reg.location_count for reg in cast(list[JakAndDaxterRegion], all_regions)) + total_filler = total_locations - items_made + self.multiworld.itempool += [self.create_filler() for _ in range(total_filler)] + + def create_item(self, name: str) -> Item: + item_id = self.item_name_to_id[name] + + # Use first tuple (will likely be the most important). + _, classification, orb_assoc, orb_amount = self.item_data_helper(item_id)[0] + return JakAndDaxterItem(name, classification, item_id, self.player, orb_assoc, orb_amount) + + def get_filler_item_name(self) -> str: + return "Green Eco Pill" + + def collect(self, state: CollectionState, item: JakAndDaxterItem) -> bool: + change = super().collect(state, item) + if change: + # Orbsanity as an option is no-factor to these conditions. Matching the item name implies Orbsanity is ON, + # so we don't need to check the option. When Orbsanity is OFF, there won't even be any orb bundle items + # to collect. + + # Orb items do not intrinsically unlock anything that contains more Reachable Orbs, so they do not need to + # set the cache to stale. They just change how many orbs you have to trade with. + if item.orb_amount > 0: + state.prog_items[self.player]["Tradeable Orbs"] += self.orb_bundle_size # Give a bundle of Trade Orbs + + # Power Cells DO unlock new regions that contain more Reachable Orbs - the connector levels and new + # hub levels - BUT they only do that when you have a number of them equal to one of the threshold values. + elif (item.orb_assoc == OrbAssoc.ALWAYS_UNLOCKS_ORBS + or (item.orb_assoc == OrbAssoc.IS_POWER_CELL + and state.count("Power Cell", self.player) in self.power_cell_thresholds)): + state.prog_items[self.player]["Reachable Orbs Fresh"] = False + + # However, every other item that does not have an appropriate OrbAssoc that changes the CollectionState + # should NOT set the cache to stale, because they did not make it possible to reach more orb locations + # (level unlocks, region unlocks, etc.). + return change + + def remove(self, state: CollectionState, item: JakAndDaxterItem) -> bool: + change = super().remove(state, item) + if change: + + # Do the same thing we did in collect, except subtract trade orbs instead of add. + if item.orb_amount > 0: + state.prog_items[self.player]["Tradeable Orbs"] -= self.orb_bundle_size # Take a bundle of Trade Orbs + + # Ditto Power Cells, but check thresholds - 1, because we potentially crossed the threshold in the opposite + # direction. E.g. we've removed the 20th power cell, our count is now 19, so we should stale the cache. + elif (item.orb_assoc == OrbAssoc.ALWAYS_UNLOCKS_ORBS + or (item.orb_assoc == OrbAssoc.IS_POWER_CELL + and state.count("Power Cell", self.player) in self.power_cell_thresholds_minus_one)): + state.prog_items[self.player]["Reachable Orbs Fresh"] = False + + return change + + def fill_slot_data(self) -> dict[str, Any]: + options_dict = self.options.as_dict("enable_move_randomizer", + "enable_orbsanity", + "global_orbsanity_bundle_size", + "level_orbsanity_bundle_size", + "fire_canyon_cell_count", + "mountain_pass_cell_count", + "lava_tube_cell_count", + "citizen_orb_trade_amount", + "oracle_orb_trade_amount", + "filler_power_cells_replaced_with_traps", + "filler_orb_bundles_replaced_with_traps", + "trap_effect_duration", + "trap_weights", + "jak_completion_condition", + "require_punch_for_klaww", + ) + return options_dict diff --git a/worlds/jakanddaxter/agents/__init__.py b/worlds/jakanddaxter/agents/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/agents/memory_reader.py b/worlds/jakanddaxter/agents/memory_reader.py new file mode 100644 index 000000000000..01035c4a2e1d --- /dev/null +++ b/worlds/jakanddaxter/agents/memory_reader.py @@ -0,0 +1,489 @@ +import logging +import random +import struct +from typing import ByteString, Callable +import json +import pymem +from pymem import pattern +from pymem.exception import ProcessNotFound, ProcessError, MemoryReadError, WinAPIError +from dataclasses import dataclass + +from ..locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as flies, + special_locations as specials, + orb_cache_locations as caches) + + +logger = logging.getLogger("MemoryReader") + + +# Some helpful constants. +sizeof_uint64 = 8 +sizeof_uint32 = 4 +sizeof_uint8 = 1 +sizeof_float = 4 + + +# ***************************************************************************** +# **** This number must match (-> *ap-info-jak1* version) in ap-struct.gc! **** +# ***************************************************************************** +expected_memory_version = 5 + + +# IMPORTANT: OpenGOAL memory structures are particular about the alignment, in memory, of member elements according to +# their size in bits. The address for an N-bit field must be divisible by N. Use this class to define the memory offsets +# of important values in the struct. It will also do the byte alignment properly for you. +# See https://opengoal.dev/docs/reference/type_system/#arrays +@dataclass +class OffsetFactory: + current_offset: int = 0 + + def define(self, size: int, length: int = 1) -> int: + + # If necessary, align current_offset to the current size first. + bytes_to_alignment = self.current_offset % size + if bytes_to_alignment != 0: + self.current_offset += (size - bytes_to_alignment) + + # Increment current_offset so the next definition can be made. + offset_to_use = self.current_offset + self.current_offset += (size * length) + return offset_to_use + + +# Start defining important memory address offsets here. They must be in the same order, have the same sizes, and have +# the same lengths, as defined in `ap-info-jak1`. +offsets = OffsetFactory() + +# Cell, Buzzer, and Special information. +next_cell_index_offset = offsets.define(sizeof_uint64) +next_buzzer_index_offset = offsets.define(sizeof_uint64) +next_special_index_offset = offsets.define(sizeof_uint64) + +cells_checked_offset = offsets.define(sizeof_uint32, 101) +buzzers_checked_offset = offsets.define(sizeof_uint32, 112) +specials_checked_offset = offsets.define(sizeof_uint32, 32) + +buzzers_received_offset = offsets.define(sizeof_uint8, 16) +specials_received_offset = offsets.define(sizeof_uint8, 32) + +# Deathlink information. +death_count_offset = offsets.define(sizeof_uint32) +death_cause_offset = offsets.define(sizeof_uint8) +deathlink_enabled_offset = offsets.define(sizeof_uint8) + +# Move Rando information. +next_orb_cache_index_offset = offsets.define(sizeof_uint64) +orb_caches_checked_offset = offsets.define(sizeof_uint32, 16) +moves_received_offset = offsets.define(sizeof_uint8, 16) +moverando_enabled_offset = offsets.define(sizeof_uint8) + +# Orbsanity information. +orbsanity_option_offset = offsets.define(sizeof_uint8) +orbsanity_bundle_offset = offsets.define(sizeof_uint32) +collected_bundle_offset = offsets.define(sizeof_uint32, 17) + +# Progression and Completion information. +fire_canyon_unlock_offset = offsets.define(sizeof_float) +mountain_pass_unlock_offset = offsets.define(sizeof_float) +lava_tube_unlock_offset = offsets.define(sizeof_float) +citizen_orb_amount_offset = offsets.define(sizeof_float) +oracle_orb_amount_offset = offsets.define(sizeof_float) +completion_goal_offset = offsets.define(sizeof_uint8) +completed_offset = offsets.define(sizeof_uint8) + +# Text to display in the HUD (32 char max per string). +their_item_name_offset = offsets.define(sizeof_uint8, 32) +their_item_owner_offset = offsets.define(sizeof_uint8, 32) +my_item_name_offset = offsets.define(sizeof_uint8, 32) +my_item_finder_offset = offsets.define(sizeof_uint8, 32) + +# Version of the memory struct, to cut down on mod/apworld version mismatches. +memory_version_offset = offsets.define(sizeof_uint32) + +# Connection status to AP server (not the game!) +server_connection_offset = offsets.define(sizeof_uint8) +slot_name_offset = offsets.define(sizeof_uint8, 16) +slot_seed_offset = offsets.define(sizeof_uint8, 8) + +# Trap information. +trap_duration_offset = offsets.define(sizeof_float) + +# The End. +end_marker_offset = offsets.define(sizeof_uint8, 4) + + +# Can't believe this is easier to do in GOAL than Python but that's how it be sometimes. +def as_float(value: int) -> int: + return int(struct.unpack('f', value.to_bytes(sizeof_float, "little"))[0]) + + +# "Jak" to be replaced by player name in the Client. +def autopsy(cause: int) -> str: + if cause in [1, 2, 3, 4]: + return random.choice(["Jak said goodnight.", + "Jak stepped into the light.", + "Jak gave Daxter his insect collection.", + "Jak did not follow Step 1."]) + if cause == 5: + return "Jak fell into an endless pit." + if cause == 6: + return "Jak drowned in the spicy water." + if cause == 7: + return "Jak tried to tackle a Lurker Shark." + if cause == 8: + return "Jak hit 500 degrees." + if cause == 9: + return "Jak took a bath in a pool of dark eco." + if cause == 10: + return "Jak got bombarded with flaming 30-ton boulders." + if cause == 11: + return "Jak hit 800 degrees." + if cause == 12: + return "Jak ceased to be." + if cause == 13: + return "Jak got eaten by the dark eco plant." + if cause == 14: + return "Jak burned up." + if cause == 15: + return "Jak hit the ground hard." + if cause == 16: + return "Jak crashed the zoomer." + if cause == 17: + return "Jak got Flut Flut hurt." + if cause == 18: + return "Jak poisoned the whole darn catch." + if cause == 19: + return "Jak collided with too many obstacles." + return "Jak died." + + +class JakAndDaxterMemoryReader: + marker: ByteString + goal_address: int | None = None + connected: bool = False + initiated_connect: bool = False + + # The memory reader just needs the game running. + gk_process: pymem.process = None + + location_outbox: list[int] = [] + outbox_index: int = 0 + finished_game: bool = False + + # Deathlink handling + deathlink_enabled: bool = False + send_deathlink: bool = False + cause_of_death: str = "" + death_count: int = 0 + + # Orbsanity handling + orbsanity_enabled: bool = False + orbs_paid: int = 0 + + # Game-related callbacks (inform the AP server of changes to game state) + inform_checked_location: Callable + inform_finished_game: Callable + inform_died: Callable + inform_toggled_deathlink: Callable + inform_traded_orbs: Callable + + # Logging callbacks + # These will write to the provided logger, as well as the Client GUI with color markup. + log_error: Callable # Red + log_warn: Callable # Orange + log_success: Callable # Green + log_info: Callable # White (default) + + def __init__(self, + location_check_callback: Callable, + finish_game_callback: Callable, + send_deathlink_callback: Callable, + toggle_deathlink_callback: Callable, + orb_trade_callback: Callable, + log_error_callback: Callable, + log_warn_callback: Callable, + log_success_callback: Callable, + log_info_callback: Callable, + marker: ByteString = b'UnLiStEdStRaTs_JaK1\x00'): + self.marker = marker + + self.inform_checked_location = location_check_callback + self.inform_finished_game = finish_game_callback + self.inform_died = send_deathlink_callback + self.inform_toggled_deathlink = toggle_deathlink_callback + self.inform_traded_orbs = orb_trade_callback + + self.log_error = log_error_callback + self.log_warn = log_warn_callback + self.log_success = log_success_callback + self.log_info = log_info_callback + + async def main_tick(self): + if self.initiated_connect: + await self.connect() + self.initiated_connect = False + + if self.connected: + try: + self.gk_process.read_bool(self.gk_process.base_address) # Ping to see if it's alive. + except (ProcessError, MemoryReadError, WinAPIError): + msg = (f"Error reading game memory! (Did the game crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + else: + return + + if self.connected: + + # Save some state variables temporarily. + old_deathlink_enabled = self.deathlink_enabled + + # Read the memory address to check the state of the game. + self.read_memory() + + # Checked Locations in game. Handle the entire outbox every tick until we're up to speed. + if len(self.location_outbox) > self.outbox_index: + self.inform_checked_location(self.location_outbox) + self.save_data() + self.outbox_index += 1 + + if self.finished_game: + self.inform_finished_game() + + if old_deathlink_enabled != self.deathlink_enabled: + self.inform_toggled_deathlink() + logger.debug("Toggled DeathLink " + ("ON" if self.deathlink_enabled else "OFF")) + + if self.send_deathlink: + self.inform_died() + + if self.orbs_paid > 0: + self.inform_traded_orbs(self.orbs_paid) + self.orbs_paid = 0 + + async def connect(self): + try: + self.gk_process = pymem.Pymem("gk.exe") # The GOAL Kernel + logger.debug("Found the gk process: " + str(self.gk_process.process_id)) + except ProcessNotFound: + self.log_error(logger, "Could not find the game process.") + self.connected = False + return + + # If we don't find the marker in the first loaded module, we've failed. + modules = list(self.gk_process.list_modules()) + marker_address = pattern.pattern_scan_module(self.gk_process.process_handle, modules[0], self.marker) + if marker_address: + # At this address is another address that contains the struct we're looking for: the game's state. + # From here we need to add the length in bytes for the marker and 4 bytes of padding, + # and the struct address is 8 bytes long (it's an uint64). + goal_pointer = marker_address + len(self.marker) + 4 + self.goal_address = int.from_bytes(self.gk_process.read_bytes(goal_pointer, sizeof_uint64), + byteorder="little", + signed=False) + logger.debug("Found the archipelago memory address: " + str(self.goal_address)) + await self.verify_memory_version() + else: + self.log_error(logger, "Could not find the Archipelago marker address!") + self.connected = False + + async def verify_memory_version(self): + if self.goal_address is None: + self.log_error(logger, "Could not find the Archipelago memory address!") + self.connected = False + return + + memory_version: int | None = None + try: + memory_version = self.read_goal_address(memory_version_offset, sizeof_uint32) + if memory_version == expected_memory_version: + self.log_success(logger, "The Memory Reader is ready!") + self.connected = True + else: + raise MemoryReadError(memory_version_offset, sizeof_uint32) + except (ProcessError, MemoryReadError, WinAPIError): + if memory_version is None: + msg = (f"Could not find a version number in the OpenGOAL memory structure!\n" + f" Expected Version: {str(expected_memory_version)}\n" + f" Found Version: {str(memory_version)}\n" + f"Please follow these steps:\n" + f" If the game is running, try entering '/memr connect' in the client.\n" + f" You should see 'The Memory Reader is ready!'\n" + f" If that did not work, or the game is not running, run the OpenGOAL Launcher.\n" + f" Click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Try entering '/memr connect' in the client again.") + else: + msg = (f"The OpenGOAL memory structure is incompatible with the current Archipelago client!\n" + f" Expected Version: {str(expected_memory_version)}\n" + f" Found Version: {str(memory_version)}\n" + f"Please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Click Update (if one is available).\n" + f" Click Advanced > Compile. When this is done, click Continue.\n" + f" Click Versions and verify the latest version is marked 'Active'.\n" + f" Close all launchers, games, clients, and console windows, then restart Archipelago.") + self.log_error(logger, msg) + self.connected = False + + async def print_status(self): + proc_id = str(self.gk_process.process_id) if self.gk_process else "None" + last_loc = str(self.location_outbox[self.outbox_index - 1] if self.outbox_index else "None") + msg = (f"Memory Reader Status:\n" + f" Game process ID: {proc_id}\n" + f" Game state memory address: {str(self.goal_address)}\n" + f" Last location checked: {last_loc}") + await self.verify_memory_version() + self.log_info(logger, msg) + + def read_memory(self) -> list[int]: + try: + # Need to grab these first and convert to floats, see below. + citizen_orb_amount = self.read_goal_address(citizen_orb_amount_offset, sizeof_float) + oracle_orb_amount = self.read_goal_address(oracle_orb_amount_offset, sizeof_float) + + next_cell_index = self.read_goal_address(next_cell_index_offset, sizeof_uint64) + for k in range(0, next_cell_index): + next_cell = self.read_goal_address(cells_checked_offset + (k * sizeof_uint32), sizeof_uint32) + cell_ap_id = cells.to_ap_id(next_cell) + if cell_ap_id not in self.location_outbox: + self.location_outbox.append(cell_ap_id) + logger.debug("Checked power cell: " + str(next_cell)) + + # If orbsanity is ON and next_cell is one of the traders or oracles, then run a callback + # to add their amount to the DataStorage value holding our current orb trade total. + if next_cell in {11, 12, 31, 32, 33, 96, 97, 98, 99}: + citizen_orb_amount = as_float(citizen_orb_amount) + self.orbs_paid += citizen_orb_amount + logger.debug(f"Traded {citizen_orb_amount} orbs!") + + if next_cell in {13, 14, 34, 35, 100, 101}: + oracle_orb_amount = as_float(oracle_orb_amount) + self.orbs_paid += oracle_orb_amount + logger.debug(f"Traded {oracle_orb_amount} orbs!") + + next_buzzer_index = self.read_goal_address(next_buzzer_index_offset, sizeof_uint64) + for k in range(0, next_buzzer_index): + next_buzzer = self.read_goal_address(buzzers_checked_offset + (k * sizeof_uint32), sizeof_uint32) + buzzer_ap_id = flies.to_ap_id(next_buzzer) + if buzzer_ap_id not in self.location_outbox: + self.location_outbox.append(buzzer_ap_id) + logger.debug("Checked scout fly: " + str(next_buzzer)) + + next_special_index = self.read_goal_address(next_special_index_offset, sizeof_uint64) + for k in range(0, next_special_index): + next_special = self.read_goal_address(specials_checked_offset + (k * sizeof_uint32), sizeof_uint32) + special_ap_id = specials.to_ap_id(next_special) + if special_ap_id not in self.location_outbox: + self.location_outbox.append(special_ap_id) + logger.debug("Checked special: " + str(next_special)) + + death_count = self.read_goal_address(death_count_offset, sizeof_uint32) + death_cause = self.read_goal_address(death_cause_offset, sizeof_uint8) + if death_count > self.death_count: + self.cause_of_death = autopsy(death_cause) # The way he names his variables? Wack! + self.send_deathlink = True + self.death_count += 1 + + # Listen for any changes to this setting. + deathlink_flag = self.read_goal_address(deathlink_enabled_offset, sizeof_uint8) + self.deathlink_enabled = bool(deathlink_flag) + + next_cache_index = self.read_goal_address(next_orb_cache_index_offset, sizeof_uint64) + for k in range(0, next_cache_index): + next_cache = self.read_goal_address(orb_caches_checked_offset + (k * sizeof_uint32), sizeof_uint32) + cache_ap_id = caches.to_ap_id(next_cache) + if cache_ap_id not in self.location_outbox: + self.location_outbox.append(cache_ap_id) + logger.debug("Checked orb cache: " + str(next_cache)) + + # Listen for any changes to this setting. + # moverando_flag = self.read_goal_address(moverando_enabled_offset, sizeof_uint8) + # self.moverando_enabled = bool(moverando_flag) + + orbsanity_option = self.read_goal_address(orbsanity_option_offset, sizeof_uint8) + bundle_size = self.read_goal_address(orbsanity_bundle_offset, sizeof_uint32) + self.orbsanity_enabled = orbsanity_option > 0 + + # Per Level Orbsanity option. Only need to do this loop if we chose this setting. + if orbsanity_option == 1: + for level in range(0, 16): + collected_bundles = self.read_goal_address(collected_bundle_offset + (level * sizeof_uint32), + sizeof_uint32) + + # Count up from the first bundle, by bundle size, until you reach the latest collected bundle. + # e.g. {25, 50, 75, 100, 125...} + if collected_bundles > 0: + for bundle in range(bundle_size, + bundle_size + collected_bundles, # Range max is non-inclusive. + bundle_size): + + bundle_ap_id = orbs.to_ap_id(orbs.find_address(level, bundle, bundle_size)) + if bundle_ap_id not in self.location_outbox: + self.location_outbox.append(bundle_ap_id) + logger.debug(f"Checked orb bundle: L{level} {bundle}") + + # Global Orbsanity option. Index 16 refers to all orbs found regardless of level. + if orbsanity_option == 2: + collected_bundles = self.read_goal_address(collected_bundle_offset + (16 * sizeof_uint32), + sizeof_uint32) + if collected_bundles > 0: + for bundle in range(bundle_size, + bundle_size + collected_bundles, # Range max is non-inclusive. + bundle_size): + + bundle_ap_id = orbs.to_ap_id(orbs.find_address(16, bundle, bundle_size)) + if bundle_ap_id not in self.location_outbox: + self.location_outbox.append(bundle_ap_id) + logger.debug(f"Checked orb bundle: G {bundle}") + + completed = self.read_goal_address(completed_offset, sizeof_uint8) + if completed > 0 and not self.finished_game: + self.finished_game = True + self.log_success(logger, "Congratulations! You finished the game!") + + except (ProcessError, MemoryReadError, WinAPIError): + msg = (f"Error reading game memory! (Did the game crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + + return self.location_outbox + + def read_goal_address(self, offset: int, length: int) -> int: + return int.from_bytes( + self.gk_process.read_bytes(self.goal_address + offset, length), + byteorder="little", + signed=False) + + def save_data(self): + with open("jakanddaxter_location_outbox.json", "w+") as f: + dump = { + "outbox_index": self.outbox_index, + "location_outbox": self.location_outbox + } + json.dump(dump, f, indent=4) + + def load_data(self): + try: + with open("jakanddaxter_location_outbox.json", "r") as f: + load = json.load(f) + self.outbox_index = load["outbox_index"] + self.location_outbox = load["location_outbox"] + except FileNotFoundError: + pass diff --git a/worlds/jakanddaxter/agents/repl_client.py b/worlds/jakanddaxter/agents/repl_client.py new file mode 100644 index 000000000000..b207bba281c3 --- /dev/null +++ b/worlds/jakanddaxter/agents/repl_client.py @@ -0,0 +1,527 @@ +import json +import logging +import queue +import time +import struct +import random +from dataclasses import dataclass +from queue import Queue +from typing import Callable + +import pymem +from pymem.exception import ProcessNotFound, ProcessError + +import asyncio +from asyncio import StreamReader, StreamWriter, Lock + +from NetUtils import NetworkItem +from ..game_id import jak1_id, jak1_max +from ..items import item_table, trap_item_table +from ..locs import ( + orb_locations as orbs, + cell_locations as cells, + scout_locations as flies, + special_locations as specials, + orb_cache_locations as caches) + + +logger = logging.getLogger("ReplClient") + + +@dataclass +class JsonMessageData: + my_item_name: str | None = None + my_item_finder: str | None = None + their_item_name: str | None = None + their_item_owner: str | None = None + + +ALLOWED_CHARACTERS = frozenset({ + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", + "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", + "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", + "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", + "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", + "y", "z", " ", "!", ":", ",", ".", "/", "?", "-", + "=", "+", "'", "(", ")", "\"" +}) + + +class JakAndDaxterReplClient: + ip: str + port: int + reader: StreamReader + writer: StreamWriter + lock: Lock + connected: bool = False + initiated_connect: bool = False # Signals when user tells us to try reconnecting. + received_deathlink: bool = False + balanced_orbs: bool = False + + # Variables to handle the title screen and initial game connection. + initial_item_count = -1 # Brand new games have 0 items, so initialize this to -1. + received_initial_items = False + processed_initial_items = False + + # The REPL client needs the REPL/compiler process running, but that process + # also needs the game running. Therefore, the REPL client needs both running. + gk_process: pymem.process = None + goalc_process: pymem.process = None + + item_inbox: dict[int, NetworkItem] = {} + inbox_index = 0 + json_message_queue: Queue[JsonMessageData] = queue.Queue() + + # Logging callbacks + # These will write to the provided logger, as well as the Client GUI with color markup. + log_error: Callable # Red + log_warn: Callable # Orange + log_success: Callable # Green + log_info: Callable # White (default) + + def __init__(self, + log_error_callback: Callable, + log_warn_callback: Callable, + log_success_callback: Callable, + log_info_callback: Callable, + ip: str = "127.0.0.1", + port: int = 8181): + self.ip = ip + self.port = port + self.lock = asyncio.Lock() + self.log_error = log_error_callback + self.log_warn = log_warn_callback + self.log_success = log_success_callback + self.log_info = log_info_callback + + async def main_tick(self): + if self.initiated_connect: + await self.connect() + self.initiated_connect = False + + if self.connected: + try: + self.gk_process.read_bool(self.gk_process.base_address) # Ping to see if it's alive. + except ProcessError: + msg = (f"Error reading game memory! (Did the game crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + try: + self.goalc_process.read_bool(self.goalc_process.base_address) # Ping to see if it's alive. + except ProcessError: + msg = (f"Error sending data to compiler! (Did the compiler crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + else: + return + + # When connecting the game to the AP server on the title screen, we may be processing items from starting + # inventory or items received in an async game. Once we have caught up to the initial count, tell the player + # that we are ready to start. New items may even come in during the title screen, so if we go over the count, + # we should still send the ready signal. + if not self.processed_initial_items: + if self.inbox_index >= self.initial_item_count >= 0: + self.processed_initial_items = True + await self.send_connection_status("ready") + + # Receive Items from AP. Handle 1 item per tick. + if len(self.item_inbox) > self.inbox_index: + await self.receive_item() + await self.save_data() + self.inbox_index += 1 + + if self.received_deathlink: + await self.receive_deathlink() + self.received_deathlink = False + + # Progressively empty the queue during each tick + # if text messages happen to be too slow we could pool dequeuing here, + # but it'd slow down the ItemReceived message during release + if not self.json_message_queue.empty(): + json_txt_data = self.json_message_queue.get_nowait() + await self.write_game_text(json_txt_data) + + # This helper function formats and sends `form` as a command to the REPL. + # ALL commands to the REPL should be sent using this function. + async def send_form(self, form: str, print_ok: bool = True) -> bool: + header = struct.pack(" str: + result = "".join([c if c in ALLOWED_CHARACTERS else "?" for c in text[:32]]).upper() + result = result.replace("'", "\\c12") + return f"\"{result}\"" + + # Like sanitize_game_text, but the settings file will NOT allow any whitespace in the slot_name or slot_seed data. + # And don't replace any chars with "?" for good measure. + @staticmethod + def sanitize_file_text(text: str) -> str: + allowed_chars_no_extras = ALLOWED_CHARACTERS - {" ", "'", "(", ")", "\""} + result = "".join([c if c in allowed_chars_no_extras else "" for c in text[:16]]).upper() + return f"\"{result}\"" + + # Pushes a JsonMessageData object to the json message queue to be processed during the repl main_tick + def queue_game_text(self, my_item_name, my_item_finder, their_item_name, their_item_owner): + self.json_message_queue.put(JsonMessageData(my_item_name, my_item_finder, their_item_name, their_item_owner)) + + # OpenGOAL can handle both its own string datatype and C-like character pointers (charp). + async def write_game_text(self, data: JsonMessageData): + logger.debug(f"Sending info to the in-game messenger!") + body = "" + if data.my_item_name and data.my_item_finder: + body += (f" (append-messages (-> *ap-messenger* 0) \'recv " + f" {self.sanitize_game_text(data.my_item_name)} " + f" {self.sanitize_game_text(data.my_item_finder)})") + if data.their_item_name and data.their_item_owner: + body += (f" (append-messages (-> *ap-messenger* 0) \'sent " + f" {self.sanitize_game_text(data.their_item_name)} " + f" {self.sanitize_game_text(data.their_item_owner)})") + await self.send_form(f"(begin {body} (none))", print_ok=False) + + async def receive_item(self): + ap_id = getattr(self.item_inbox[self.inbox_index], "item") + + # Determine the type of item to receive. + if ap_id in range(jak1_id, jak1_id + flies.fly_offset): + await self.receive_power_cell(ap_id) + elif ap_id in range(jak1_id + flies.fly_offset, jak1_id + specials.special_offset): + await self.receive_scout_fly(ap_id) + elif ap_id in range(jak1_id + specials.special_offset, jak1_id + caches.orb_cache_offset): + await self.receive_special(ap_id) + elif ap_id in range(jak1_id + caches.orb_cache_offset, jak1_id + orbs.orb_offset): + await self.receive_move(ap_id) + elif ap_id in range(jak1_id + orbs.orb_offset, jak1_max - max(trap_item_table)): + await self.receive_precursor_orb(ap_id) # Ponder the orbs. + elif ap_id in range(jak1_max - max(trap_item_table), jak1_max): + await self.receive_trap(ap_id) + elif ap_id == jak1_max: + await self.receive_green_eco() # Ponder why I chose to do ID's this way. + else: + self.log_error(logger, f"Tried to receive item with unknown AP ID {ap_id}!") + + async def receive_power_cell(self, ap_id: int) -> bool: + cell_id = cells.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type fuel-cell) " + "(the float " + str(cell_id) + "))") + if ok: + logger.debug(f"Received a Power Cell!") + else: + self.log_error(logger, f"Unable to receive a Power Cell!") + return ok + + async def receive_scout_fly(self, ap_id: int) -> bool: + fly_id = flies.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type buzzer) " + "(the float " + str(fly_id) + "))") + if ok: + logger.debug(f"Received a {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive a {item_table[ap_id]}!") + return ok + + async def receive_special(self, ap_id: int) -> bool: + special_id = specials.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type ap-special) " + "(the float " + str(special_id) + "))") + if ok: + logger.debug(f"Received special unlock {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive special unlock {item_table[ap_id]}!") + return ok + + async def receive_move(self, ap_id: int) -> bool: + move_id = caches.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type ap-move) " + "(the float " + str(move_id) + "))") + if ok: + logger.debug(f"Received the ability to {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive the ability to {item_table[ap_id]}!") + return ok + + async def receive_precursor_orb(self, ap_id: int) -> bool: + orb_amount = orbs.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type money) " + "(the float " + str(orb_amount) + "))") + if ok: + logger.debug(f"Received {orb_amount} Precursor orbs!") + else: + self.log_error(logger, f"Unable to receive {orb_amount} Precursor orbs!") + return ok + + async def receive_trap(self, ap_id: int) -> bool: + trap_id = jak1_max - ap_id + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type ap-trap) " + "(the float " + str(trap_id) + "))") + if ok: + logger.debug(f"Received a {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive a {item_table[ap_id]}!") + return ok + + # Green eco pills are our filler item. Use the get-pickup event instead to handle being full health. + async def receive_green_eco(self) -> bool: + ok = await self.send_form("(send-event *target* \'get-pickup (pickup-type eco-pill) (the float 1))") + if ok: + logger.debug(f"Received a green eco pill!") + else: + self.log_error(logger, f"Unable to receive a green eco pill!") + return ok + + async def receive_deathlink(self) -> bool: + + # Because it should at least be funny sometimes. + death_types = ["\'death", + "\'death", + "\'death", + "\'death", + "\'endlessfall", + "\'drown-death", + "\'melt", + "\'dark-eco-pool"] + chosen_death = random.choice(death_types) + + ok = await self.send_form("(ap-deathlink-received! " + chosen_death + ")") + if ok: + logger.debug(f"Received deathlink signal!") + else: + self.log_error(logger, f"Unable to receive deathlink signal!") + return ok + + async def subtract_traded_orbs(self, orb_count: int) -> bool: + + # To protect against momentary server disconnects, + # this should only be done once per client session. + if not self.balanced_orbs: + self.balanced_orbs = True + + ok = await self.send_form(f"(-! (-> *game-info* money) (the float {orb_count}))") + if ok: + logger.debug(f"Subtracting {orb_count} traded orbs!") + else: + self.log_error(logger, f"Unable to subtract {orb_count} traded orbs!") + return ok + + return True + + # OpenGOAL has a limit of 8 parameters per function. We've already hit this limit. So, define a new datatype + # in OpenGOAL that holds all these options, instantiate the type here, and have ap-setup-options! function take + # that instance as input. + async def setup_options(self, + os_option: int, os_bundle: int, + fc_count: int, mp_count: int, + lt_count: int, ct_amount: int, + ot_amount: int, trap_time: int, + goal_id: int, slot_name: str, + slot_seed: str) -> bool: + sanitized_name = self.sanitize_file_text(slot_name) + sanitized_seed = self.sanitize_file_text(slot_seed) + + # I didn't want to have to do this with floats but GOAL's compile-time vs runtime types leave me no choice. + ok = await self.send_form(f"(ap-setup-options! (new 'static 'ap-seed-options " + f":orbsanity-option {os_option} " + f":orbsanity-bundle {os_bundle} " + f":fire-canyon-unlock {fc_count}.0 " + f":mountain-pass-unlock {mp_count}.0 " + f":lava-tube-unlock {lt_count}.0 " + f":citizen-orb-amount {ct_amount}.0 " + f":oracle-orb-amount {ot_amount}.0 " + f":trap-duration {trap_time}.0 " + f":completion-goal {goal_id} " + f":slot-name {sanitized_name} " + f":slot-seed {sanitized_seed} ))") + message = (f"Setting options: \n" + f" orbsanity Option {os_option}, orbsanity Bundle {os_bundle}, \n" + f" FC Cell Count {fc_count}, MP Cell Count {mp_count}, \n" + f" LT Cell Count {lt_count}, Citizen Orb Amt {ct_amount}, \n" + f" Oracle Orb Amt {ot_amount}, Trap Duration {trap_time}, \n" + f" Completion GOAL {goal_id}, Slot Name {sanitized_name}, \n" + f" Slot Seed {sanitized_seed}... ") + if ok: + logger.debug(message + "Success!") + else: + self.log_error(logger, message + "Failed!") + + return ok + + async def send_connection_status(self, status: str) -> bool: + ok = await self.send_form(f"(ap-set-connection-status! (connection-status {status}))") + if ok: + logger.debug(f"Connection Status {status} set!") + else: + self.log_error(logger, f"Connection Status {status} failed to set!") + + return ok + + async def save_data(self): + with open("jakanddaxter_item_inbox.json", "w+") as f: + dump = { + "inbox_index": self.inbox_index, + "item_inbox": [{ + "item": self.item_inbox[k].item, + "location": self.item_inbox[k].location, + "player": self.item_inbox[k].player, + "flags": self.item_inbox[k].flags + } for k in self.item_inbox + ] + } + json.dump(dump, f, indent=4) + + def load_data(self): + try: + with open("jakanddaxter_item_inbox.json", "r") as f: + load = json.load(f) + self.inbox_index = load["inbox_index"] + self.item_inbox = {k: NetworkItem( + item=load["item_inbox"][k]["item"], + location=load["item_inbox"][k]["location"], + player=load["item_inbox"][k]["player"], + flags=load["item_inbox"][k]["flags"] + ) for k in range(0, len(load["item_inbox"])) + } + except FileNotFoundError: + pass diff --git a/worlds/jakanddaxter/client.py b/worlds/jakanddaxter/client.py new file mode 100644 index 000000000000..2b669d384714 --- /dev/null +++ b/worlds/jakanddaxter/client.py @@ -0,0 +1,600 @@ +# Python standard libraries +import asyncio +import json +import logging +import os +import subprocess +import sys + +from asyncio import Task +from datetime import datetime +from logging import Logger +from typing import Awaitable + +# Misc imports +import colorama +import pymem + +from pymem.exception import ProcessNotFound + +# Archipelago imports +import ModuleUpdate +import Utils + +from CommonClient import ClientCommandProcessor, CommonContext, server_loop, gui_enabled +from NetUtils import ClientStatus + +# Jak imports +from .game_id import jak1_name +from .options import EnableOrbsanity +from .agents.memory_reader import JakAndDaxterMemoryReader +from .agents.repl_client import JakAndDaxterReplClient +from . import JakAndDaxterWorld + + +ModuleUpdate.update() +logger = logging.getLogger("JakClient") +all_tasks: set[Task] = set() + + +def create_task_log_exception(awaitable: Awaitable) -> asyncio.Task: + async def _log_exception(a): + try: + return await a + except Exception as e: + logger.exception(e) + finally: + all_tasks.remove(task) + task = asyncio.create_task(_log_exception(awaitable)) + all_tasks.add(task) + return task + + +class JakAndDaxterClientCommandProcessor(ClientCommandProcessor): + ctx: "JakAndDaxterContext" + + # The command processor is not async so long-running operations like the /repl connect command + # (which takes 10-15 seconds to compile the game) have to be requested with user-initiated flags. + # The flags are checked by the agents every main_tick. + def _cmd_repl(self, *arguments: str): + """Sends a command to the OpenGOAL REPL. Arguments: + - connect : connect the client to the REPL (goalc). + - status : check internal status of the REPL.""" + if arguments: + if arguments[0] == "connect": + self.ctx.on_log_info(logger, "This may take a bit... Wait for the success audio cue before continuing!") + self.ctx.repl.initiated_connect = True + if arguments[0] == "status": + create_task_log_exception(self.ctx.repl.print_status()) + + def _cmd_memr(self, *arguments: str): + """Sends a command to the Memory Reader. Arguments: + - connect : connect the memory reader to the game process (gk). + - status : check the internal status of the Memory Reader.""" + if arguments: + if arguments[0] == "connect": + self.ctx.memr.initiated_connect = True + if arguments[0] == "status": + create_task_log_exception(self.ctx.memr.print_status()) + + +class JakAndDaxterContext(CommonContext): + game = jak1_name + items_handling = 0b111 # Full item handling + command_processor = JakAndDaxterClientCommandProcessor + + # We'll need two agents working in tandem to handle two-way communication with the game. + # The REPL Client will handle the server->game direction by issuing commands directly to the running game. + # But the REPL cannot send information back to us, it only ingests information we send it. + # Luckily OpenGOAL sets up memory addresses to write to, that AutoSplit can read from, for speedrunning. + # We'll piggyback off this system with a Memory Reader, and that will handle the game->server direction. + repl: JakAndDaxterReplClient + memr: JakAndDaxterMemoryReader + + # And two associated tasks, so we have handles on them. + repl_task: asyncio.Task + memr_task: asyncio.Task + + # Storing some information for writing save slot identifiers. + slot_seed: str + + def __init__(self, server_address: str | None, password: str | None) -> None: + self.repl = JakAndDaxterReplClient(self.on_log_error, + self.on_log_warn, + self.on_log_success, + self.on_log_info) + self.memr = JakAndDaxterMemoryReader(self.on_location_check, + self.on_finish_check, + self.on_deathlink_check, + self.on_deathlink_toggle, + self.on_orb_trade, + self.on_log_error, + self.on_log_warn, + self.on_log_success, + self.on_log_info) + # self.repl.load_data() + # self.memr.load_data() + super().__init__(server_address, password) + + def run_gui(self): + from kvui import GameManager + + class JakAndDaxterManager(GameManager): + logging_pairs = [ + ("Client", "Archipelago") + ] + base_title = "Jak and Daxter ArchipelaGOAL Client" + + self.ui = JakAndDaxterManager(self) + self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI") + + async def server_auth(self, password_requested: bool = False): + if password_requested and not self.password: + await super(JakAndDaxterContext, self).server_auth(password_requested) + await self.get_username() + self.tags = set() + await self.send_connect() + + def on_package(self, cmd: str, args: dict): + + if cmd == "RoomInfo": + self.slot_seed = args["seed_name"] + + if cmd == "Connected": + slot_data = args["slot_data"] + orbsanity_option = slot_data["enable_orbsanity"] + if orbsanity_option == EnableOrbsanity.option_per_level: + orbsanity_bundle = slot_data["level_orbsanity_bundle_size"] + elif orbsanity_option == EnableOrbsanity.option_global: + orbsanity_bundle = slot_data["global_orbsanity_bundle_size"] + else: + orbsanity_bundle = 1 + + # Connected packet is unaware of starting inventory or if player is returning to an existing game. + # Set initial_item_count to 0, see below comments for more info. + if not self.repl.received_initial_items and self.repl.initial_item_count < 0: + self.repl.initial_item_count = 0 + + create_task_log_exception( + self.repl.setup_options(orbsanity_option, + orbsanity_bundle, + slot_data["fire_canyon_cell_count"], + slot_data["mountain_pass_cell_count"], + slot_data["lava_tube_cell_count"], + slot_data["citizen_orb_trade_amount"], + slot_data["oracle_orb_trade_amount"], + slot_data["trap_effect_duration"], + slot_data["jak_completion_condition"], + self.auth[:16], # The slot name + self.slot_seed[:8])) + + # Because Orbsanity and the orb traders in the game are intrinsically linked, we need the server + # to track our trades at all times to support async play. "Retrieved" will tell us the orbs we lost, + # while "ReceivedItems" will tell us the orbs we gained. This will give us the correct balance. + if orbsanity_option in [EnableOrbsanity.option_per_level, EnableOrbsanity.option_global]: + async def get_orb_balance(): + await self.send_msgs([{"cmd": "Get", "keys": [f"jakanddaxter_{self.auth}_orbs_paid"]}]) + + create_task_log_exception(get_orb_balance()) + + # Tell the server if Deathlink is enabled or disabled in the in-game options. + # This allows us to "remember" the user's choice. + self.on_deathlink_toggle() + + if cmd == "Retrieved": + if f"jakanddaxter_{self.auth}_orbs_paid" in args["keys"]: + orbs_traded = args["keys"][f"jakanddaxter_{self.auth}_orbs_paid"] + orbs_traded = orbs_traded if orbs_traded is not None else 0 + create_task_log_exception(self.repl.subtract_traded_orbs(orbs_traded)) + + if cmd == "ReceivedItems": + + # If you have a starting inventory or are returning to a game where you have items, a ReceivedItems will be + # in the same network packet as Connected. This guarantees it is the first of any ReceivedItems we process. + # In this case, we should set the initial_item_count to > 0, even if already set to 0 by Connected, as well + # as the received_initial_items flag. Finally, use send_connection_status to tell the player to wait while + # we process the initial items. However, we will skip all this if there was no initial ReceivedItems and + # the REPL indicates it already handled any initial items (0 or otherwise). + if not self.repl.received_initial_items and not self.repl.processed_initial_items: + self.repl.received_initial_items = True + self.repl.initial_item_count = len(args["items"]) + create_task_log_exception(self.repl.send_connection_status("wait")) + + # This enumeration should run on every ReceivedItems packet, + # regardless of it being on initial connection or midway through a game. + for index, item in enumerate(args["items"], start=args["index"]): + logger.debug(f"index: {str(index)}, item: {str(item)}") + self.repl.item_inbox[index] = item + + async def json_to_game_text(self, args: dict): + if "type" in args and args["type"] in {"ItemSend"}: + my_item_name: str | None = None + my_item_finder: str | None = None + their_item_name: str | None = None + their_item_owner: str | None = None + + item = args["item"] + recipient = args["receiving"] + + # Receiving an item from the server. + if self.slot_concerns_self(recipient): + my_item_name = self.item_names.lookup_in_game(item.item) + + # Did we find it, or did someone else? + if self.slot_concerns_self(item.player): + my_item_finder = "MYSELF" + else: + my_item_finder = self.player_names[item.player] + + # Sending an item to the server. + if self.slot_concerns_self(item.player): + their_item_name = self.item_names.lookup_in_slot(item.item, recipient) + + # Does it belong to us, or to someone else? + if self.slot_concerns_self(recipient): + their_item_owner = "MYSELF" + else: + their_item_owner = self.player_names[recipient] + + # Write to game display. + self.repl.queue_game_text(my_item_name, my_item_finder, their_item_name, their_item_owner) + + # Even though N items come in as 1 ReceivedItems packet, there are still N PrintJson packets to process, + # and they all arrive before the ReceivedItems packet does. Defer processing of these packets as + # async tasks to speed up large releases of items. + def on_print_json(self, args: dict) -> None: + create_task_log_exception(self.json_to_game_text(args)) + super(JakAndDaxterContext, self).on_print_json(args) + + # We need to do a little more than just use CommonClient's on_deathlink. + def on_deathlink(self, data: dict): + if self.memr.deathlink_enabled: + self.repl.received_deathlink = True + super().on_deathlink(data) + + # We don't need an ap_inform function because check_locations solves that need. + def on_location_check(self, location_ids: list[int]): + create_task_log_exception(self.check_locations(location_ids)) + + # CommonClient has no finished_game function, so we will have to craft our own. TODO - Update if that changes. + async def ap_inform_finished_game(self): + if not self.finished_game and self.memr.finished_game: + message = [{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}] + await self.send_msgs(message) + self.finished_game = True + + def on_finish_check(self): + create_task_log_exception(self.ap_inform_finished_game()) + + # We need to do a little more than just use CommonClient's send_death. + async def ap_inform_deathlink(self): + if self.memr.deathlink_enabled: + player = self.player_names[self.slot] if self.slot is not None else "Jak" + death_text = self.memr.cause_of_death.replace("Jak", player) + await self.send_death(death_text) + self.on_log_warn(logger, death_text) + + # Reset all flags, but leave the death count alone. + self.memr.send_deathlink = False + self.memr.cause_of_death = "" + + def on_deathlink_check(self): + create_task_log_exception(self.ap_inform_deathlink()) + + # We don't need an ap_inform function because update_death_link solves that need. + def on_deathlink_toggle(self): + create_task_log_exception(self.update_death_link(self.memr.deathlink_enabled)) + + # Orb trades are situations unique to Jak, so we have to craft our own function. + async def ap_inform_orb_trade(self, orbs_changed: int): + if self.memr.orbsanity_enabled: + await self.send_msgs([{"cmd": "Set", + "key": f"jakanddaxter_{self.auth}_orbs_paid", + "default": 0, + "want_reply": False, + "operations": [{"operation": "add", "value": orbs_changed}] + }]) + + def on_orb_trade(self, orbs_changed: int): + create_task_log_exception(self.ap_inform_orb_trade(orbs_changed)) + + def _markup_panels(self, msg: str, c: str = None): + color = self.jsontotextparser.color_codes[c] if c else None + message = f"[color={color}]{msg}[/color]" if c else msg + + self.ui.log_panels["Archipelago"].on_message_markup(message) + self.ui.log_panels["All"].on_message_markup(message) + + def on_log_error(self, lg: Logger, message: str): + lg.error(message) + if self.ui: + self._markup_panels(message, "red") + + def on_log_warn(self, lg: Logger, message: str): + lg.warning(message) + if self.ui: + self._markup_panels(message, "orange") + + def on_log_success(self, lg: Logger, message: str): + lg.info(message) + if self.ui: + self._markup_panels(message, "green") + + def on_log_info(self, lg: Logger, message: str): + lg.info(message) + if self.ui: + self._markup_panels(message) + + async def run_repl_loop(self): + while True: + await self.repl.main_tick() + await asyncio.sleep(0.1) + + async def run_memr_loop(self): + while True: + await self.memr.main_tick() + await asyncio.sleep(0.1) + + +def find_root_directory(ctx: JakAndDaxterContext): + + # The path to this file is platform-dependent. + if Utils.is_windows: + appdata = os.getenv("APPDATA") + settings_path = os.path.normpath(f"{appdata}/OpenGOAL-Launcher/settings.json") + elif Utils.is_linux: + home = os.path.expanduser("~") + settings_path = os.path.normpath(f"{home}/.config/OpenGOAL-Launcher/settings.json") + elif Utils.is_macos: + home = os.path.expanduser("~") + settings_path = os.path.normpath(f"{home}/Library/Application Support/OpenGOAL-Launcher/settings.json") + else: + ctx.on_log_error(logger, f"Unknown operating system: {sys.platform}!") + return + + # Boilerplate messages that all error messages in this function should have. + err_title = "Unable to locate the ArchipelaGOAL install directory" + alt_instructions = (f"Please verify that OpenGOAL and ArchipelaGOAL are installed properly. " + f"If the problem persists, follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Open Game Data Folder.\n" + f" Go up one folder, then copy this path.\n" + f" Run the Archipelago Launcher, click Open host.yaml.\n" + f" Set the value of 'jakanddaxter_options > root_directory' to this path.\n" + f" Replace all backslashes in the path with forward slashes.\n" + f" Set the value of 'jakanddaxter_options > auto_detect_root_directory' to false, " + f"then save and close the host.yaml file.\n" + f" Close all launchers, games, clients, and console windows, then restart Archipelago.") + + if not os.path.exists(settings_path): + msg = (f"{err_title}: the OpenGOAL settings file does not exist.\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + with open(settings_path, "r") as f: + load = json.load(f) + + jak1_installed = load["games"]["Jak 1"]["isInstalled"] + if not jak1_installed: + msg = (f"{err_title}: The OpenGOAL Launcher is missing a normal install of Jak 1!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + mod_sources = load["games"]["Jak 1"]["modsInstalledVersion"] + if mod_sources is None: + msg = (f"{err_title}: No mod sources have been configured in the OpenGOAL Launcher!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + # Mods can come from multiple user-defined sources. + # Make no assumptions about where ArchipelaGOAL comes from, we should find it ourselves. + archipelagoal_source = None + for src in mod_sources: + for mod in mod_sources[src].keys(): + if mod == "archipelagoal": + archipelagoal_source = src + # Using this file, we could verify the right version is installed, but we don't need to. + if archipelagoal_source is None: + msg = (f"{err_title}: The ArchipelaGOAL mod is not installed in the OpenGOAL Launcher!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + # This is just the base OpenGOAL directory, we need to go deeper. + base_path = load["installationDir"] + mod_relative_path = f"features/jak1/mods/{archipelagoal_source}/archipelagoal" + mod_path = os.path.normpath( + os.path.join( + os.path.normpath(base_path), + os.path.normpath(mod_relative_path))) + + return mod_path + + +async def run_game(ctx: JakAndDaxterContext): + + # These may already be running. If they are not running, try to start them. + # TODO - Support other OS's. 1: Pymem is Windows-only. 2: on Linux, there's no ".exe." + gk_running = False + try: + pymem.Pymem("gk.exe") # The GOAL Kernel + gk_running = True + except ProcessNotFound: + ctx.on_log_warn(logger, "Game not running, attempting to start.") + + goalc_running = False + try: + pymem.Pymem("goalc.exe") # The GOAL Compiler and REPL + goalc_running = True + except ProcessNotFound: + ctx.on_log_warn(logger, "Compiler not running, attempting to start.") + + try: + auto_detect_root_directory = JakAndDaxterWorld.settings.auto_detect_root_directory + if auto_detect_root_directory: + root_path = find_root_directory(ctx) + else: + root_path = JakAndDaxterWorld.settings.root_directory + + # Always trust your instincts... the user may not have entered their root_directory properly. + # We don't have to do this check if the root directory was auto-detected. + if "/" not in root_path: + msg = (f"The ArchipelaGOAL root directory contains no path. (Are you missing forward slashes?)\n" + f"Please check your host.yaml file.\n" + f"Verify the value of 'jakanddaxter_options > root_directory' is a valid existing path, " + f"and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Start by checking the existence of the root directory provided in the host.yaml file (or found automatically). + root_path = os.path.normpath(root_path) + if not os.path.exists(root_path): + msg = (f"The ArchipelaGOAL root directory does not exist, unable to locate the Game and Compiler.\n" + f"Please check your host.yaml file.\n" + f"If the value of 'jakanddaxter_options > auto_detect_root_directory' is true, verify that OpenGOAL " + f"is installed properly.\n" + f"If it is false, check the value of 'jakanddaxter_options > root_directory'. " + f"Verify it is a valid existing path, and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Now double-check the existence of the two executables we need. + gk_path = os.path.join(root_path, "gk.exe") + goalc_path = os.path.join(root_path, "goalc.exe") + if not os.path.exists(gk_path) or not os.path.exists(goalc_path): + msg = (f"The Game and Compiler could not be found in the ArchipelaGOAL root directory.\n" + f"Please check your host.yaml file.\n" + f"If the value of 'jakanddaxter_options > auto_detect_root_directory' is true, verify that OpenGOAL " + f"is installed properly.\n" + f"If it is false, check the value of 'jakanddaxter_options > root_directory'. " + f"Verify it is a valid existing path, and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Now we can FINALLY attempt to start the programs. + if not gk_running: + # Per-mod saves and settings are stored outside the ArchipelaGOAL root folder, so we have to traverse + # a relative path, normalize it, and pass it in as an argument to gk. This folder will be created if + # it does not exist. + config_relative_path = "../_settings/archipelagoal" + config_path = os.path.normpath( + os.path.join( + root_path, + os.path.normpath(config_relative_path))) + + # The game freezes if text is inadvertently selected in the stdout/stderr data streams. Let's pipe those + # streams to a file, and let's not clutter the screen with another console window. + timestamp = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") + log_path = os.path.join(Utils.user_path("logs"), f"JakAndDaxterGame_{timestamp}.txt") + log_path = os.path.normpath(log_path) + with open(log_path, "w") as log_file: + gk_process = subprocess.Popen( + [gk_path, "--game", "jak1", + "--config-path", config_path, + "--", "-v", "-boot", "-fakeiso", "-debug"], + stdout=log_file, + stderr=log_file, + creationflags=subprocess.CREATE_NO_WINDOW) + + if not goalc_running: + # For the OpenGOAL Compiler, the existence of the "data" subfolder indicates you are running it from + # a built package. This subfolder is treated as its proj_path. + proj_path = os.path.join(root_path, "data") + if os.path.exists(proj_path): + + # Look for "iso_data" path to automate away an oft-forgotten manual step of mod updates. + # All relative paths should start from root_path and end with "jak1". + goalc_args = [] + possible_relative_paths = { + "../../../../../active/jak1/data/iso_data/jak1", + "./data/iso_data/jak1", + } + + for iso_relative_path in possible_relative_paths: + iso_path = os.path.normpath( + os.path.join( + root_path, + os.path.normpath(iso_relative_path))) + + if os.path.exists(iso_path): + goalc_args = [goalc_path, "--game", "jak1", "--proj-path", proj_path, "--iso-path", iso_path] + logger.debug(f"iso_data folder found: {iso_path}") + break + else: + logger.debug(f"iso_data folder not found, continuing: {iso_path}") + + if not goalc_args: + msg = (f"The iso_data folder could not be found.\n" + f"Please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Advanced > Open Game Data Folder.\n" + f" Copy the iso_data folder from this location.\n" + f" Click Jak and Daxter > Features > Mods > ArchipelaGOAL > Advanced > " + f"Open Game Data Folder.\n" + f" Paste the iso_data folder in this location.\n" + f" Click Advanced > Compile. When this is done, click Continue.\n" + f" Close all launchers, games, clients, and console windows, then restart Archipelago.\n" + f"(See Setup Guide for more details.)") + ctx.on_log_error(logger, msg) + return + + # The non-existence of the "data" subfolder indicates you are running it from source, as a developer. + # The compiler will traverse upward to find the project path on its own. It will also assume your + # "iso_data" folder is at the root of your repository. Therefore, we don't need any of those arguments. + else: + goalc_args = [goalc_path, "--game", "jak1"] + + # This needs to be a new console. The REPL console cannot share a window with any other process. + goalc_process = subprocess.Popen(goalc_args, creationflags=subprocess.CREATE_NEW_CONSOLE) + + except AttributeError as e: + if " " in e.args[0]: + # YAML keys in Host.yaml ought to contain no spaces, which means this is a much more important error. + ctx.on_log_error(logger, e.args[0]) + else: + ctx.on_log_error(logger, + f"Host.yaml does not contain {e.args[0]}, unable to locate game executables.") + return + except FileNotFoundError as e: + msg = (f"The following path could not be found: {e.filename}\n" + f"Please check your host.yaml file.\n" + f"If the value of 'jakanddaxter_options > auto_detect_root_directory' is true, verify that OpenGOAL " + f"is installed properly.\n" + f"If it is false, check the value of 'jakanddaxter_options > root_directory'." + f"Verify it is a valid existing path, and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Auto connect the repl and memr agents. Sleep 5 because goalc takes just a little bit of time to load, + # and it's not something we can await. + ctx.on_log_info(logger, "This may take a bit... Wait for the game's title sequence before continuing!") + await asyncio.sleep(5) + ctx.repl.initiated_connect = True + ctx.memr.initiated_connect = True + + +async def main(): + Utils.init_logging("JakAndDaxterClient", exception_logger="Client") + + ctx = JakAndDaxterContext(None, None) + ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop") + ctx.repl_task = create_task_log_exception(ctx.run_repl_loop()) + ctx.memr_task = create_task_log_exception(ctx.run_memr_loop()) + + if gui_enabled: + ctx.run_gui() + ctx.run_cli() + + # Find and run the game (gk) and compiler/repl (goalc). + create_task_log_exception(run_game(ctx)) + await ctx.exit_event.wait() + await ctx.shutdown() + + +def launch(): + # use colorama to display colored text highlighting + colorama.just_fix_windows_console() + asyncio.run(main()) + colorama.deinit() diff --git a/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md b/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md new file mode 100644 index 000000000000..6cf8ae54a529 --- /dev/null +++ b/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md @@ -0,0 +1,258 @@ +# Jak And Daxter (ArchipelaGOAL) + +## FAQ +- [Where is the Options page?](#where-is-the-options-page) +- [What does randomization do to this game?](#what-does-randomization-do-to-this-game) +- [What are the Special Checks and how do I check them?](#what-are-the-special-checks-and-how-do-i-check-them) +- [What are the Special Items and what do they unlock?](#what-are-the-special-items-and-what-do-they-unlock) +- [How do I know which Special Items I have?](#how-do-i-know-which-special-items-i-have) +- [What is the goal of the game once randomized?](#what-is-the-goal-of-the-game-once-randomized) +- [What happens when I pick up or receive a Power Cell?](#what-happens-when-i-pick-up-or-receive-a-power-cell) +- [What happens when I pick up or receive a Scout Fly?](#what-happens-when-i-pick-up-or-receive-a-scout-fly) +- [How do I check the 'Free 7 Scout Flies' Power Cell?](#how-do-i-check-the-free-7-scout-flies-power-cell) +- [What does Death Link do?](#what-does-death-link-do) +- [What does Move Randomizer do?](#what-does-move-randomizer-do) +- [What are the movement options in Move Randomizer?](#what-are-the-movement-options-in-move-randomizer) +- [How do I know which moves I have?](#how-do-i-know-which-moves-i-have) +- [What does Orbsanity do?](#what-does-orbsanity-do) +- [What do Traps do?](#what-do-traps-do) +- [What kind of Traps are there?](#what-kind-of-traps-are-there) +- [I got soft-locked and cannot leave, how do I get out of here?](#i-got-soft-locked-and-cannot-leave-how-do-i-get-out-of-here) +- [Why did I get an Option Error when generating a seed, and how do I fix it?](#why-did-i-get-an-option-error-when-generating-a-seed-and-how-do-i-fix-it) +- [How do I check my player options in-game?](#how-do-i-check-my-player-options-in-game) +- [How does the HUD work?](#how-does-the-hud-work) +- [I think I found a bug, where should I report it?](#i-think-i-found-a-bug-where-should-i-report-it) + +## Where is the options page + +The [Player Options Page](../player-options) for this game contains all the options you need to configure and export +a config file. + +At this time, there are several caveats and restrictions: +- Power Cells and Scout Flies are **always** randomized. +- **All** the traders in the game become in-logic checks **if and only if** you have enough Orbs to pay all of them at once. + - This is to prevent hard locks, where an item required for progression is locked behind a trade you can't afford because you spent the orbs elsewhere. + - By default, that total is 1530. + +## What does randomization do to this game +The game now contains the following Location checks: +- All 101 Power Cells +- All 112 Scout Flies +- All 14 Orb Caches (collect every orb in the cache and let it close) + +These may contain Items for different games, as well as different Items from within Jak and Daxter. +Additionally, several special checks and corresponding items have been added that are required to complete the game. + +## What are the special checks and how do I check them +| Check Name | How To Check | +|------------------------|------------------------------------------------------------------------------| +| Fisherman's Boat | Complete the fishing minigame in Forbidden Jungle | +| Jungle Elevator | Collect the power cell at the top of the temple in Forbidden Jungle | +| Blue Eco Switch | Collect the power cell on the blue vent switch in Forbidden Jungle | +| Flut Flut | Push the egg off the cliff in Sentinel Beach and talk to the bird lady | +| Warrior's Pontoons | Talk to the Warrior in Rock Village once (you do NOT have to trade with him) | +| Snowy Mountain Gondola | Approach the gondola in Volcanic Crater | +| Yellow Eco Switch | Collect the power cell on the yellow vent switch in Snowy Mountain | +| Snowy Fort Gate | Ride the Flut Flut in Snowy Mountain and press the fort gate switch | +| Freed The Blue Sage | Free the Blue Sage in Gol and Maia's Citadel | +| Freed The Red Sage | Free the Red Sage in Gol and Maia's Citadel | +| Freed The Yellow Sage | Free the Yellow Sage in Gol and Maia's Citadel | +| Freed The Green Sage | Free the Green Sage in Gol and Maia's Citadel | + +## What are the special items and what do they unlock +| Item Name | What it Unlocks | +|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| Fisherman's Boat | Misty Island | +| Jungle Elevator | The blue vent switch inside the temple in Forbidden Jungle | +| Blue Eco Switch | The plant boss inside the temple in Forbidden Jungle
The cannon tower in Sentinel Beach | +| Flut Flut | The upper platforms in Boggy Swamp
The fort gate switch in Snowy Mountain | +| Warrior's Pontoons | Boggy Swamp and Mountain Pass | +| Snowy Mountain Gondola | Snowy Mountain | +| Yellow Eco Switch | The frozen box in Snowy Mountain
The shortcut in Mountain Pass | +| Snowy Fort Gate | The fort in Snowy Mountain | +| Freed The Blue Sage
Freed The Red Sage
Freed The Yellow Sage | The final staircase in Gol and Maia's Citadel | +| Freed The Green Sage | The final elevator in Gol and Maia's Citadel | + +## How do I know which special items I have +Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `Item Tracker`. +This will show you a list of all the special items in the game, ones not normally tracked as power cells or scout flies. +Gray items indicate you do not possess that item, light blue items indicate you possess that item. + +## What is the goal of the game once randomized +By default, to complete the game you must defeat the Gol and Maia and stop them from opening the Dark Eco silo. In order +to reach them, you will need at least 72 Power Cells to cross the Lava Tube, as well as the four special items for +freeing the Red, Blue, Yellow, and Green Sages. + +Alternatively, you can choose from a handful of other completion conditions like defeating a particular boss, crossing +a particular connector level, or opening the 100 Power Cell door after defeating the final boss. You can also customize +the thresholds for connector levels and orb trades. These options allow you to tailor the expected length and difficulty +of your run as you see fit. + +## What happens when I pick up or receive a power cell +When you pick up a power cell, Jak and Daxter will perform their victory animation. Your power cell count will +NOT change. The pause menu will say "Task Completed" below the picked-up Power Cell. If your power cell was related +to one of the special checks listed above, you will automatically check that location as well - a 2 for 1 deal! +Finally, your text client will inform you what you found and who it belongs to. + +When you receive a power cell, your power cell count will tick up by 1. Gameplay will otherwise continue as normal. +Finally, your text client will inform you where you received the power cell from. + +## What happens when I pick up or receive a scout fly +When you pick up a scout fly, your scout fly count will NOT change. The pause menu will show you the number of +scout flies you picked up per-region, and this number will have ticked up by 1 for the region that scout fly belongs to. +Finally, your text client will inform you what you found and who it belongs to. + +When you receive a scout fly, your total scout fly count will tick up by 1. The pause menu will show you the number of +scout flies you received per-region, and this number will have ticked up by 1 for the region that scout fly belongs to. +Finally, your text client will inform you where you received the scout fly from, and which one it is. + +## How do I check the Free 7 Scout Flies power cell +You will automatically check this power cell when you _receive_ your 7th scout fly, NOT when you _pick up_ your 7th +scout fly. So in short: + +- When you _pick up_ your 7th fly, the normal rules apply. +- When you _receive_ your 7th fly, 2 things will happen in quick succession. + - First, you will receive that scout fly, as normal. + - Second, you will immediately complete the "Free 7 Scout Flies" check, which will send out another item. + +## What does Death Link do +If you enable Death Link, all the other players in your Multiworld who also have it enabled will be linked by death. +That means when Jak dies in your game, the players in with Death Link also die. Likewise, if any of the other +players with Death Link die, Jak will also die in a random, possibly spectacular fashion. + +You can turn off Death Link at any time in the game by opening the game's menu and navigating to `Options`, +then `Archipelago Options`, then `Deathlink`. + +## What does Move Randomizer do +If you enable Move Randomizer, most of Jak's movement set will be added to the randomized item pool, and you will need +to receive the move in order to use it (i.e. you must find it, or another player must send it to you). Some moves have +prerequisite moves that you must also have in order to use them (e.g. Crouch Jump is dependent on Crouch). Jak will only +be able to run, swim (including underwater), perform single jumps, and shoot yellow eco from his goggles ("firing from +the hip" requires Punch). Note that Flut Flut and the Zoomer will have access to their full movement sets at all times. + +You can turn off Move Rando at any time in the game by opening the game's menu, navigate to `Options`, +then `Archipelago Options`, then `Move Randomizer`. This will give you access to the full movement set again. + +## What are the movement options in Move Randomizer +| Move Name | Prerequisite Moves | +|-----------------|--------------------| +| Crouch | | +| Crouch Jump | Crouch | +| Crouch Uppercut | Crouch | +| Roll | | +| Roll Jump | Roll | +| Double Jump | | +| Jump Dive | | +| Jump Kick | | +| Punch | | +| Punch Uppercut | Punch | +| Kick | | + +## How do I know which moves I have +Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `Move Tracker`. +This will show you a list of all the moves in the game. +- Gray items indicate you do not possess that move. +- Yellow items indicate you possess that move, but you are missing its prerequisites. +- Light blue items indicate you possess that move, as well as its prerequisites. + +## What does Orbsanity do +If you enable Orbsanity, bundles of Precursor Orbs will be turned into checks. Every time you collect the chosen number +of orbs, i.e. a "bundle," you will trigger another check. Likewise, the orbs will be added to the random item pool. +There are several options to change the difficulty of this challenge. + +- "Per Level" Orbsanity means the bundles are for each level in the game. (Geyser Rock, Sandover Village, etc.) +- "Global" Orbsanity means orbs collected from any level count toward the next bundle. +- The options with "Bundle Size" in the name indicate how many orbs are in a bundle. This adds a number of Items + and Locations to the pool inversely proportional to the size of the bundle. + - For example, if your bundle size is 20 orbs, you will add 100 items to the pool. If your bundle size is 250 orbs, + you will add 8 items to the pool. + +## What do Traps do +When creating your player YAML, you can choose to replace some of the game's extraneous Power Cells and Precursor Orbs +with traps. You can choose which traps you want to generate in your seed and how long they last. A random assortment +will then be chosen to populate the item pool. + +When you receive one, you will hear a buzzer and some kind of negative effect will occur in game. These effects may be +challenging, maddening, or entertaining. When the trap duration ends, the game should return to its previous state. +Multiple traps can be active at the same time, and they may interact with each other in strange ways. If they become +too frustrating, you can lower their duration by navigating to `Options`, then `Archipelago Options`, then +`Seed Options`, then `Trap Duration`. Lowering this number to zero will disable traps entirely. + +## What kind of Traps are there +| Trap Name | Effect | +|-----------------|--------------------------------------------------------------------------------| +| Trip Trap | Jak trips and falls | +| Slippery Trap | The world gains the physical properties of Snowy Mountain's ice lake | +| Gravity Trap | Jak falls to the ground faster and takes fall damage more easily | +| Camera Trap | The camera remains fixed in place no matter how far away Jak moves | +| Darkness Trap | The world gains the lighting properties of Dark Cave | +| Earthquake Trap | The world and camera shake | +| Teleport Trap | Jak immediately teleports to Samos's Hut | +| Despair Trap | The Warrior sobs profusely | +| Pacifism Trap | Jak's attacks have no effect on enemies, crates, or buttons | +| Ecoless Trap | Jak's eco is drained and he cannot collect new eco | +| Health Trap | Jak's health is set to 0 - not dead yet, but he will die to any attack or bonk | +| Ledge Trap | Jak cannot grab onto ledges | +| Zoomer Trap | Jak mounts an invisible zoomer (model loads properly depending on level) | +| Mirror Trap | The world is mirrored | + +## I got soft-locked and cannot leave how do I get out of here +Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `Warp To Home`. +Selecting this option will ask if you want to be teleported to Geyser Rock. From there, you can teleport back +to the nearest sage's hut to continue your journey. + +## Why did I get an Option Error when generating a seed and how do I fix it +Depending on your player YAML, Jak and Daxter can have a lot of items, which can sometimes be overwhelming or +disruptive to multiworld games. There are also options that are mutually incompatible with each other, even in a solo +game. To prevent the game from disrupting multiworlds, or generating an impossible solo seed, some options have +Singleplayer and Multiplayer Minimums and Maximums, collectively called "friendly limits." + +If you're generating a solo game, or your multiworld host agrees to your request, you can override those limits by +editing the `host.yaml`. In the Archipelago Launcher, click `Open host.yaml`, then search for `jakanddaxter_options`, +then search for `enforce_friendly_options`, then change this value from `true` to `false`. Disabling this allows for +more disruptive and challenging options, but it may cause seed generation to fail. **Use at your own risk!** + +## How do I check my player options in-game +When you connect your text client to the Archipelago Server, the server will tell the game what options were chosen +for this seed, and the game will apply those settings automatically. + +You can verify these options by navigating to `Options`, then `Archipelago Options`, then `Seed Options`. **You can open +each option to verify them, but you should NOT alter them during a run.** This may cause you to miss important +progression items and prevent you (and others) from completing the run. + +## How does the HUD work +The game's normal HUD shows you how many power cells, precursor orbs, and scout flies you currently have. But if you +hold `L2 or R2` and press a direction on the D-Pad, the HUD will show you alternate modes. Here is how the HUD works: + +| HUD Mode | Button Combo | What the HUD Shows | Text Messages | +|---------------|------------------------------|-----------------------------------|---------------------------------------| +| Per-Level | `L2 or R2` + `Down` | Locations Checked (in this level) | `SENT {Other Item} TO {Other Player}` | +| Global | `L2 or R2` + `Up` | Locations Checked (in the game) | `GOT {Your Item} FROM {Other Player}` | +| Normal | `L2 or R2` + `Left or Right` | Items Received | Both Sent and Got Messages | +| | | | | +| (In Any Mode) | | (If you sent an Item to Yourself) | `FOUND {Your Item}` | + +In all modes, the last 3 sent/received items and the player who sent/received it will be displayed in the +bottom left corner. This will help you quickly reference information about newly received or sent items. Items in blue +are Progression (or non-Jak items), in green are Filler, and in red are Traps. You can turn this off by navigating +to `Options`, then `Archipelago Options`, then set `Item Messages` to `Off`. + +## I think I found a bug where should I report it +Depending on the nature of the bug, there are a couple of different options. + +* If you found a logical error in the randomizer, please create a new Issue +[here](https://github.com/ArchipelaGOAL/Archipelago/issues). Use this page if: + * An item required for progression is unreachable. + * The randomizer did not respect one of the Options you chose. + * You see a mistake, typo, etc. on this webpage. + * You see an error or stack trace appear on the text client. + +* If you encountered an error in OpenGOAL, please create a new Issue +[here](https://github.com/ArchipelaGOAL/ArchipelaGOAL/issues). Use this page if: + * You encounter a crash, freeze, reset, etc. in the game. + * You fail to send Items you find in the game to the Archipelago server. + * You fail to receive Items the server sends to you. + * Your game disconnects from the server and cannot reconnect. + * You go looking for a game item that has already disappeared before you could reach it. + +* Please upload your config file, spoiler log file, and any other generated logs in the Issue, so we can troubleshoot the problem. \ No newline at end of file diff --git a/worlds/jakanddaxter/docs/setup_en.md b/worlds/jakanddaxter/docs/setup_en.md new file mode 100644 index 000000000000..509fb3ad8dcb --- /dev/null +++ b/worlds/jakanddaxter/docs/setup_en.md @@ -0,0 +1,182 @@ +# Jak And Daxter (ArchipelaGOAL) Setup Guide + +## Required Software + +- A legally purchased copy of *Jak And Daxter: The Precursor Legacy.* +- [The OpenGOAL Launcher](https://opengoal.dev/) +- [The Jak and Daxter .APWORLD package](https://github.com/ArchipelaGOAL/Archipelago/releases) + +At this time, this method of setup works on Windows only, but Linux support is a strong likelihood in the near future as OpenGOAL itself supports Linux. + +## Installation via OpenGOAL Launcher + +**You must set up a vanilla installation of Jak and Daxter before you can install mods for it.** + +- Follow the installation process for the official OpenGOAL Launcher. See [here](https://opengoal.dev/docs/usage/installation). +- Follow the setup process for adding mods to the OpenGOAL Launcher. See [here](https://jakmods.dev/). +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`. +- Under `Available Mods`, click `ArchipelaGOAL`. The mod should begin installing. When it is done, click `Continue` in the bottom right corner. +- **DO NOT PLAY AN ARCHIPELAGO GAME THROUGH THE OPENGOAL LAUNCHER.** The Archipelago Client should handle everything for you. + +### For NTSC versions of the game, follow these steps. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- In the bottom right corner, click `Advanced`, then click `Compile`. + +### For PAL versions of the game, follow these steps. + +PAL versions of the game seem to require additional troubleshooting/setup in order to work properly. +Below are some instructions that may help. +If you see `-- Compilation Error! --` after pressing `Compile` or Launching the ArchipelaGOAL mod, try these steps. + +- Remove these folders if you have them: + - `/iso_data` + - `/iso_data` + - `/data/iso_data` +- Place your Jak1 ISO in `` and rename it to `JakAndDaxter.iso` +- Type `cmd` in Windows search, right click `Command Prompt`, and pick `Run as Administrator` +- Run `cd ` +- Then run `.\extractor.exe --extract --extract-path .\data\iso_data "JakAndDaxter.iso"` + - This command should end by saying `Uses Decompiler Config Version - ntsc_v1` or `... - pal`. Take note of this message. +- If you saw `ntsc_v1`: + - In cmd, run `.\decompiler.exe data\decompiler\config\jak1\jak1_config.jsonc --version "ntsc_v1" data\iso_data data\decompiler_out` +- If you saw `pal`: + - Rename `\data\iso_data\jak1` to `jak1_pal` + - Back in cmd, run `.\decompiler.exe data\decompiler\config\jak1\jak1_config.jsonc --version "pal" data\iso_data data\decompiler_out` + - Rename `\data\iso_data\jak1_pal` back to `jak1` + - Rename `\data\decompiler_out\jak1_pal` back to `jak1` +- Open a **brand new** console window and launch the compiler: + - `cd ` + - `.\goalc.exe --user-auto --game jak1` + - From the compiler (in the same window): `(mi)`. This should compile the game. **Note that the parentheses are important.** + - **Don't close this first terminal, you will need it at the end.** +- Then, open **another brand new** console window and execute the game: + - `cd ` + - `.\gk.exe -v --game jak1 -- -boot -fakeiso -debug` +- Finally, **from the first console still in the GOALC compiler**, connect to the game: `(lt)`. + +## Updates and New Releases via OpenGOAL Launcher + +If you are in the middle of an async game, and you do not want to update the mod, you do not need to do this step. The mod will only update when you tell it to. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- Click `Update` to download and install any new updates that have been released. +- You can verify your version by clicking `Versions`. The version you are using will say `(Active)` next to it. +- **Then you must click `Advanced`, then click `Compile` to make the update take effect.** + +## Starting a Game + +### New Game + +- Run the Archipelago Launcher. +- From the right-most list, find and click `Jak and Daxter Client`. +- 3 new windows should appear: + - The OpenGOAL compiler will launch and compile the game. They should take about 30 seconds to compile. + - You should hear a musical cue to indicate the compilation was a success. If you do not, see the Troubleshooting section. + - You can **MINIMIZE** the Compiler window, **BUT DO NOT CLOSE IT.** It is required for Archipelago and the game to communicate with each other. + - The game window itself will launch, and Jak will be standing outside Samos's Hut. + - Once compilation is complete, the title sequence will start. + - Finally, the Archipelago text client will open. + - If you see **BOTH** `The REPL is ready!` and `The Memory Reader is ready!` then that should indicate a successful startup. If you do not, see the Troubleshooting section. +- Once you see `CONNECT TO ARCHIPELAGO NOW` on the title screen, use the text client to connect to the Archipelago server. This will communicate your current settings and slot info to the game. +- If you see `RECEIVING ITEMS, PLEASE WAIT...`, the game is busy receiving items from your starting inventory, assuming you have some. +- Once you see `READY! PRESS START TO CONTINUE` on the title screen, you can press Start. +- Choose `New Game`, choose a save file, and play through the opening cutscenes. +- Once you reach Geyser Rock, the game has begun! + - You can leave Geyser Rock immediately if you so choose - just step on the warp gate button. + +### Returning / Async Game +The same steps as New Game apply, with some exceptions: + +- Once you reach the title screen, connect to the Archipelago server **BEFORE** you load your save file. + - This is to allow AP to give the game your current settings and all the items you had previously. + - **THESE SETTINGS AFFECT LOADING AND SAVING OF SAVE FILES, SO IT IS IMPORTANT TO DO THIS FIRST.** +- Once you see `READY! PRESS START TO CONTINUE` on the title screen, you can press Start. +- Instead of choosing `New Game` in the title menu, choose `Load Game`, then choose the save file **THAT HAS YOUR CURRENT SLOT NAME.** + - To help you find the correct save file, highlighting a save will show you that save's slot name and the first 8 digits of the multiworld seed number. + +## Troubleshooting + +### The Text Client Says "Unable to locate the OpenGOAL install directory" + +Normally, the Archipelago client should be able to find your OpenGOAL installation automatically. + +If it cannot, you may have to tell it yourself. Follow these instructions. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- Click `Advanced` in the bottom right corner, then click `Open Game Data Folder`. You should see a new File Explorer open to that directory. +- In the File Explorer, go to the parent directory called `archipelagoal`, and you should see the `gk.exe` and `goalc.exe` executables. Copy this path. +- Run the Archipelago Launcher, then click on `Open host.yaml`. You should see a new text editor open that file. +- Search for `jakanddaxter_options`, and you will need to make 2 changes here. +- First, find the `root_directory` entry. Paste the path you noted earlier (the one containing gk.exe and goalc.exe) inside the double quotes. +- **MAKE SURE YOU CHANGE ALL BACKSLASHES `\ ` TO FORWARD SLASHES `/`.** + +```yaml + root_directory: "%programfiles%/OpenGOAL-Launcher/features/jak1/mods/JakMods/archipelagoal" +``` + +- Second, find the `root_directory` entry. Change this to `false`. You do not need to use double quotes. + +```yaml + auto_detect_root_directory: true +``` + +- Save the file and close it. + +### The Game Fails To Load The Title Screen + +You may start the game via the Text Client, but it never loads in the title screen. Check the Compiler window: you may see red and yellow errors like this. + +``` +-- Compilation Error! -- +``` + +If this happens, follow these instructions. If you are using a PAL version of the game, you should skip these instructions and follow the `Special PAL Instructions` above. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar, then click `Advanced`, then click `Open Game Data Folder`. Copy the `iso_data` folder from this directory. +- Back in the OpenGOAL Launcher, click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- In the bottom right corner, click `Advanced`, then click `Open Game Data Folder`. +- Paste the `iso_data` folder you copied earlier. +- Back in the OpenGOAL Launcher, click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- In the bottom right corner, click `Advanced`, then click `Compile`. + +### The Text Client Says "Error reading game memory!" or "Error sending data to compiler" + +If at any point the text client says this, you will need to restart the **all** of these applications. + +- Close all open windows: the client, the compiler, and the game. +- Run the OpenGOAL Launcher, then click `Features`, then click `Mods`, then click `ArchipelaGOAL`. +- Click `Advanced`, then click `Play in Debug Mode`. +- Click `Advanced`, then click `Open REPL`. +- Then close and reopen the Jak and Daxter Client from the Archipelago Launcher. +- Once these are done, you can enter `/repl status` and `/memr status` in the text client to verify. + +### The Client Cannot Open A REPL Connection + +If the client cannot open a REPL connection to the game, you may need to check the following steps: + +- Ensure you are not hosting anything on ports `8181` and `8112`. Those are for the REPL (goalc) and the game (gk) respectively. +- Ensure that Windows Defender and Windows Firewall are not blocking those programs from hosting or listening on those ports. +- You can use Windows Resource Monitor to verify those ports are open when the programs are running. +- Ensure that you only opened those ports for your local network, not the wider internet. + +## Known Issues + +- The game needs to boot in debug mode in order to allow the compiler to connect to it. **Clicking "Play" on the mod page in the OpenGOAL Launcher will not work.** +- The Compiler console window is orphaned once you close the game - you will have to kill it manually when you stop playing. +- The console windows cannot be run as background processes due to how the REPL works, so the best we can do is minimize them. +- Orbsanity checks may show up out of order in the text client. +- Large item releases may take up to several minutes for the game to process them all. Item Messages will usually take longer to appear than Items themselves. +- In Lost Precursor City, if you die in the Color Platforms room, the game may crash after you respawn. The cause is unknown. +- Darkness Trap may cause some visual glitches on certain levels. This is temporary, and terrain and object collision are unaffected. diff --git a/worlds/jakanddaxter/game_id.py b/worlds/jakanddaxter/game_id.py new file mode 100644 index 000000000000..d596a6cc824a --- /dev/null +++ b/worlds/jakanddaxter/game_id.py @@ -0,0 +1,8 @@ +# All Jak And Daxter Archipelago IDs must be offset by this number. +jak1_id = 741000000 + +# This is maximum ID we will allow. +jak1_max = jak1_id + 999999 + +# The name of the game. +jak1_name = "Jak and Daxter: The Precursor Legacy" diff --git a/worlds/jakanddaxter/icons/precursor_orb.ico b/worlds/jakanddaxter/icons/precursor_orb.ico new file mode 100644 index 0000000000000000000000000000000000000000..f0cd1a0eec251f861be3798a5c5059f236c4e786 GIT binary patch literal 6142 zcmcJT2Ut{B7RR3zr43~m`Ybp|9jr!GrJ#P)Fi9l;m$4d?(dy*?m6cU!?dIS zG8sdECCp7cIVuHZiwj@wmazzk06vEI^@CmD?b|gH4hQd{p4WGbX=Um-Yb4;cT z&2w+?oL>-&*(8xT|Fgi@21s>_A<@i7h-w~!m9r6~n1R69DF}#efPZ8i{AA5=UWG9I3P`le5TaR1Y_CJCT8QAdKM~t( zVw(Z~=*jSld$HXLecx=LpyTqSjfjl@05a|L5K1cH9b5t@XU)!pgzU~w-1t`}Dl1=Z=i;5UIWBbzq7ya| z*Cs?IZ2m=}?VI_r$oLP5_XA=jM$@`xKHW;*#+>c~<*yu1N9Apo;9=1A+zn;g zZm2W%L7%k;UJ>KLbWQ~0))T?%S7CJQ=Xp8q=)|qO4x8=$7erdu!Y`%)OnVDLHFL?| zUWRY@1hVHyc#DUjQ&;`jDN`17Yy+XqAun&`c*e~RrlS#oaWi1(eHi9GjXVqEWTBS0 zTxq_80iNMwV5E6v+8)x~F4F5qysabSHzGFi12FAOa3|Y^>zDFp)h}`qe57NEZ8%(f za^US9mD?sn8-oI&xry;e0mtA${%X%ZL;k&#=U@cM;ODq`_arb33pQg1*q#TW$@rA? zyC3RwvTyQ7q_5S)rGu+@D59*Z5Tu+(zBZN4K^=U^o<5Rt2)t}N+CXSEl#-Gi$#l?w zagL`wRfw{`jfBE;@KumKI9+i(zX&ms&g9AO!Ipc1*mlBAQVsXeT4LJ+RoXUshL-eh zMoc{U8@q&$A^y>1&xi@|m5zpsSH@47nME$GKw1olM6o5Js2X(kFGhszO;`tl_(v6ik;-Jsm1#{oeVd?uByuxe1bTYv$q>^;@4#kiKWKTK=G4<%^ z-G}Drz2pgrEihVjJw&N<9hEl_U+^X3i<_YBe;nHU6EGDWB`(re7uuV%A1CC0oq`9$ zHmC{K!V|<434eJV?0MviUDDthG6IIo?d11*{+(o&m2^Jepx8SX!HQ|IHbp#!q^!WzZ5lvt#FG4xw4B|>o@ocJs<51@w1>5fk zw2s3tI6i~ES0f*Lx!l#9uU3;Smq4PP1F3pCgaMA-tw34~cm!ph?kpYxCZGsRAW1O! zlbHO2lMoUK_qmvujzc&0I+T^?p(s7~UpDf8RsJ!kbB;jM`wM8Z4nsw8O`iHOpRXb) z_w%)gZaF+dM$&n-!NZf?(gLGZS89B5zrLgqiUIqeDBh3Qk^_(rIS5s0BlMM@!#wf` z^h5tjHWb5Ja~Aq>9NPt+jkC3?_!LwFNN0IRq3Qc2#gNaTp_r@ewwuodk+zMbvvmkJ zu0Ti6Tm;8XgpXh1>Q*2v2Eq*E)+SVa4Ndt4sD@vJYV;)-YOW%o_8X*5yovPs@6c=N zJ*12|LTtfE7)LRp?iQ`N4&&%6FjQWGvGf8=gPUL;c$W7wbHAg!JvAAhK-Fyr`PvqE zOJAgVayF#wTsn{187(kcbvtyGH`r^wfwGLwTLt+~)mN~NyNcAhZ_snnw{SFkhu*K; zM$U}Cq5IflJe#+58l1KDaG|*28ut?1Mim4C?WP@6Pv>0%9mN;~!M|fQ+M_zEEMp=6&?1 zHgDz+=sw{r#gXlh@j1EMlFK$f-+vLuQP@vA95tfE?%YHxNS0+n;f zjw=yvSPmiOaH@AyEihVjDL?wi`mFmmTYVL}nk&$je*wpoyU3Yx2Su;mN7-u+kT>x> zhA;XV#dCf{F0p0Leh541Q&D~bx=~kPp))KaE?vPFd=9hapN5#~Fr%Xpy3Bouv{8La zcZ6`mGOAw(eLrs8v}daMLldVRG{0~Yw%QvA>9G=t75gxF?gNy~{X51l1BzcF`#B|` zV*U^4*Kmbw83tJ&s{8YIL0@$h?BK)vxsYd3+@*XGne;xo291U_`*RvMQ{BeJ{nx?O zcS8RjYg#Gii35@&6)A$7#b_>sh7VEq}gZSiIdTl|o6 zUM~7ne~Ow#_h~<8BxWzdw08kx-dYsS`T>r~cac51 z{}v26Z=-^2m_79_GAVYnj~EWm_<3}GZ$LMU{LiHa!jqRHGIc%l6u;P>hsfs-B0xF4 zImY{E-Qn*MPbF!+z&9*oW}k+OFb&#@+*ht+(5$;CnsOD@OCO<>&Sn1ed+7D@Ef^^$ znMhB%nrl#1T!6NW;(zWZQ1scupGQMq%9UA-6ffSV`#>EO_O~Duv6ZcNe6|s~*E+}a ze66W)!6OvRegH?^1#};E2$>X53n^ygQfy79SZkYb9cs!83W~#Vlq)qu&cZbG0`vop zk-jMJP+U-U+fH}8gD}zkN#LKqH!W>I`)8wQdzFVr1S{{o~B*8Y6EKV@}iMY(O%;YTU;clg|7I-$ z7Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T39Da!_}?@`hGZe!*aVl$gJ2+pXqYN! z_2`#ug*7b$$EsVfX48(?L10T3@Qdb)^vFdikPJ-o0oy*hbI#!T(+c3Ks6cyL2g2bf zqLCOP1do^ou?QEp8jT({OBx1df8vG9#VD{cANXU4kp}0Z)ZLrx=VYOIb&>IkmM5zQX z;F5i3rxONl*ZpvouH?Y6Wpy#QdFp~a@vnGb&GJ0$roU}^5Z+el;!|t-(`w--?L8i=MHg%f<9$%!2b?UvMJ+&O_pAGq^HQKc zbA?vf@A>21)6A(Rz!ySIMIDZvsX{0e!RR4*m{2&H#|hlt44>D{g!QtFdRT#2k-~h9 zBrgmwC#OKCGvUZrm8h(@L$5VpXm%C`4;%=s!GH>v4~yRT@Zdn;aw@@+(6^jd5;HFE z+kC@itESE>M7X8_T4OR&hmSqHD7=&Y`b$H<3CsDlnQy?cF&prPtbOqzl(&#EEQmnl<`9+us*5jX$uK9rQ4!uE~;h9iX8Yi`H=_dbv7XI+Y$@7sitc{X}x z1pF>1GSaMQarsgB`~j?+I|lu&R_r-aj^Yz`d{y6!W_ugP=I6re^bSvEbe>XM=n2-MYL=Lb)tI^QV$Qld@x*gmU`?^X?+;+fiYrwh?>dcgTIJO`4?+wr z@q)$Dk71=nWm7AL@Y?n7?8n5R`N-hA`G#x-CV}*+09obF-@1FA5p^}_bdpEb*W;cS z-a+iGckn>TX)K(3IcP@AUvnEaOdEw6Prrtg2`jMnj@w{hLh6|VEHmm^mlO=;+jKa} zed%Y9&KQZiu3rQlo7~n9_JPeB6>UC{5Q1d_@9aN>^$VsL9mK$&2_>NdWR((LtL9E0 zOMcVF#Ein-+Jb{SH?V1uD^POh%>bHM+)Gd3SFgW-b)yGJ!eiUpd!Wh8fIgXCXmcq* zMTNrvw~Jw?iUJl~I);6~hZnZ*f-4X~T8b6FzIh?mFPa9@3jF<08D@AMM@az z2^FBd=RP=XKn`3Tj8U(uEIuC}*V2qP-rSDYmR-iAZbYn;&CEqRojHXi^QS@@>>aC? z(|sP;{_{=jJ@_Tok~Dc4?~axh+`YH}WxS@bshQO&hU3j)%q|*_29m(pf7yc+gBH&( zpQi?hpr;E&5HnPOpM^Pp(-2%P++3_reNB3zv= z6b%`O_x2sd%<&_!vLFvtb#-X7w`1X`TxBq0vKf0D+uc-RS2whOlD-<*+1M+0jHo|F z$`B5dvsf6@W*FE}%@!LK)Uj^M?Q|k7sny0<_jT+AT?leT!_3rJfDJ967-+y3W@C#o zH%u@aEd=jTRKlP)@mX3p-CYQT!ibVog~Abd0zq{8gV0!0aqI3wWK|fcP<=~!Rlo`i z8gD>-$&0H|aqM$m6@@;@Oa+p;O=jYmpw%a-K}AFQNwQ4(ENnCavndHl8SLG9QH%-9 z2BpeSkUo{UfZGT&HmtTh#7hKtfDO<`&^``9Vlao(g?2Vat=WPHb{zn_#h^w;UL4^! zlE?$go?9?{$DJf(we?kqGO~39Y%rP`N+fQ2E{2reki^`GQ3(z!WTZBm6}sG9Xs-Kh z_hT+j-neoa{4~J!V`V65_gzB@wX^%w*OEwqhd*3B>+wsoO|Z9-kuW^8dW}*-&k)dx z5;|I+Wl=--Yqc77S{rmZdC*+{Bz~OBI{)%RfP={`SskMFIn1biu{xIwH?j?JE7lLN z-1_MWv3?*JMgy(CX~#a?e8psZT3L&26)nGFVL8V#i4@pU{m6>jY!N5iUA#>jC16^b zK=nzYKsz$zQtj2<_`a4z3cMfOeE$y(K^OawUnQuH zPz$&+#LWS>#a#a{zgihQ#lA;p&b36X9GNy$Y4@j!$X%_mie%IlcGe<(hoy7wSr zV#}Nwf7>^b$OEThyEcwNV-0s1s5CSTyi_NP`*N2ohLjT0=oq_nV?!f6U0xm#OUH+K zaF~}665tX>vh4|@umUe(6Qv^YFp^u`tVC|+fnUC4un$C7!k_%)a2Yd7K9>EHbR#%N zPQ{*GGp791m$XtCF%3&3l`tChuvq)?#UZ{dh%ntR6-Y$*e~cEDhL>b8swMp2(cx4I zh(a=zrP|WfR|y$}Bypuly4)U?O{eMsI>x@8CDcP@{8ZA*XL@LajbD6K#vC|r1&;Zi zxc!pav!@6)2tyL5DOMp{Y6_ltZ4VaBE5z(c1+bG=G`6-OJtG6znd!XF$eb{uw4xE8 zl~zEH{BiM1(bQ~-z z$Hx_R&Tt&fiVCpl$X8!7tS83deIulcy^7PrvC-Nu1pSVS-;X*n$@pO@e$CP3Dq; zJ|!g;H+*y&_iTO_T^_IcmMFlbt?pPl6JxV8S(0`5p94qLJP@Mi7EK<5m6J!qO0POd zGYC}dagHSNK(&kU`_adT6$=;xeX?K_n^QGB?p9TYB^~*{d5N@yRfcOr;b1H+ z9EA=(Qz%IpL0foSjMU(8qWDZBPILbr&f@J|jRI7hevb4SLRR4DdxwwV9$HdDVaSF* z!QJ6NUaAexY~7(M>C1~ILMP;l-Bu_;M_VU8T{REocP+z5C10rLTz~l#INF`CT2k=9 zmhJLf6tMAK!tMIwHE8#dsgjOJ$oOe-@%EhTG)x~e3Jb^N;YUL<;bo<2?NT`)?cf~g zRRID#@p470%W5*<$hs9cw(3fRz3h!z12%uzAj}ZgOr3<5mNu5kIIDEC-D~OU42H(e zPY$Z*%pE%l4s!k&=iPGNBsn4MRk)MvJ3PL)N2o|{I@>tqedgH7nmUrh7+a423I)Z7dQ2bWI9qmN3A;0YMxl@{*rFMW6uL_9JLff_qb zIL;AzJ*rwAl84)PxK~Nk$izZMLaZ!byCSEhrb>;DdX~DZ0RwTkybAr3jj$OF>dUlz zQIi>z@xhUkU6zmKyr#bQhyrq4Vm;YxhABCj96!W@(5cF!pESZNT!{C`1g2*XaJaqj zF)xA|J>IKrX-v`Uht`JK`g@UtGclV;gsuylysj%}j2;Fj+q;1AcsW)e5~lZ;rIOFqB!D5bW% zLKG3@j0x!Y%`)VO2$56&cw9c0@aNYG2zVJ%f?NRtj4KdR9*8e0K?VGB zo=QbY1ou`qg-kl#6f94?hi@mC`}(*G z+Fn~T?TSk;VYy^-G87cRo{-^nqEHWL;q_7m6)>I<@I6+SaFH=tlDFrWgpI~%!of<; z6u`zh;L-To`iQmz9>!TsXNSzN}3%$(w4QH0k_28bbfNd3W%^e6);L) zns36K8)sgM{_F?x_1e$rN|jNDmGTNf%I7W_)MacG@KI6;SsM0>c6Ro|RZXx1#a5l} zXVsBNuY|2H`Ii*v5jMM}Y<3TkoK0OYE+2!_(_kSmp%3xy9abJtpGgEb%Wo%nPi>n6 zrFQlM4(h2|?Gshe=s6#(&Q~r^5n&Z`4Giy)w)Tk?%!;e-wJ9A9Garchipelago communication. +scout_item_table = { + 95: "Scout Fly - Geyser Rock", + 75: "Scout Fly - Sandover Village", + 7: "Scout Fly - Forbidden Jungle", + 20: "Scout Fly - Sentinel Beach", + 28: "Scout Fly - Misty Island", + 68: "Scout Fly - Fire Canyon", + 76: "Scout Fly - Rock Village", + 57: "Scout Fly - Precursor Basin", + 49: "Scout Fly - Lost Precursor City", + 43: "Scout Fly - Boggy Swamp", + 88: "Scout Fly - Mountain Pass", + 77: "Scout Fly - Volcanic Crater", + 85: "Scout Fly - Spider Cave", + 65: "Scout Fly - Snowy Mountain", + 90: "Scout Fly - Lava Tube", + 91: "Scout Fly - Citadel", # Had to shorten, it was >32 characters. +} + +# Orbs are also generic and interchangeable. +# These items are only used by Orbsanity, and only one of these +# items will be used corresponding to the chosen bundle size. +orb_item_table = { + 1: "1 Precursor Orb", + 2: "2 Precursor Orbs", + 4: "4 Precursor Orbs", + 5: "5 Precursor Orbs", + 8: "8 Precursor Orbs", + 10: "10 Precursor Orbs", + 16: "16 Precursor Orbs", + 20: "20 Precursor Orbs", + 25: "25 Precursor Orbs", + 40: "40 Precursor Orbs", + 50: "50 Precursor Orbs", + 80: "80 Precursor Orbs", + 100: "100 Precursor Orbs", + 125: "125 Precursor Orbs", + 200: "200 Precursor Orbs", + 250: "250 Precursor Orbs", + 400: "400 Precursor Orbs", + 500: "500 Precursor Orbs", + 1000: "1000 Precursor Orbs", + 2000: "2000 Precursor Orbs", +} + +# These are special items representing unique unlocks in the world. Notice that their Item ID equals their +# respective Location ID. Like scout flies, this is necessary for game<->archipelago communication. +special_item_table = { + 5: "Fisherman's Boat", # Unlocks Misty Island + 4: "Jungle Elevator", # Unlocks the Forbidden Jungle Temple + 2: "Blue Eco Switch", # Unlocks Blue Eco Vents + 17: "Flut Flut", # Unlocks Flut Flut sections in Boggy Swamp and Snowy Mountain + 33: "Warrior's Pontoons", # Unlocks Boggy Swamp and everything post-Rock Village + 105: "Snowy Mountain Gondola", # Unlocks Snowy Mountain + 60: "Yellow Eco Switch", # Unlocks Yellow Eco Vents + 63: "Snowy Fort Gate", # Unlocks the Snowy Mountain Fort + 71: "Freed The Blue Sage", # 1 of 3 unlocks for the final staircase in Citadel + 72: "Freed The Red Sage", # 1 of 3 unlocks for the final staircase in Citadel + 73: "Freed The Yellow Sage", # 1 of 3 unlocks for the final staircase in Citadel + 70: "Freed The Green Sage", # Unlocks the final boss elevator in Citadel +} + +# These are the move items for move randomizer. Notice that their Item ID equals some of the Orb Cache Location ID's. +# This was 100% arbitrary. There's no reason to tie moves to orb caches except that I need a place to put them. ;_; +move_item_table = { + 10344: "Crouch", + 10369: "Crouch Jump", + 11072: "Crouch Uppercut", + 12634: "Roll", + 12635: "Roll Jump", + 10945: "Double Jump", + 14507: "Jump Dive", + 14838: "Jump Kick", + 23348: "Punch", + 23349: "Punch Uppercut", + 23350: "Kick", + # 24038: "Orb Cache at End of Blast Furnace", # Hold onto these ID's for future use. + # 24039: "Orb Cache at End of Launch Pad Room", + # 24040: "Orb Cache at Start of Launch Pad Room", +} + +# These are trap items. Their Item ID is to be subtracted from the base game ID. They do not have corresponding +# game locations because they are intended to replace other items that have been marked as filler. +trap_item_table = { + 1: "Trip Trap", + 2: "Slippery Trap", + 3: "Gravity Trap", + 4: "Camera Trap", + 5: "Darkness Trap", + 6: "Earthquake Trap", + 7: "Teleport Trap", + 8: "Despair Trap", + 9: "Pacifism Trap", + 10: "Ecoless Trap", + 11: "Health Trap", + 12: "Ledge Trap", + 13: "Zoomer Trap", + 14: "Mirror Trap", +} + +# All Items +# While we're here, do all the ID conversions needed. +item_table = { + **{cells.to_ap_id(k): name for k, name in cell_item_table.items()}, + **{scouts.to_ap_id(k): name for k, name in scout_item_table.items()}, + **{specials.to_ap_id(k): name for k, name in special_item_table.items()}, + **{caches.to_ap_id(k): name for k, name in move_item_table.items()}, + **{orbs.to_ap_id(k): name for k, name in orb_item_table.items()}, + **{jak1_max - k: name for k, name in trap_item_table.items()}, + jak1_max: "Green Eco Pill" # Filler item. +} diff --git a/worlds/jakanddaxter/levels.py b/worlds/jakanddaxter/levels.py new file mode 100644 index 000000000000..2deb2d20879d --- /dev/null +++ b/worlds/jakanddaxter/levels.py @@ -0,0 +1,76 @@ +# This contains the list of levels in Jak and Daxter. +# Not to be confused with Regions - there can be multiple Regions in every Level. +level_table = { + "Geyser Rock": { + "level_index": 0, + "orbs": 50 + }, + "Sandover Village": { + "level_index": 1, + "orbs": 50 + }, + "Sentinel Beach": { + "level_index": 2, + "orbs": 150 + }, + "Forbidden Jungle": { + "level_index": 3, + "orbs": 150 + }, + "Misty Island": { + "level_index": 4, + "orbs": 150 + }, + "Fire Canyon": { + "level_index": 5, + "orbs": 50 + }, + "Rock Village": { + "level_index": 6, + "orbs": 50 + }, + "Lost Precursor City": { + "level_index": 7, + "orbs": 200 + }, + "Boggy Swamp": { + "level_index": 8, + "orbs": 200 + }, + "Precursor Basin": { + "level_index": 9, + "orbs": 200 + }, + "Mountain Pass": { + "level_index": 10, + "orbs": 50 + }, + "Volcanic Crater": { + "level_index": 11, + "orbs": 50 + }, + "Snowy Mountain": { + "level_index": 12, + "orbs": 200 + }, + "Spider Cave": { + "level_index": 13, + "orbs": 200 + }, + "Lava Tube": { + "level_index": 14, + "orbs": 50 + }, + "Gol and Maia's Citadel": { + "level_index": 15, + "orbs": 200 + } +} + +level_table_with_global = { + **level_table, + "": { + "level_index": 16, # Global + "orbs": 2000 + } +} diff --git a/worlds/jakanddaxter/locations.py b/worlds/jakanddaxter/locations.py new file mode 100644 index 000000000000..901c9811db09 --- /dev/null +++ b/worlds/jakanddaxter/locations.py @@ -0,0 +1,66 @@ +from BaseClasses import Location +from .game_id import jak1_name +from .locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches) + + +class JakAndDaxterLocation(Location): + game: str = jak1_name + + +# Different tables for location groups. +# Each Item ID == its corresponding Location ID. While we're here, do all the ID conversions needed. +cell_location_table = { + **{cells.to_ap_id(k): name for k, name in cells.loc7SF_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locGR_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSV_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locFJ_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSB_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locMI_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locFC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locRV_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locPB_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locLPC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locBS_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locMP_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locVC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSM_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locLT_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locGMC_cellTable.items()}, +} + +scout_location_table = { + **{scouts.to_ap_id(k): name for k, name in scouts.locGR_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSV_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locFJ_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSB_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locMI_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locFC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locRV_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locPB_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locLPC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locBS_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locMP_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locVC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSM_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locLT_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locGMC_scoutTable.items()}, +} + +special_location_table = {specials.to_ap_id(k): name for k, name in specials.loc_specialTable.items()} +cache_location_table = {caches.to_ap_id(k): name for k, name in caches.loc_orbCacheTable.items()} +orb_location_table = {orbs.to_ap_id(k): name for k, name in orbs.loc_orbBundleTable.items()} + +# All Locations +location_table = { + **cell_location_table, + **scout_location_table, + **special_location_table, + **cache_location_table, + **orb_location_table +} diff --git a/worlds/jakanddaxter/locs/__init__.py b/worlds/jakanddaxter/locs/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/locs/cell_locations.py b/worlds/jakanddaxter/locs/cell_locations.py new file mode 100644 index 000000000000..62f63e07df78 --- /dev/null +++ b/worlds/jakanddaxter/locs/cell_locations.py @@ -0,0 +1,194 @@ +from ..game_id import jak1_id + +# Power Cells are given ID's between 0 and 116 by the game. + +# The game tracks all game-tasks as integers. +# 101 of these ID's correspond directly to power cells, but they are not +# necessarily ordered, nor are they the first 101 in the task list. +# The remaining ones are cutscenes and other events. + + +# These helper functions do all the math required to get information about each +# power cell and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + return jak1_id + game_id + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + return ap_id - jak1_id + + +# The ID's you see below correspond directly to that cell's game-task ID. + +# The "Free 7 Scout Flies" Power Cells will be unlocked separately from their respective levels. +loc7SF_cellTable = { + 95: "GR: Free 7 Scout Flies", + 75: "SV: Free 7 Scout Flies", + 7: "FJ: Free 7 Scout Flies", + 20: "SB: Free 7 Scout Flies", + 28: "MI: Free 7 Scout Flies", + 68: "FC: Free 7 Scout Flies", + 76: "RV: Free 7 Scout Flies", + 57: "PB: Free 7 Scout Flies", + 49: "LPC: Free 7 Scout Flies", + 43: "BS: Free 7 Scout Flies", + 88: "MP: Free 7 Scout Flies", + 77: "VC: Free 7 Scout Flies", + 85: "SC: Free 7 Scout Flies", + 65: "SM: Free 7 Scout Flies", + 90: "LT: Free 7 Scout Flies", + 91: "GMC: Free 7 Scout Flies", +} + +# Geyser Rock +locGR_cellTable = { + 92: "GR: Find The Cell On The Path", + 93: "GR: Open The Precursor Door", + 94: "GR: Climb Up The Cliff", +} + +# Sandover Village +locSV_cellTable = { + 11: "SV: Bring 90 Orbs To The Mayor", + 12: "SV: Bring 90 Orbs to Your Uncle", + 10: "SV: Herd The Yakows Into The Pen", + 13: "SV: Bring 120 Orbs To The Oracle (1)", + 14: "SV: Bring 120 Orbs To The Oracle (2)", +} + +# Forbidden Jungle +locFJ_cellTable = { + 3: "FJ: Connect The Eco Beams", + 4: "FJ: Get To The Top Of The Temple", + 2: "FJ: Find The Blue Vent Switch", + 6: "FJ: Defeat The Dark Eco Plant", + 5: "FJ: Catch 200 Pounds Of Fish", + 8: "FJ: Follow The Canyon To The Sea", + 9: "FJ: Open The Locked Temple Door", +} + +# Sentinel Beach +locSB_cellTable = { + 15: "SB: Unblock The Eco Harvesters", + 17: "SB: Push The Flut Flut Egg Off The Cliff", + 16: "SB: Get The Power Cell From The Pelican", + 18: "SB: Chase The Seagulls", + 19: "SB: Launch Up To The Cannon Tower", + 21: "SB: Explore The Beach", + 22: "SB: Climb The Sentinel", +} + +# Misty Island +locMI_cellTable = { + 23: "MI: Catch The Sculptor's Muse", + 24: "MI: Climb The Lurker Ship", + 26: "MI: Stop The Cannon", + 25: "MI: Return To The Dark Eco Pool", + 27: "MI: Destroy the Balloon Lurkers", + 29: "MI: Use Zoomer To Reach Power Cell", + 30: "MI: Use Blue Eco To Reach Power Cell", +} + +# Fire Canyon +locFC_cellTable = { + 69: "FC: Reach The End Of Fire Canyon", +} + +# Rock Village +locRV_cellTable = { + 31: "RV: Bring 90 Orbs To The Gambler", + 32: "RV: Bring 90 Orbs To The Geologist", + 33: "RV: Bring 90 Orbs To The Warrior", + 34: "RV: Bring 120 Orbs To The Oracle (1)", + 35: "RV: Bring 120 Orbs To The Oracle (2)", +} + +# Precursor Basin +locPB_cellTable = { + 54: "PB: Herd The Moles Into Their Hole", + 53: "PB: Catch The Flying Lurkers", + 52: "PB: Beat Record Time On The Gorge", + 56: "PB: Get The Power Cell Over The Lake", + 55: "PB: Cure Dark Eco Infected Plants", + 58: "PB: Navigate The Purple Precursor Rings", + 59: "PB: Navigate The Blue Precursor Rings", +} + +# Lost Precursor City +locLPC_cellTable = { + 47: "LPC: Raise The Chamber", + 45: "LPC: Follow The Colored Pipes", + 46: "LPC: Reach The Bottom Of The City", + 48: "LPC: Quickly Cross The Dangerous Pool", + 44: "LPC: Match The Platform Colors", + 50: "LPC: Climb The Slide Tube", + 51: "LPC: Reach The Center Of The Complex", +} + +# Boggy Swamp +locBS_cellTable = { + 37: "BS: Ride The Flut Flut", + 36: "BS: Protect Farthy's Snacks", + 38: "BS: Defeat The Lurker Ambush", + 39: "BS: Break The Tethers To The Zeppelin (1)", + 40: "BS: Break The Tethers To The Zeppelin (2)", + 41: "BS: Break The Tethers To The Zeppelin (3)", + 42: "BS: Break The Tethers To The Zeppelin (4)", +} + +# Mountain Pass +locMP_cellTable = { + 86: "MP: Defeat Klaww", + 87: "MP: Reach The End Of The Mountain Pass", + 110: "MP: Find The Hidden Power Cell", +} + +# Volcanic Crater +locVC_cellTable = { + 96: "VC: Bring 90 Orbs To The Miners (1)", + 97: "VC: Bring 90 Orbs To The Miners (2)", + 98: "VC: Bring 90 Orbs To The Miners (3)", + 99: "VC: Bring 90 Orbs To The Miners (4)", + 100: "VC: Bring 120 Orbs To The Oracle (1)", + 101: "VC: Bring 120 Orbs To The Oracle (2)", + 74: "VC: Find The Hidden Power Cell", +} + +# Spider Cave +locSC_cellTable = { + 78: "SC: Use Your Goggles To Shoot The Gnawing Lurkers", + 79: "SC: Destroy The Dark Eco Crystals", + 80: "SC: Explore The Dark Cave", + 81: "SC: Climb The Giant Robot", + 82: "SC: Launch To The Poles", + 83: "SC: Navigate The Spider Tunnel", + 84: "SC: Climb the Precursor Platforms", +} + +# Snowy Mountain +locSM_cellTable = { + 60: "SM: Find The Yellow Vent Switch", + 61: "SM: Stop The 3 Lurker Glacier Troops", + 66: "SM: Deactivate The Precursor Blockers", + 67: "SM: Open The Frozen Crate", + 63: "SM: Open The Lurker Fort Gate", + 62: "SM: Get Through The Lurker Fort", + 64: "SM: Survive The Lurker Infested Cave", +} + +# Lava Tube +locLT_cellTable = { + 89: "LT: Cross The Lava Tube", +} + +# Gol and Maias Citadel +locGMC_cellTable = { + 71: "GMC: Free The Blue Sage", + 72: "GMC: Free The Red Sage", + 73: "GMC: Free The Yellow Sage", + 70: "GMC: Free The Green Sage", +} diff --git a/worlds/jakanddaxter/locs/orb_cache_locations.py b/worlds/jakanddaxter/locs/orb_cache_locations.py new file mode 100644 index 000000000000..b0ed6c1c979c --- /dev/null +++ b/worlds/jakanddaxter/locs/orb_cache_locations.py @@ -0,0 +1,52 @@ +from ..game_id import jak1_id + +# These are the locations of Orb Caches throughout the game, unlockable only with blue eco. +# They are not game collectables and thus don't have the same kinds of game ID's. They do, however, have actor ID's. +# There are a total of 14 in the game. + +# When these are opened, we can execute a hook in the mod that might be able to tell us which orb cache we opened, +# by ID, and that will allow us to map a Location object to it. We'll be using these for Move Randomizer, +# where each move is "mapped" to an Orb Cache being unlocked. Obviously, they will then be randomized, but with moves +# not being considered Items by the game, we need to conjure SOME kind of Location for them, and Orb Caches is the best +# we can do. + +# We can use 2^12 to offset these from special checks, just like we offset those from scout flies +# by 2^11. Special checks don't exceed an ID of (jak1_id + 2153). +orb_cache_offset = 4096 + + +# These helper functions do all the math required to get information about each +# special check and translate its ID between AP and OpenGOAL. Similar to Scout Flies, these large numbers are not +# necessary, and we can flatten out the range in which these numbers lie. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + uncompressed_id = jak1_id + orb_cache_offset + game_id # Add the offsets and the orb cache Actor ID. + return uncompressed_id - 10344 # Subtract the smallest Actor ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + uncompressed_id = ap_id + 10344 # Reverse process, add back the smallest Actor ID. + return uncompressed_id - jak1_id - orb_cache_offset # Subtract the offsets. + + +# The ID's you see below correlate to the Actor ID of each Orb Cache. + +loc_orbCacheTable = { + 10344: "Orb Cache in Sandover Village", + 10369: "Orb Cache in Forbidden Jungle", + 11072: "Orb Cache on Misty Island", + 12634: "Orb Cache near Flut Flut Egg", + 12635: "Orb Cache near Pelican's Nest", + 10945: "Orb Cache in Rock Village", + 14507: "Orb Cache in First Sunken Chamber", + 14838: "Orb Cache in Second Sunken Chamber", + 23348: "Orb Cache in Snowy Fort (1)", + 23349: "Orb Cache in Snowy Fort (2)", + 23350: "Orb Cache in Snowy Fort (3)", + 24038: "Orb Cache at End of Blast Furnace", + 24039: "Orb Cache at End of Launch Pad Room", + 24040: "Orb Cache at Start of Launch Pad Room", +} diff --git a/worlds/jakanddaxter/locs/orb_locations.py b/worlds/jakanddaxter/locs/orb_locations.py new file mode 100644 index 000000000000..2b69465a98fa --- /dev/null +++ b/worlds/jakanddaxter/locs/orb_locations.py @@ -0,0 +1,123 @@ +from ..game_id import jak1_id +from ..levels import level_table_with_global + +# Precursor Orbs are not necessarily given ID's by the game. + +# Of the 2000 orbs (or "money") you can pick up, only 1233 are standalone ones you find in the overworld. +# We can identify them by Actor ID's, which run from 549 to 24433. Other actors reside in this range, +# so like Power Cells these are not ordered, nor contiguous, nor exclusively orbs. + +# In fact, other ID's in this range belong to actors that spawn orbs when they are activated or when they die, +# like steel crates, orb caches, Spider Cave gnawers, or jumping on the Plant Boss's head. These orbs that spawn +# from parent actors DON'T have an Actor ID themselves - the parent object keeps track of how many of its orbs +# have been picked up. + +# In order to deal with this mess, we're creating 2 extra functions that will create and identify Orb Locations for us. +# These will be compatible with both Global Orbsanity and Per-Level Orbsanity, allowing us to create any +# number of Locations depending on the bundle size chosen, while also guaranteeing that each has a unique address. + +# We can use 2^15 to offset them from Orb Caches, because Orb Cache ID's max out at (jak1_id + 17792). +orb_offset = 32768 + + +# These helper functions do all the math required to get information about each +# precursor orb and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + return jak1_id + orb_offset + game_id # Add the offsets and the orb Actor ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + return ap_id - jak1_id - orb_offset # Reverse process, subtract the offsets. + + +# Use this when the Memory Reader learns that you checked a specific bundle. +# Offset each level by 200 orbs (max number in any level), {200, 400, ...} +# then divide orb count by bundle size, {201, 202, ...} +# then subtract 1. {200, 201, ...} +def find_address(level_index: int, orb_count: int, bundle_size: int) -> int: + result = (level_index * 200) + (orb_count // bundle_size) - 1 + return result + + +# Use this when assigning addresses during region generation. +def create_address(level_index: int, bundle_index: int) -> int: + result = (level_index * 200) + bundle_index + return result + + +# What follows is our methods of generating all the name/ID pairs for location_name_to_id. +# Remember that not every bundle will be used in the actual seed, we just need a static map of strings to ints. +locGR_orbBundleTable = {create_address(level_table_with_global["Geyser Rock"]["level_index"], index): + f"Geyser Rock Orb Bundle {index + 1}" + for index in range(level_table_with_global["Geyser Rock"]["orbs"])} +locSV_orbBundleTable = {create_address(level_table_with_global["Sandover Village"]["level_index"], index): + f"Sandover Village Orb Bundle {index + 1}" + for index in range(level_table_with_global["Sandover Village"]["orbs"])} +locFJ_orbBundleTable = {create_address(level_table_with_global["Forbidden Jungle"]["level_index"], index): + f"Forbidden Jungle Orb Bundle {index + 1}" + for index in range(level_table_with_global["Forbidden Jungle"]["orbs"])} +locSB_orbBundleTable = {create_address(level_table_with_global["Sentinel Beach"]["level_index"], index): + f"Sentinel Beach Orb Bundle {index + 1}" + for index in range(level_table_with_global["Sentinel Beach"]["orbs"])} +locMI_orbBundleTable = {create_address(level_table_with_global["Misty Island"]["level_index"], index): + f"Misty Island Orb Bundle {index + 1}" + for index in range(level_table_with_global["Misty Island"]["orbs"])} +locFC_orbBundleTable = {create_address(level_table_with_global["Fire Canyon"]["level_index"], index): + f"Fire Canyon Orb Bundle {index + 1}" + for index in range(level_table_with_global["Fire Canyon"]["orbs"])} +locRV_orbBundleTable = {create_address(level_table_with_global["Rock Village"]["level_index"], index): + f"Rock Village Orb Bundle {index + 1}" + for index in range(level_table_with_global["Rock Village"]["orbs"])} +locLPC_orbBundleTable = {create_address(level_table_with_global["Lost Precursor City"]["level_index"], index): + f"Lost Precursor City Orb Bundle {index + 1}" + for index in range(level_table_with_global["Lost Precursor City"]["orbs"])} +locBS_orbBundleTable = {create_address(level_table_with_global["Boggy Swamp"]["level_index"], index): + f"Boggy Swamp Orb Bundle {index + 1}" + for index in range(level_table_with_global["Boggy Swamp"]["orbs"])} +locPB_orbBundleTable = {create_address(level_table_with_global["Precursor Basin"]["level_index"], index): + f"Precursor Basin Orb Bundle {index + 1}" + for index in range(level_table_with_global["Precursor Basin"]["orbs"])} +locMP_orbBundleTable = {create_address(level_table_with_global["Mountain Pass"]["level_index"], index): + f"Mountain Pass Orb Bundle {index + 1}" + for index in range(level_table_with_global["Mountain Pass"]["orbs"])} +locVC_orbBundleTable = {create_address(level_table_with_global["Volcanic Crater"]["level_index"], index): + f"Volcanic Crater Orb Bundle {index + 1}" + for index in range(level_table_with_global["Volcanic Crater"]["orbs"])} +locSM_orbBundleTable = {create_address(level_table_with_global["Snowy Mountain"]["level_index"], index): + f"Snowy Mountain Orb Bundle {index + 1}" + for index in range(level_table_with_global["Snowy Mountain"]["orbs"])} +locSC_orbBundleTable = {create_address(level_table_with_global["Spider Cave"]["level_index"], index): + f"Spider Cave Orb Bundle {index + 1}" + for index in range(level_table_with_global["Spider Cave"]["orbs"])} +locLT_orbBundleTable = {create_address(level_table_with_global["Lava Tube"]["level_index"], index): + f"Lava Tube Orb Bundle {index + 1}" + for index in range(level_table_with_global["Lava Tube"]["orbs"])} +locGMC_orbBundleTable = {create_address(level_table_with_global["Gol and Maia's Citadel"]["level_index"], index): + f"Gol and Maia's Citadel Orb Bundle {index + 1}" + for index in range(level_table_with_global["Gol and Maia's Citadel"]["orbs"])} +locGlobal_orbBundleTable = {create_address(level_table_with_global[""]["level_index"], index): + f"Orb Bundle {index + 1}" + for index in range(level_table_with_global[""]["orbs"])} +loc_orbBundleTable = { + **locGR_orbBundleTable, + **locSV_orbBundleTable, + **locSB_orbBundleTable, + **locFJ_orbBundleTable, + **locMI_orbBundleTable, + **locFC_orbBundleTable, + **locRV_orbBundleTable, + **locLPC_orbBundleTable, + **locBS_orbBundleTable, + **locPB_orbBundleTable, + **locMP_orbBundleTable, + **locVC_orbBundleTable, + **locSM_orbBundleTable, + **locSC_orbBundleTable, + **locLT_orbBundleTable, + **locGMC_orbBundleTable, + **locGlobal_orbBundleTable +} diff --git a/worlds/jakanddaxter/locs/scout_locations.py b/worlds/jakanddaxter/locs/scout_locations.py new file mode 100644 index 000000000000..892bb973e054 --- /dev/null +++ b/worlds/jakanddaxter/locs/scout_locations.py @@ -0,0 +1,230 @@ +from ..game_id import jak1_id + +# Scout Flies are given ID's between 0 and 393311 by the game, explanation below. + +# Each fly (or "buzzer") is given a unique 32-bit number broken into two 16-bit numbers. +# The lower 16 bits are the game-task ID of the power cell the fly corresponds to. +# The higher 16 bits are the index of the fly itself, from 000 (0) to 110 (6). + +# Ex: The final scout fly on Geyser Rock +# 0000000000000110 0000000001011111 +# ( Index: 6 ) ( Cell: 95 ) + +# Because flies are indexed from 0, each 0th fly's full ID == the power cell's ID. +# So we need to offset all of their ID's in order for Archipelago to separate them +# from their power cells. We can use 1024 (2^10) for this purpose, because scout flies +# only ever need 10 bits to identify themselves (3 for the index, 7 for the cell ID). + +# We're also going to compress the ID by bit-shifting the fly index down to lower bits, +# keeping the scout fly ID range to a smaller set of numbers (1000 -> 2000, instead of 1 -> 400000). +fly_offset = 1024 + + +# These helper functions do all the math required to get information about each +# scout fly and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + cell_id = get_cell_id(game_id) # Get the power cell ID from the lowest 7 bits. + buzzer_index = (game_id - cell_id) >> 9 # Get the index, bit shift it down 9 places. + compressed_id = fly_offset + buzzer_index + cell_id # Add the offset, the bit-shifted index, and the cell ID. + return jak1_id + compressed_id # Last thing: add the game's ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + compressed_id = ap_id - jak1_id # Reverse process. First thing: subtract the game's ID. + cell_id = get_cell_id(compressed_id) # Get the power cell ID from the lowest 7 bits. + buzzer_index = compressed_id - fly_offset - cell_id # Get the bit-shifted index. + return (buzzer_index << 9) + cell_id # Return the index to its normal place, re-add the cell ID. + + +# Get the power cell ID from the lowest 7 bits. +# Make sure to use this function ONLY when the input argument does NOT include jak1_id, +# because that number may flip some of the bottom 7 bits, and that will throw off this bit mask. +def get_cell_id(buzzer_id: int) -> int: + if buzzer_id >= jak1_id: + raise ValueError(f"Attempted to bit mask {buzzer_id}, but it is polluted by the game's ID {jak1_id}.") + return buzzer_id & 0b1111111 + + +# The ID's you see below correspond directly to that fly's 32-bit ID in the game. +# I used the decompiled entity JSON's and Jak's X/Y coordinates in Debug Mode +# to determine which box ID is which location. + +# Geyser Rock +locGR_scoutTable = { + 95: "GR: Scout Fly On Ground, Front", + 327775: "GR: Scout Fly On Ground, Back", + 393311: "GR: Scout Fly On Left Ledge", + 65631: "GR: Scout Fly On Right Ledge", + 262239: "GR: Scout Fly On Middle Ledge, Left", + 131167: "GR: Scout Fly On Middle Ledge, Right", + 196703: "GR: Scout Fly On Top Ledge" +} + +# Sandover Village +locSV_scoutTable = { + 262219: "SV: Scout Fly In Fisherman's House", + 327755: "SV: Scout Fly In Mayor's House", + 131147: "SV: Scout Fly Under Bridge", + 65611: "SV: Scout Fly Behind Sculptor's House", + 75: "SV: Scout Fly Overlooking Farmer's House", + 393291: "SV: Scout Fly Near Oracle", + 196683: "SV: Scout Fly In Farmer's House" +} + +# Forbidden Jungle +locFJ_scoutTable = { + 393223: "FJ: Scout Fly At End Of Path", + 262151: "FJ: Scout Fly On Spiral Of Stumps", + 7: "FJ: Scout Fly Near Dark Eco Boxes", + 196615: "FJ: Scout Fly At End Of River", + 131079: "FJ: Scout Fly Behind Lurker Machine", + 327687: "FJ: Scout Fly Around Temple Spire", + 65543: "FJ: Scout Fly On Top Of Temple" +} + +# Sentinel Beach +locSB_scoutTable = { + 327700: "SB: Scout Fly At Entrance", + 20: "SB: Scout Fly Overlooking Locked Boxes", + 65556: "SB: Scout Fly On Path To Flut Flut", + 262164: "SB: Scout Fly Under Wood Pillars", + 196628: "SB: Scout Fly Overlooking Blue Eco Vent", + 131092: "SB: Scout Fly Overlooking Green Eco Vents", + 393236: "SB: Scout Fly On Sentinel" +} + +# Misty Island +locMI_scoutTable = { + 327708: "MI: Scout Fly Overlooking Entrance", + 65564: "MI: Scout Fly On Ledge Near Arena Entrance", + 262172: "MI: Scout Fly Near Arena Door", + 28: "MI: Scout Fly On Ledge Near Arena Exit", + 131100: "MI: Scout Fly On Ship", + 196636: "MI: Scout Fly On Barrel Ramps", + 393244: "MI: Scout Fly On Zoomer Ramps" +} + +# Fire Canyon +locFC_scoutTable = { + 393284: "FC: Scout Fly 1", + 68: "FC: Scout Fly 2", + 65604: "FC: Scout Fly 3", + 196676: "FC: Scout Fly 4", + 131140: "FC: Scout Fly 5", + 262212: "FC: Scout Fly 6", + 327748: "FC: Scout Fly 7" +} + +# Rock Village +locRV_scoutTable = { + 76: "RV: Scout Fly Behind Sage's Hut", + 131148: "RV: Scout Fly Near Waterfall", + 196684: "RV: Scout Fly Behind Geologist", + 262220: "RV: Scout Fly Behind Fiery Boulder", + 65612: "RV: Scout Fly On Dock", + 327756: "RV: Scout Fly At Pontoon Bridge", + 393292: "RV: Scout Fly At Boggy Swamp Entrance" +} + +# Precursor Basin +locPB_scoutTable = { + 196665: "PB: Scout Fly Overlooking Entrance", + 393273: "PB: Scout Fly Near Mole Hole", + 131129: "PB: Scout Fly At Purple Ring Start", + 65593: "PB: Scout Fly Near Dark Eco Plant, Above", + 57: "PB: Scout Fly At Blue Ring Start", + 262201: "PB: Scout Fly Before Big Jump", + 327737: "PB: Scout Fly Near Dark Eco Plant, Below" +} + +# Lost Precursor City +locLPC_scoutTable = { + 262193: "LPC: Scout Fly First Room", + 131121: "LPC: Scout Fly Before Second Room", + 393265: "LPC: Scout Fly Second Room, Near Orb Vent", + 196657: "LPC: Scout Fly Second Room, On Path To Cell", + 49: "LPC: Scout Fly Second Room, Green Pipe", # Sunken Pipe Game, special cases. See `got-buzzer?` + 65585: "LPC: Scout Fly Second Room, Blue Pipe", # Sunken Pipe Game, special cases. See `got-buzzer?` + 327729: "LPC: Scout Fly Across Steam Vents" +} + +# Boggy Swamp +locBS_scoutTable = { + 43: "BS: Scout Fly Near Entrance", + 393259: "BS: Scout Fly Over First Jump Pad", + 65579: "BS: Scout Fly Over Second Jump Pad", + 262187: "BS: Scout Fly Across Black Swamp", + 327723: "BS: Scout Fly Overlooking Flut Flut", + 131115: "BS: Scout Fly On Flut Flut Platforms", + 196651: "BS: Scout Fly In Field Of Boxes" +} + +# Mountain Pass +locMP_scoutTable = { + 88: "MP: Scout Fly 1", + 65624: "MP: Scout Fly 2", + 131160: "MP: Scout Fly 3", + 196696: "MP: Scout Fly 4", + 262232: "MP: Scout Fly 5", + 327768: "MP: Scout Fly 6", + 393304: "MP: Scout Fly 7" +} + +# Volcanic Crater +locVC_scoutTable = { + 262221: "VC: Scout Fly In Miner's Cave", + 393293: "VC: Scout Fly Near Oracle", + 196685: "VC: Scout Fly On Stone Platforms", + 131149: "VC: Scout Fly Near Lava Tube", + 77: "VC: Scout Fly At Minecart Junction", + 65613: "VC: Scout Fly Near Spider Cave", + 327757: "VC: Scout Fly Near Mountain Pass" +} + +# Spider Cave +locSC_scoutTable = { + 327765: "SC: Scout Fly Near Dark Cave Entrance", + 262229: "SC: Scout Fly In Dark Cave", + 393301: "SC: Scout Fly Main Cave, Overlooking Entrance", + 196693: "SC: Scout Fly Main Cave, Near Dark Crystal", + 131157: "SC: Scout Fly Main Cave, Near Robot Cave Entrance", + 85: "SC: Scout Fly Robot Cave, At Bottom Level", + 65621: "SC: Scout Fly Robot Cave, At Top Level", +} + +# Snowy Mountain +locSM_scoutTable = { + 65: "SM: Scout Fly Near Entrance", + 327745: "SM: Scout Fly Near Frozen Box", + 65601: "SM: Scout Fly Near Yellow Eco Switch", + 131137: "SM: Scout Fly On Cliff near Flut Flut", + 393281: "SM: Scout Fly Under Bridge To Fort", + 196673: "SM: Scout Fly On Top Of Fort Tower", + 262209: "SM: Scout Fly On Top Of Fort" +} + +# Lava Tube +locLT_scoutTable = { + 90: "LT: Scout Fly 1", + 65626: "LT: Scout Fly 2", + 327770: "LT: Scout Fly 3", + 262234: "LT: Scout Fly 4", + 131162: "LT: Scout Fly 5", + 196698: "LT: Scout Fly 6", + 393306: "LT: Scout Fly 7" +} + +# Gol and Maias Citadel +locGMC_scoutTable = { + 91: "GMC: Scout Fly At Entrance", + 65627: "GMC: Scout Fly Main Room, Left of Robot", + 196699: "GMC: Scout Fly Main Room, Right of Robot", + 262235: "GMC: Scout Fly Before Jumping Lurkers", + 393307: "GMC: Scout Fly At Blast Furnace", + 131163: "GMC: Scout Fly At Launch Pad Room", + 327771: "GMC: Scout Fly Top Of Rotating Tower" +} diff --git a/worlds/jakanddaxter/locs/special_locations.py b/worlds/jakanddaxter/locs/special_locations.py new file mode 100644 index 000000000000..95081eb2e3e9 --- /dev/null +++ b/worlds/jakanddaxter/locs/special_locations.py @@ -0,0 +1,51 @@ +from ..game_id import jak1_id + +# These are special checks that the game normally does not track. They are not game entities and thus +# don't have game ID's. + +# Normally, for example, completing the fishing minigame is what gives you access to the +# fisherman's boat to get to Misty Island. The game treats completion of the fishing minigame as well as the +# power cell you receive as one and the same. The fisherman only gives you one item, a power cell. + +# We're significantly altering the game logic here to decouple these concepts. First, completing the fishing minigame +# now counts as 2 Location checks. Second, the fisherman should give you a power cell (a generic item) as well as +# the "keys" to his boat (a special item). It is the "keys" that we are defining in this file, and the respective +# Item representing those keys will be defined in Items.py. These aren't real in the sense that +# they have a model and texture, they are just the logical representation of the boat unlock. + +# We can use 2^11 to offset these from scout flies, just like we offset scout flies from power cells +# by 2^10. Even with the high-16 reminder bits, scout flies don't exceed an ID of (jak1_id + 1887). +special_offset = 2048 + + +# These helper functions do all the math required to get information about each +# special check and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + return jak1_id + special_offset + game_id # Add the offsets and the orb Actor ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + return ap_id - jak1_id - special_offset # Reverse process, subtract the offsets. + + +# The ID's you see below correlate to each of their respective game-tasks, even though they are separate. +# This makes it easier for the new game logic to know what relates to what. I hope. God I hope. + +loc_specialTable = { + 5: "Fisherman's Boat", + 4: "Jungle Elevator", + 2: "Blue Eco Switch", + 17: "Flut Flut", + 33: "Warrior's Pontoons", + 105: "Snowy Mountain Gondola", + 60: "Yellow Eco Switch", + 63: "Snowy Fort Gate", + 71: "Freed The Blue Sage", + 72: "Freed The Red Sage", + 73: "Freed The Yellow Sage", + 70: "Freed The Green Sage", +} diff --git a/worlds/jakanddaxter/options.py b/worlds/jakanddaxter/options.py new file mode 100644 index 000000000000..bd007e264af8 --- /dev/null +++ b/worlds/jakanddaxter/options.py @@ -0,0 +1,262 @@ +from dataclasses import dataclass +from functools import cached_property +from Options import PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Range, DefaultOnToggle, OptionCounter +from .items import trap_item_table + + +class StaticGetter: + def __init__(self, func): + self.fget = func + + def __get__(self, instance, owner): + return self.fget(owner) + + +@StaticGetter +def determine_range_end(cls) -> int: + from . import JakAndDaxterWorld + enforce_friendly_options = JakAndDaxterWorld.settings.enforce_friendly_options + return cls.friendly_maximum if enforce_friendly_options else cls.absolute_maximum + + +class EnableMoveRandomizer(Toggle): + """Include movement options as items in the randomizer. Until you find his other moves, Jak is limited to + running, swimming, single-jumping, and shooting yellow eco through his goggles. + + This adds 11 items to the pool.""" + display_name = "Enable Move Randomizer" + + +class EnableOrbsanity(Choice): + """Include bundles of Precursor Orbs as checks. Every time you collect the chosen number of orbs, you will trigger + another check. + + Per Level: bundles are for each level in the game. + Global: bundles carry over level to level. + + This adds a number of Items and Locations to the pool inversely proportional to the size of the bundle. + For example, if your bundle size is 20 orbs, you will add 100 items to the pool. If your bundle size is 250 orbs, + you will add 8 items to the pool.""" + display_name = "Enable Orbsanity" + option_off = 0 + option_per_level = 1 + option_global = 2 + default = 0 + + +class GlobalOrbsanityBundleSize(Choice): + """The orb bundle size for Global Orbsanity. This only applies if "Enable Orbsanity" is set to "Global." + There are 2000 orbs in the game, so your bundle size must be a factor of 2000. + + Multiplayer Minimum: 10 + Multiplayer Maximum: 200""" + display_name = "Global Orbsanity Bundle Size" + option_1_orb = 1 + option_2_orbs = 2 + option_4_orbs = 4 + option_5_orbs = 5 + option_8_orbs = 8 + option_10_orbs = 10 + option_16_orbs = 16 + option_20_orbs = 20 + option_25_orbs = 25 + option_40_orbs = 40 + option_50_orbs = 50 + option_80_orbs = 80 + option_100_orbs = 100 + option_125_orbs = 125 + option_200_orbs = 200 + option_250_orbs = 250 + option_400_orbs = 400 + option_500_orbs = 500 + option_1000_orbs = 1000 + option_2000_orbs = 2000 + friendly_minimum = 10 + friendly_maximum = 200 + default = 20 + + +class PerLevelOrbsanityBundleSize(Choice): + """The orb bundle size for Per Level Orbsanity. This only applies if "Enable Orbsanity" is set to "Per Level." + There are 50, 150, or 200 orbs per level, so your bundle size must be a factor of 50. + + Multiplayer Minimum: 10""" + display_name = "Per Level Orbsanity Bundle Size" + option_1_orb = 1 + option_2_orbs = 2 + option_5_orbs = 5 + option_10_orbs = 10 + option_25_orbs = 25 + option_50_orbs = 50 + friendly_minimum = 10 + default = 25 + + +class FireCanyonCellCount(Range): + """The number of power cells you need to cross Fire Canyon. This value is restricted to a safe maximum value to + ensure valid singleplayer games and non-disruptive multiplayer games, but the host can remove this restriction by + turning off enforce_friendly_options in host.yaml.""" + display_name = "Fire Canyon Cell Count" + friendly_maximum = 30 + absolute_maximum = 100 + range_start = 0 + range_end = determine_range_end + default = 20 + + +class MountainPassCellCount(Range): + """The number of power cells you need to reach Klaww and cross Mountain Pass. This value is restricted to a safe + maximum value to ensure valid singleplayer games and non-disruptive multiplayer games, but the host can + remove this restriction by turning off enforce_friendly_options in host.yaml.""" + display_name = "Mountain Pass Cell Count" + friendly_maximum = 60 + absolute_maximum = 100 + range_start = 0 + range_end = determine_range_end + default = 45 + + +class LavaTubeCellCount(Range): + """The number of power cells you need to cross Lava Tube. This value is restricted to a safe maximum value to + ensure valid singleplayer games and non-disruptive multiplayer games, but the host can remove this restriction by + turning off enforce_friendly_options in host.yaml.""" + display_name = "Lava Tube Cell Count" + friendly_maximum = 90 + absolute_maximum = 100 + range_start = 0 + range_end = determine_range_end + default = 72 + + +class EnableOrderedCellCounts(DefaultOnToggle): + """Reorder the Cell Count requirements for vehicle sections to be in ascending order. + + For example, if Fire Canyon Cell Count, Mountain Pass Cell Count, and Lava Tube Cell Count are 60, 30, and 40 + respectively, they will be reordered to 30, 40, and 60.""" + display_name = "Enable Ordered Cell Counts" + + +class RequirePunchForKlaww(DefaultOnToggle): + """Force the Punch move to come before Klaww. Disabling this setting may require Jak to fight Klaww + and Gol and Maia by shooting yellow eco through his goggles. This only applies if "Enable Move Randomizer" is ON.""" + display_name = "Require Punch For Klaww" + + +# 222 is the absolute maximum because there are 9 citizen trades and 2000 orbs to trade (2000/9 = 222). +class CitizenOrbTradeAmount(Range): + """The number of orbs you need to trade to citizens for a power cell (Mayor, Uncle, etc.). + + Along with Oracle Orb Trade Amount, this setting cannot exceed the total number of orbs in the game (2000). + The equation to determine the total number of trade orbs is (9 * Citizen Trades) + (6 * Oracle Trades). + + This value is restricted to a safe maximum value to ensure valid singleplayer games and non-disruptive + multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options in host.yaml.""" + display_name = "Citizen Orb Trade Amount" + friendly_maximum = 120 + absolute_maximum = 222 + range_start = 0 + range_end = determine_range_end + default = 90 + + +# 333 is the absolute maximum because there are 6 oracle trades and 2000 orbs to trade (2000/6 = 333). +class OracleOrbTradeAmount(Range): + """The number of orbs you need to trade to the Oracles for a power cell. + + Along with Citizen Orb Trade Amount, this setting cannot exceed the total number of orbs in the game (2000). + The equation to determine the total number of trade orbs is (9 * Citizen Trades) + (6 * Oracle Trades). + + This value is restricted to a safe maximum value to ensure valid singleplayer games and non-disruptive + multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options in host.yaml.""" + display_name = "Oracle Orb Trade Amount" + friendly_maximum = 150 + absolute_maximum = 333 + range_start = 0 + range_end = determine_range_end + default = 120 + + +class FillerPowerCellsReplacedWithTraps(Range): + """ + The number of filler power cells that will be replaced with traps. This does not affect the number of progression + power cells. + + If this value is greater than the number of filler power cells, then they will all be replaced with traps. + """ + display_name = "Filler Power Cells Replaced With Traps" + range_start = 0 + range_end = 100 + default = 0 + + +class FillerOrbBundlesReplacedWithTraps(Range): + """ + The number of filler orb bundles that will be replaced with traps. This does not affect the number of progression + orb bundles. This only applies if "Enable Orbsanity" is set to "Per Level" or "Global." + + If this value is greater than the number of filler orb bundles, then they will all be replaced with traps. + """ + display_name = "Filler Orb Bundles Replaced With Traps" + range_start = 0 + range_end = 2000 + default = 0 + + +class TrapEffectDuration(Range): + """ + The length of time, in seconds, that a trap effect lasts. + """ + display_name = "Trap Effect Duration" + range_start = 5 + range_end = 60 + default = 30 + + +class TrapWeights(OptionCounter): + """ + The list of traps and corresponding weights that will be randomly added to the item pool. A trap with weight 10 is + twice as likely to appear as a trap with weight 5. Set a weight to 0 to prevent that trap from appearing altogether. + If all weights are 0, no traps are created, overriding the values of "Filler * Replaced With Traps." + """ + display_name = "Trap Weights" + min = 0 + default = {trap: 1 for trap in trap_item_table.values()} + valid_keys = sorted({trap for trap in trap_item_table.values()}) + + @cached_property + def weights_pair(self) -> tuple[list[str], list[int]]: + return list(self.value.keys()), list(self.value.values()) + + +class CompletionCondition(Choice): + """Set the goal for completing the game.""" + display_name = "Completion Condition" + option_cross_fire_canyon = 69 + option_cross_mountain_pass = 87 + option_cross_lava_tube = 89 + option_defeat_dark_eco_plant = 6 + option_defeat_klaww = 86 + option_defeat_gol_and_maia = 112 + option_open_100_cell_door = 116 + default = 112 + + +@dataclass +class JakAndDaxterOptions(PerGameCommonOptions): + enable_move_randomizer: EnableMoveRandomizer + enable_orbsanity: EnableOrbsanity + global_orbsanity_bundle_size: GlobalOrbsanityBundleSize + level_orbsanity_bundle_size: PerLevelOrbsanityBundleSize + fire_canyon_cell_count: FireCanyonCellCount + mountain_pass_cell_count: MountainPassCellCount + lava_tube_cell_count: LavaTubeCellCount + enable_ordered_cell_counts: EnableOrderedCellCounts + require_punch_for_klaww: RequirePunchForKlaww + citizen_orb_trade_amount: CitizenOrbTradeAmount + oracle_orb_trade_amount: OracleOrbTradeAmount + filler_power_cells_replaced_with_traps: FillerPowerCellsReplacedWithTraps + filler_orb_bundles_replaced_with_traps: FillerOrbBundlesReplacedWithTraps + trap_effect_duration: TrapEffectDuration + trap_weights: TrapWeights + jak_completion_condition: CompletionCondition + start_inventory_from_pool: StartInventoryPool diff --git a/worlds/jakanddaxter/regions.py b/worlds/jakanddaxter/regions.py new file mode 100644 index 000000000000..8447f72e8ed0 --- /dev/null +++ b/worlds/jakanddaxter/regions.py @@ -0,0 +1,132 @@ +import typing +from Options import OptionError +from .items import item_table +from .options import EnableOrbsanity, CompletionCondition +from .rules import can_reach_orbs_global +from .locs import cell_locations as cells, scout_locations as scouts +from .regs import (geyser_rock_regions as geyser_rock, + sandover_village_regions as sandover_village, + forbidden_jungle_regions as forbidden_jungle, + sentinel_beach_regions as sentinel_beach, + misty_island_regions as misty_island, + fire_canyon_regions as fire_canyon, + rock_village_regions as rock_village, + precursor_basin_regions as precursor_basin, + lost_precursor_city_regions as lost_precursor_city, + boggy_swamp_regions as boggy_swamp, + mountain_pass_regions as mountain_pass, + volcanic_crater_regions as volcanic_crater, + spider_cave_regions as spider_cave, + snowy_mountain_regions as snowy_mountain, + lava_tube_regions as lava_tube, + gol_and_maias_citadel_regions as gol_and_maias_citadel) +from .regs.region_base import JakAndDaxterRegion + +if typing.TYPE_CHECKING: + from . import JakAndDaxterWorld + + +def create_regions(world: "JakAndDaxterWorld"): + multiworld = world.multiworld + options = world.options + player = world.player + + # Always start with Menu. + menu = JakAndDaxterRegion("Menu", player, multiworld) + multiworld.regions.append(menu) + + # Build the special "Free 7 Scout Flies" Region. This is a virtual region always accessible to Menu. + # The Locations within are automatically checked when you receive the 7th scout fly for the corresponding cell. + free7 = JakAndDaxterRegion("'Free 7 Scout Flies' Power Cells", player, multiworld) + free7.add_cell_locations(cells.loc7SF_cellTable.keys()) + for scout_fly_cell in free7.locations: + + # Translate from Cell AP ID to Scout AP ID using game ID as an intermediary. + scout_fly_id = scouts.to_ap_id(cells.to_game_id(typing.cast(int, scout_fly_cell.address))) + scout_fly_cell.access_rule = lambda state, flies=scout_fly_id: state.has(item_table[flies], player, 7) + multiworld.regions.append(free7) + menu.connect(free7) + + # If Global Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Menu. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_global: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld) + + bundle_count = 2000 // world.orb_bundle_size + for bundle_index in range(bundle_count): + + # Unlike Per-Level Orbsanity, Global Orbsanity Locations always have a level_index of 16. + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(16, + bundle_index, + access_rule=lambda state, orb_amount=amount: + can_reach_orbs_global(state, player, world, orb_amount)) + multiworld.regions.append(orbs) + menu.connect(orbs) + + # Build all regions. Include their intra-connecting Rules, their Locations, and their Location access rules. + gr = geyser_rock.build_regions("Geyser Rock", world) + sv = sandover_village.build_regions("Sandover Village", world) + fj, fjp = forbidden_jungle.build_regions("Forbidden Jungle", world) + sb = sentinel_beach.build_regions("Sentinel Beach", world) + mi = misty_island.build_regions("Misty Island", world) + fc = fire_canyon.build_regions("Fire Canyon", world) + rv, rvp, rvc = rock_village.build_regions("Rock Village", world) + pb = precursor_basin.build_regions("Precursor Basin", world) + lpc = lost_precursor_city.build_regions("Lost Precursor City", world) + bs = boggy_swamp.build_regions("Boggy Swamp", world) + mp, mpr = mountain_pass.build_regions("Mountain Pass", world) + vc = volcanic_crater.build_regions("Volcanic Crater", world) + sc = spider_cave.build_regions("Spider Cave", world) + sm = snowy_mountain.build_regions("Snowy Mountain", world) + lt = lava_tube.build_regions("Lava Tube", world) + gmc, fb, fd = gol_and_maias_citadel.build_regions("Gol and Maia's Citadel", world) + + # Configurable counts of cells for connector levels. + fc_count = options.fire_canyon_cell_count.value + mp_count = options.mountain_pass_cell_count.value + lt_count = options.lava_tube_cell_count.value + + # Define the interconnecting rules. + menu.connect(gr) + gr.connect(sv) # Geyser Rock modified to let you leave at any time. + sv.connect(fj) + sv.connect(sb) + sv.connect(mi, rule=lambda state: state.has("Fisherman's Boat", player)) + sv.connect(fc, rule=lambda state: state.has("Power Cell", player, fc_count)) # Normally 20. + fc.connect(rv) + rv.connect(pb) + rv.connect(lpc) + rvp.connect(bs) # rv->rvp/rvc connections defined internally by RockVillageRegions. + rvc.connect(mp, rule=lambda state: state.has("Power Cell", player, mp_count)) # Normally 45. + mpr.connect(vc) # mp->mpr connection defined internally by MountainPassRegions. + vc.connect(sc) + vc.connect(sm, rule=lambda state: state.has("Snowy Mountain Gondola", player)) + vc.connect(lt, rule=lambda state: state.has("Power Cell", player, lt_count)) # Normally 72. + lt.connect(gmc) # gmc->fb connection defined internally by GolAndMaiasCitadelRegions. + + # Set the completion condition. + if options.jak_completion_condition == CompletionCondition.option_cross_fire_canyon: + multiworld.completion_condition[player] = lambda state: state.can_reach(rv, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_cross_mountain_pass: + multiworld.completion_condition[player] = lambda state: state.can_reach(vc, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_cross_lava_tube: + multiworld.completion_condition[player] = lambda state: state.can_reach(gmc, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_defeat_dark_eco_plant: + multiworld.completion_condition[player] = lambda state: state.can_reach(fjp, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_defeat_klaww: + multiworld.completion_condition[player] = lambda state: state.can_reach(mp, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_defeat_gol_and_maia: + multiworld.completion_condition[player] = lambda state: state.can_reach(fb, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_open_100_cell_door: + multiworld.completion_condition[player] = lambda state: state.can_reach(fd, "Region", player) + + else: + raise OptionError(f"{world.player_name}: Unknown completion goal ID " + f"({options.jak_completion_condition.value}).") diff --git a/worlds/jakanddaxter/regs/__init__.py b/worlds/jakanddaxter/regs/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/regs/boggy_swamp_regions.py b/worlds/jakanddaxter/regs/boggy_swamp_regions.py new file mode 100644 index 000000000000..a548f2e41069 --- /dev/null +++ b/worlds/jakanddaxter/regs/boggy_swamp_regions.py @@ -0,0 +1,174 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # This level is full of short-medium gaps that cannot be crossed by single jump alone. + # These helper functions list out the moves that can cross all these gaps (painting with a broad brush but...) + def can_jump_farther(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + def can_jump_higher(state: CollectionState, p: int) -> bool: + return (state.has("Double Jump", p) + or state.has_all(("Crouch", "Crouch Jump"), p) + or state.has_all(("Crouch", "Crouch Uppercut"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + # Orb crates and fly box in this area can be gotten with yellow eco and goggles. + # Start with the first yellow eco cluster near first_bats and work your way backward toward the entrance. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 23) + main_area.add_fly_locations([43]) + + # Includes 4 orbs collectable with the blue eco vent. + first_bats = JakAndDaxterRegion("First Bats Area", player, multiworld, level_name, 4) + + first_jump_pad = JakAndDaxterRegion("First Jump Pad", player, multiworld, level_name, 0) + first_jump_pad.add_fly_locations([393259]) + + # The tethers in this level are all out of order... a casual playthrough has the following order for the cell ID's: + # 42, 39, 40, 41. So that is the order we're calling "first, second, third, fourth". + + # First tether cell is collectable with yellow eco and goggles. + first_tether = JakAndDaxterRegion("First Tether", player, multiworld, level_name, 7) + first_tether.add_cell_locations([42]) + + # This rat colony has 3 orbs on top of it, requires special movement. + first_tether_rat_colony = JakAndDaxterRegion("First Tether Rat Colony", player, multiworld, level_name, 3) + + # If quick enough, combat not required. + second_jump_pad = JakAndDaxterRegion("Second Jump Pad", player, multiworld, level_name, 0) + second_jump_pad.add_fly_locations([65579]) + + first_pole_course = JakAndDaxterRegion("First Pole Course", player, multiworld, level_name, 28) + + # You can break this tether with a yellow eco vent and goggles, + # but you can't reach the platform unless you can jump high. + second_tether = JakAndDaxterRegion("Second Tether", player, multiworld, level_name, 0) + second_tether.add_cell_locations([39], access_rule=lambda state: can_jump_higher(state, player)) + + # Fly and orbs are collectable with nearby blue eco cluster. + second_bats = JakAndDaxterRegion("Second Bats Area", player, multiworld, level_name, 27) + second_bats.add_fly_locations([262187], access_rule=lambda state: can_jump_farther(state, player)) + + third_jump_pad = JakAndDaxterRegion("Third Jump Pad (Arena)", player, multiworld, level_name, 0) + third_jump_pad.add_cell_locations([38], access_rule=lambda state: can_fight(state, player)) + + # The platform for the third tether might look high, but you can get a boost from the yellow eco vent. + fourth_jump_pad = JakAndDaxterRegion("Fourth Jump Pad (Third Tether)", player, multiworld, level_name, 9) + fourth_jump_pad.add_cell_locations([40]) + + # Orbs collectable here with yellow eco and goggles. + flut_flut_pad = JakAndDaxterRegion("Flut Flut Pad", player, multiworld, level_name, 36) + + flut_flut_course = JakAndDaxterRegion("Flut Flut Course", player, multiworld, level_name, 23) + flut_flut_course.add_cell_locations([37]) + flut_flut_course.add_fly_locations([327723, 131115]) + + # Includes some orbs on the way to the cabin, blue+yellow eco to collect. + farthy_snacks = JakAndDaxterRegion("Farthy's Snacks", player, multiworld, level_name, 7) + farthy_snacks.add_cell_locations([36]) + + # Scout fly in this field can be broken with yellow eco. + box_field = JakAndDaxterRegion("Field of Boxes", player, multiworld, level_name, 10) + box_field.add_fly_locations([196651]) + + last_tar_pit = JakAndDaxterRegion("Last Tar Pit", player, multiworld, level_name, 12) + + fourth_tether = JakAndDaxterRegion("Fourth Tether", player, multiworld, level_name, 11) + fourth_tether.add_cell_locations([41], access_rule=lambda state: can_jump_higher(state, player)) + + main_area.connect(first_bats, rule=lambda state: can_jump_farther(state, player)) + + first_bats.connect(main_area) + first_bats.connect(first_jump_pad) + first_bats.connect(first_tether) + + first_jump_pad.connect(first_bats) + + first_tether.connect(first_bats) + first_tether.connect(first_tether_rat_colony, rule=lambda state: + (state.has_all(("Roll", "Roll Jump"), player) + or state.has_all(("Double Jump", "Jump Kick"), player))) + first_tether.connect(second_jump_pad) + first_tether.connect(first_pole_course) + + first_tether_rat_colony.connect(first_tether) + + second_jump_pad.connect(first_tether) + + first_pole_course.connect(first_tether) + first_pole_course.connect(second_tether) + + second_tether.connect(first_pole_course, rule=lambda state: can_jump_higher(state, player)) + second_tether.connect(second_bats) + + second_bats.connect(second_tether) + second_bats.connect(third_jump_pad) + second_bats.connect(fourth_jump_pad) + second_bats.connect(flut_flut_pad) + + third_jump_pad.connect(second_bats) + fourth_jump_pad.connect(second_bats) + + flut_flut_pad.connect(second_bats) + flut_flut_pad.connect(flut_flut_course, rule=lambda state: state.has("Flut Flut", player)) # Naturally. + flut_flut_pad.connect(farthy_snacks) + + flut_flut_course.connect(flut_flut_pad) + + farthy_snacks.connect(flut_flut_pad) + farthy_snacks.connect(box_field, rule=lambda state: can_jump_higher(state, player)) + + box_field.connect(farthy_snacks, rule=lambda state: can_jump_higher(state, player)) + box_field.connect(last_tar_pit, rule=lambda state: can_jump_farther(state, player)) + + last_tar_pit.connect(box_field, rule=lambda state: can_jump_farther(state, player)) + last_tar_pit.connect(fourth_tether, rule=lambda state: can_jump_farther(state, player)) + + fourth_tether.connect(last_tar_pit, rule=lambda state: can_jump_farther(state, player)) + fourth_tether.connect(main_area) # Fall down. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(first_bats) + world.level_to_regions[level_name].append(first_jump_pad) + world.level_to_regions[level_name].append(first_tether) + world.level_to_regions[level_name].append(first_tether_rat_colony) + world.level_to_regions[level_name].append(second_jump_pad) + world.level_to_regions[level_name].append(first_pole_course) + world.level_to_regions[level_name].append(second_tether) + world.level_to_regions[level_name].append(second_bats) + world.level_to_regions[level_name].append(third_jump_pad) + world.level_to_regions[level_name].append(fourth_jump_pad) + world.level_to_regions[level_name].append(flut_flut_pad) + world.level_to_regions[level_name].append(flut_flut_course) + world.level_to_regions[level_name].append(farthy_snacks) + world.level_to_regions[level_name].append(box_field) + world.level_to_regions[level_name].append(last_tar_pit) + world.level_to_regions[level_name].append(fourth_tether) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(8, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/fire_canyon_regions.py b/worlds/jakanddaxter/regs/fire_canyon_regions.py new file mode 100644 index 000000000000..9ce0f5dae24e --- /dev/null +++ b/worlds/jakanddaxter/regs/fire_canyon_regions.py @@ -0,0 +1,38 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import cell_locations as cells, scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 50) + + # Everything is accessible by making contact with the zoomer. + main_area.add_cell_locations(cells.locFC_cellTable.keys()) + main_area.add_fly_locations(scouts.locFC_scoutTable.keys()) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(5, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/forbidden_jungle_regions.py b/worlds/jakanddaxter/regs/forbidden_jungle_regions.py new file mode 100644 index 000000000000..601a802e55d2 --- /dev/null +++ b/worlds/jakanddaxter/regs/forbidden_jungle_regions.py @@ -0,0 +1,103 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 25) + + # You can get this scout fly by running from the blue eco vent across the temple bridge, + # falling onto the river, collecting the 3 blue clusters, using the jump pad, and running straight to the box. + main_area.add_fly_locations([393223]) + + lurker_machine = JakAndDaxterRegion("Lurker Machine", player, multiworld, level_name, 5) + lurker_machine.add_cell_locations([3], access_rule=lambda state: can_fight(state, player)) + + # This cell and this scout fly can both be gotten with the blue eco clusters near the jump pad. + lurker_machine.add_cell_locations([9]) + lurker_machine.add_fly_locations([131079]) + + river = JakAndDaxterRegion("River", player, multiworld, level_name, 42) + + # All of these can be gotten with blue eco, hitting the dark eco boxes, or by running. + river.add_cell_locations([5, 8]) + river.add_fly_locations([7, 196615]) + river.add_special_locations([5]) + river.add_cache_locations([10369]) + + temple_exit = JakAndDaxterRegion("Temple Exit", player, multiworld, level_name, 12) + + # This fly is too far from accessible blue eco sources. + temple_exit.add_fly_locations([262151], access_rule=lambda state: can_free_scout_flies(state, player)) + + temple_exterior = JakAndDaxterRegion("Temple Exterior", player, multiworld, level_name, 10) + + # All of these can be gotten with blue eco and running. + temple_exterior.add_cell_locations([4]) + temple_exterior.add_fly_locations([327687, 65543]) + temple_exterior.add_special_locations([4]) + + temple_int_pre_blue = JakAndDaxterRegion("Temple Interior (Pre Blue Eco)", player, multiworld, level_name, 17) + temple_int_pre_blue.add_cell_locations([2]) + temple_int_pre_blue.add_special_locations([2]) + + temple_int_post_blue = JakAndDaxterRegion("Temple Interior (Post Blue Eco)", player, multiworld, level_name, 39) + temple_int_post_blue.add_cell_locations([6], access_rule=lambda state: can_fight(state, player)) + + main_area.connect(lurker_machine) # Run and jump (tree stump platforms). + main_area.connect(river) # Jump down. + main_area.connect(temple_exit) # Run and jump (bridges). + + lurker_machine.connect(main_area) # Jump down. + lurker_machine.connect(river) # Jump down. + lurker_machine.connect(temple_exterior) # Jump down (ledge). + + river.connect(main_area) # Jump up (ledges near fisherman). + river.connect(lurker_machine) # Jump pad (aim toward machine). + river.connect(temple_exit) # Run and jump (trampolines). + river.connect(temple_exterior) # Jump pad (aim toward temple door). + + temple_exit.connect(main_area) # Run and jump (bridges). + temple_exit.connect(river) # Jump down. + temple_exit.connect(temple_exterior) # Run and jump (bridges, dodge spikes). + + # Requires Jungle Elevator. + temple_exterior.connect(temple_int_pre_blue, rule=lambda state: state.has("Jungle Elevator", player)) + + # Requires Blue Eco Switch. + temple_int_pre_blue.connect(temple_int_post_blue, rule=lambda state: state.has("Blue Eco Switch", player)) + + # Requires defeating the plant boss (combat). + temple_int_post_blue.connect(temple_exit, rule=lambda state: can_fight(state, player)) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(lurker_machine) + world.level_to_regions[level_name].append(river) + world.level_to_regions[level_name].append(temple_exit) + world.level_to_regions[level_name].append(temple_exterior) + world.level_to_regions[level_name].append(temple_int_pre_blue) + world.level_to_regions[level_name].append(temple_int_post_blue) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 150 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(3, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area, temple_int_post_blue diff --git a/worlds/jakanddaxter/regs/geyser_rock_regions.py b/worlds/jakanddaxter/regs/geyser_rock_regions.py new file mode 100644 index 000000000000..10783067c358 --- /dev/null +++ b/worlds/jakanddaxter/regs/geyser_rock_regions.py @@ -0,0 +1,48 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 48) + main_area.add_cell_locations([92, 93]) + main_area.add_fly_locations(scouts.locGR_scoutTable.keys()) # All Flies here are accessible with blue eco. + + # The last 2 orbs are barely gettable with the blue eco vent, but it's pushing accessibility. So I moved them here. + cliff = JakAndDaxterRegion("Cliff", player, multiworld, level_name, 2) + cliff.add_cell_locations([94]) + + main_area.connect(cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut"), player)) + + cliff.connect(main_area) # Jump down or ride blue eco elevator. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(cliff) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(0, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py b/worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py new file mode 100644 index 000000000000..83d2d51f1d8d --- /dev/null +++ b/worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py @@ -0,0 +1,137 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity, CompletionCondition +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +# God help me... here we go. +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion | None, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + # This level is full of short-medium gaps that cannot be crossed by single jump alone. + # These helper functions list out the moves that can cross all these gaps (painting with a broad brush but...) + def can_jump_farther(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + def can_triple_jump(state: CollectionState, p: int) -> bool: + return state.has_all(("Double Jump", "Jump Kick"), p) + + def can_jump_stairs(state: CollectionState, p: int) -> bool: + return (state.has("Double Jump", p) + or state.has("Jump Dive", p) + or state.has_all(("Crouch", "Crouch Jump"), p) + or state.has_all(("Crouch", "Crouch Uppercut"), p)) + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 0) + main_area.add_fly_locations([91], access_rule=lambda state: can_free_scout_flies(state, player)) + + robot_scaffolding = JakAndDaxterRegion("Scaffolding Around Robot", player, multiworld, level_name, 8) + robot_scaffolding.add_fly_locations([196699], access_rule=lambda state: can_free_scout_flies(state, player)) + + jump_pad_room = JakAndDaxterRegion("Jump Pad Chamber", player, multiworld, level_name, 88) + jump_pad_room.add_cell_locations([73], access_rule=lambda state: can_fight(state, player)) + jump_pad_room.add_special_locations([73], access_rule=lambda state: can_fight(state, player)) + jump_pad_room.add_fly_locations([131163]) # Blue eco vent is right next to it. + jump_pad_room.add_fly_locations([65627], access_rule=lambda state: + can_free_scout_flies(state, player) and can_jump_farther(state, player)) + jump_pad_room.add_cache_locations([24039, 24040]) # First, blue eco vent, second, blue eco cluster near sage. + + blast_furnace = JakAndDaxterRegion("Blast Furnace", player, multiworld, level_name, 39) + blast_furnace.add_cell_locations([71], access_rule=lambda state: can_fight(state, player)) + blast_furnace.add_special_locations([71], access_rule=lambda state: can_fight(state, player)) + blast_furnace.add_fly_locations([393307]) # Blue eco vent nearby. + blast_furnace.add_cache_locations([24038]) # Blue eco cluster near sage. + + bunny_room = JakAndDaxterRegion("Bunny Chamber", player, multiworld, level_name, 45) + bunny_room.add_cell_locations([72], access_rule=lambda state: can_fight(state, player)) + bunny_room.add_special_locations([72], access_rule=lambda state: can_fight(state, player)) + bunny_room.add_fly_locations([262235], access_rule=lambda state: can_free_scout_flies(state, player)) + + rotating_tower = JakAndDaxterRegion("Rotating Tower", player, multiworld, level_name, 20) + rotating_tower.add_cell_locations([70], access_rule=lambda state: can_fight(state, player)) + rotating_tower.add_special_locations([70], access_rule=lambda state: can_fight(state, player)) + rotating_tower.add_fly_locations([327771], access_rule=lambda state: can_free_scout_flies(state, player)) + + final_boss = JakAndDaxterRegion("Final Boss", player, multiworld, level_name, 0) + + # Jump Dive required for a lot of buttons, prepare yourself. + main_area.connect(robot_scaffolding, rule=lambda state: + state.has("Jump Dive", player) or state.has_all(("Roll", "Roll Jump"), player)) + main_area.connect(jump_pad_room) + + robot_scaffolding.connect(main_area, rule=lambda state: state.has("Jump Dive", player)) + robot_scaffolding.connect(blast_furnace, rule=lambda state: + state.has("Jump Dive", player) + and can_jump_farther(state, player) + and (can_triple_jump(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + robot_scaffolding.connect(bunny_room, rule=lambda state: + state.has("Jump Dive", player) + and can_jump_farther(state, player) + and (can_triple_jump(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + + jump_pad_room.connect(main_area) + jump_pad_room.connect(robot_scaffolding, rule=lambda state: + state.has("Jump Dive", player) + and (can_triple_jump(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + + blast_furnace.connect(robot_scaffolding) # Blue eco elevator takes you right back. + + bunny_room.connect(robot_scaffolding, rule=lambda state: + state.has("Jump Dive", player) + and (can_jump_farther(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + + # Final climb. + robot_scaffolding.connect(rotating_tower, rule=lambda state: + can_jump_stairs(state, player) + and state.has_all(("Freed The Blue Sage", + "Freed The Red Sage", + "Freed The Yellow Sage"), player)) + + rotating_tower.connect(main_area) # Take stairs back down. + + # Final elevator. Need to break boxes at summit to get blue eco for platform. + rotating_tower.connect(final_boss, rule=lambda state: + can_fight(state, player) + and state.has("Freed The Green Sage", player)) + + final_boss.connect(rotating_tower) # Take elevator back down. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(robot_scaffolding) + world.level_to_regions[level_name].append(jump_pad_room) + world.level_to_regions[level_name].append(blast_furnace) + world.level_to_regions[level_name].append(bunny_room) + world.level_to_regions[level_name].append(rotating_tower) + world.level_to_regions[level_name].append(final_boss) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(15, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + # Final door. Need 100 power cells. + if options.jak_completion_condition == CompletionCondition.option_open_100_cell_door: + final_door = JakAndDaxterRegion("Final Door", player, multiworld, level_name, 0) + final_boss.connect(final_door, rule=lambda state: state.has("Power Cell", player, 100)) + + world.level_to_regions[level_name].append(final_door) + + return main_area, final_boss, final_door + else: + return main_area, final_boss, None diff --git a/worlds/jakanddaxter/regs/lava_tube_regions.py b/worlds/jakanddaxter/regs/lava_tube_regions.py new file mode 100644 index 000000000000..c3a4c5b24d3f --- /dev/null +++ b/worlds/jakanddaxter/regs/lava_tube_regions.py @@ -0,0 +1,38 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import cell_locations as cells, scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 50) + + # Everything is accessible by making contact with the zoomer. + main_area.add_cell_locations(cells.locLT_cellTable.keys()) + main_area.add_fly_locations(scouts.locLT_scoutTable.keys()) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(14, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/lost_precursor_city_regions.py b/worlds/jakanddaxter/regs/lost_precursor_city_regions.py new file mode 100644 index 000000000000..f4a2ed6b5190 --- /dev/null +++ b/worlds/jakanddaxter/regs/lost_precursor_city_regions.py @@ -0,0 +1,155 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # Just the starting area. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 4) + + first_room_upper = JakAndDaxterRegion("First Chamber (Upper)", player, multiworld, level_name, 21) + + first_room_lower = JakAndDaxterRegion("First Chamber (Lower)", player, multiworld, level_name, 0) + first_room_lower.add_fly_locations([262193], access_rule=lambda state: can_free_scout_flies(state, player)) + + first_room_orb_cache = JakAndDaxterRegion("First Chamber Orb Cache", player, multiworld, level_name, 22) + + # Need jump dive to activate button, double jump to reach blue eco to unlock cache. + first_room_orb_cache.add_cache_locations([14507], access_rule=lambda state: + state.has_all(("Jump Dive", "Double Jump"), player)) + + first_hallway = JakAndDaxterRegion("First Hallway", player, multiworld, level_name, 10) + first_hallway.add_fly_locations([131121], access_rule=lambda state: can_free_scout_flies(state, player)) + + # This entire room is accessible with floating platforms and single jump. + second_room = JakAndDaxterRegion("Second Chamber", player, multiworld, level_name, 28) + + # These items can only be gotten with jump dive to activate a button. + second_room.add_cell_locations([45], access_rule=lambda state: state.has("Jump Dive", player)) + second_room.add_fly_locations([49, 65585], access_rule=lambda state: state.has("Jump Dive", player)) + + # This is the scout fly on the way to the pipe cell, requires normal breaking moves. + second_room.add_fly_locations([196657], access_rule=lambda state: can_free_scout_flies(state, player)) + + # This orb vent and scout fly are right next to each other, can be gotten with blue eco and the floating platforms. + second_room.add_fly_locations([393265]) + second_room.add_cache_locations([14838]) + + # Named after the cell, includes the armored lurker room. + center_complex = JakAndDaxterRegion("Center of the Complex", player, multiworld, level_name, 17) + center_complex.add_cell_locations([51]) + + color_platforms = JakAndDaxterRegion("Color Platforms", player, multiworld, level_name, 6) + color_platforms.add_cell_locations([44], access_rule=lambda state: can_fight(state, player)) + + quick_platforms = JakAndDaxterRegion("Quick Platforms", player, multiworld, level_name, 3) + + # Jump dive to activate button. + quick_platforms.add_cell_locations([48], access_rule=lambda state: state.has("Jump Dive", player)) + + first_slide = JakAndDaxterRegion("First Slide", player, multiworld, level_name, 22) + + # Raised chamber room, includes vent room with scout fly prior to second slide. + capsule_room = JakAndDaxterRegion("Capsule Chamber", player, multiworld, level_name, 6) + + # Use jump dive to activate button inside the capsule. Blue eco vent can ready the chamber and get the scout fly. + capsule_room.add_cell_locations([47], access_rule=lambda state: + state.has("Jump Dive", player) + and (state.has_any(("Double Jump", "Jump Kick"), player) + or state.has_all(("Punch", "Punch Uppercut"), player))) + capsule_room.add_fly_locations([327729]) + + # You can slide to the bottom of the city, but if you spawn down there, you have no momentum from the slide. + # So you need some kind of jump to reach this cell. + second_slide = JakAndDaxterRegion("Second Slide", player, multiworld, level_name, 31) + second_slide.add_cell_locations([46], access_rule=lambda state: + state.has_any(("Double Jump", "Jump Kick"), player) + or state.has_all(("Punch", "Punch Uppercut"), player)) + + # If you can enter the helix room, you can jump or fight your way to the top. But you need some kind of movement + # to enter it in the first place. + helix_room = JakAndDaxterRegion("Helix Chamber", player, multiworld, level_name, 30) + helix_room.add_cell_locations([50], access_rule=lambda state: + state.has("Double Jump", player) + or can_fight(state, player)) + + main_area.connect(first_room_upper) # Run. + + first_room_upper.connect(main_area) # Run. + first_room_upper.connect(first_hallway) # Run and jump (floating platforms). + first_room_upper.connect(first_room_lower) # Run and jump down. + + first_room_lower.connect(first_room_upper) # Run and jump (floating platforms). + + # Needs some movement to reach these orbs and orb cache. + first_room_lower.connect(first_room_orb_cache, rule=lambda state: + state.has_all(("Jump Dive", "Double Jump"), player)) + first_room_orb_cache.connect(first_room_lower, rule=lambda state: + state.has_all(("Jump Dive", "Double Jump"), player)) + + first_hallway.connect(first_room_upper) # Run and jump down. + first_hallway.connect(second_room) # Run and jump (floating platforms). + + second_room.connect(first_hallway) # Run and jump. + second_room.connect(center_complex) # Run and jump down. + + center_complex.connect(second_room) # Run and jump (swim). + center_complex.connect(color_platforms) # Run and jump (swim). + center_complex.connect(quick_platforms) # Run and jump (swim). + + color_platforms.connect(center_complex) # Run and jump (swim). + + quick_platforms.connect(center_complex) # Run and jump (swim). + quick_platforms.connect(first_slide) # Slide. + + first_slide.connect(capsule_room) # Slide. + + capsule_room.connect(second_slide) # Slide. + capsule_room.connect(main_area, rule=lambda state: # Chamber goes back to surface. + state.has("Jump Dive", player)) # (Assume one-way for sanity.) + + second_slide.connect(helix_room, rule=lambda state: # As stated above, you need to jump + state.has_any(("Double Jump", "Jump Kick"), player) # across the dark eco pool before + or state.has_all(("Punch", "Punch Uppercut"), player)) # you can climb the helix room. + + helix_room.connect(quick_platforms, rule=lambda state: # Escape to get back to here. + state.has("Double Jump", player) # Capsule is a convenient exit to the level. + or can_fight(state, player)) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(first_room_upper) + world.level_to_regions[level_name].append(first_room_lower) + world.level_to_regions[level_name].append(first_room_orb_cache) + world.level_to_regions[level_name].append(first_hallway) + world.level_to_regions[level_name].append(second_room) + world.level_to_regions[level_name].append(center_complex) + world.level_to_regions[level_name].append(color_platforms) + world.level_to_regions[level_name].append(quick_platforms) + world.level_to_regions[level_name].append(first_slide) + world.level_to_regions[level_name].append(capsule_room) + world.level_to_regions[level_name].append(second_slide) + world.level_to_regions[level_name].append(helix_room) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(7, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/misty_island_regions.py b/worlds/jakanddaxter/regs/misty_island_regions.py new file mode 100644 index 000000000000..a6ae6122476b --- /dev/null +++ b/worlds/jakanddaxter/regs/misty_island_regions.py @@ -0,0 +1,131 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 9) + + muse_course = JakAndDaxterRegion("Muse Course", player, multiworld, level_name, 21) + muse_course.add_cell_locations([23]) + muse_course.add_fly_locations([327708], access_rule=lambda state: can_free_scout_flies(state, player)) + + zoomer = JakAndDaxterRegion("Zoomer", player, multiworld, level_name, 32) + zoomer.add_cell_locations([27, 29]) + zoomer.add_fly_locations([393244]) + + ship = JakAndDaxterRegion("Ship", player, multiworld, level_name, 10) + ship.add_cell_locations([24]) + ship.add_fly_locations([131100], access_rule=lambda state: can_free_scout_flies(state, player)) + + far_side = JakAndDaxterRegion("Far Side", player, multiworld, level_name, 16) + + # In order to even reach this fly, you must use the seesaw or crouch jump. + far_side_cliff = JakAndDaxterRegion("Far Side Cliff", player, multiworld, level_name, 5) + far_side_cliff.add_fly_locations([28], access_rule=lambda state: can_free_scout_flies(state, player)) + + # To carry the blue eco fast enough to open this cache, you need to break the bone bridges along the way. + far_side_cache = JakAndDaxterRegion("Far Side Orb Cache", player, multiworld, level_name, 15) + far_side_cache.add_cache_locations([11072], access_rule=lambda state: can_fight(state, player)) + + barrel_course = JakAndDaxterRegion("Barrel Course", player, multiworld, level_name, 10) + barrel_course.add_fly_locations([196636], access_rule=lambda state: can_free_scout_flies(state, player)) + + # 14 orbs for the boxes you can only break with the cannon. + cannon = JakAndDaxterRegion("Cannon", player, multiworld, level_name, 14) + cannon.add_cell_locations([26], access_rule=lambda state: can_fight(state, player)) + + upper_approach = JakAndDaxterRegion("Upper Arena Approach", player, multiworld, level_name, 6) + upper_approach.add_fly_locations([65564, 262172], access_rule=lambda state: + can_free_scout_flies(state, player)) + + lower_approach = JakAndDaxterRegion("Lower Arena Approach", player, multiworld, level_name, 7) + lower_approach.add_cell_locations([30]) + + arena = JakAndDaxterRegion("Arena", player, multiworld, level_name, 5) + arena.add_cell_locations([25], access_rule=lambda state: can_fight(state, player)) + + main_area.connect(muse_course) # TODO - What do you need to chase the muse the whole way around? + main_area.connect(zoomer) # Run and jump down. + main_area.connect(ship) # Run and jump. + main_area.connect(lower_approach) # Run and jump. + + # Need to break the bone bridge to access. + main_area.connect(upper_approach, rule=lambda state: can_fight(state, player)) + + muse_course.connect(main_area) # Run and jump down. + + # The zoomer pad is low enough that it requires Crouch Jump specifically. + zoomer.connect(main_area, rule=lambda state: state.has_all(("Crouch", "Crouch Jump"), player)) + + ship.connect(main_area) # Run and jump down. + ship.connect(far_side) # Run and jump down. + ship.connect(barrel_course) # Run and jump (dodge barrels). + + far_side.connect(ship) # Run and jump. + far_side.connect(arena) # Run and jump. + + # Only if you can use the seesaw or Crouch Jump from the seesaw's edge. + far_side.connect(far_side_cliff, rule=lambda state: + state.has("Jump Dive", player) + or state.has_all(("Crouch", "Crouch Jump"), player)) + + # Only if you can break the bone bridges to carry blue eco over the mud pit. + far_side.connect(far_side_cache, rule=lambda state: can_fight(state, player)) + + far_side_cliff.connect(far_side) # Run and jump down. + + barrel_course.connect(cannon) # Run and jump (dodge barrels). + + cannon.connect(barrel_course) # Run and jump (dodge barrels). + cannon.connect(arena) # Run and jump down. + cannon.connect(upper_approach) # Run and jump down. + + upper_approach.connect(lower_approach) # Jump down. + upper_approach.connect(arena) # Jump down. + + # One cliff is accessible, but only via Crouch Jump. + lower_approach.connect(upper_approach, rule=lambda state: state.has_all(("Crouch", "Crouch Jump"), player)) + + # Requires breaking bone bridges. + lower_approach.connect(arena, rule=lambda state: can_fight(state, player)) + + arena.connect(lower_approach) # Run. + arena.connect(far_side) # Run. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(muse_course) + world.level_to_regions[level_name].append(zoomer) + world.level_to_regions[level_name].append(ship) + world.level_to_regions[level_name].append(far_side) + world.level_to_regions[level_name].append(far_side_cliff) + world.level_to_regions[level_name].append(far_side_cache) + world.level_to_regions[level_name].append(barrel_course) + world.level_to_regions[level_name].append(cannon) + world.level_to_regions[level_name].append(upper_approach) + world.level_to_regions[level_name].append(lower_approach) + world.level_to_regions[level_name].append(arena) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 150 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(4, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/mountain_pass_regions.py b/worlds/jakanddaxter/regs/mountain_pass_regions.py new file mode 100644 index 000000000000..bd26be8dd2bd --- /dev/null +++ b/worlds/jakanddaxter/regs/mountain_pass_regions.py @@ -0,0 +1,67 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import scout_locations as scouts +from worlds.generic.Rules import add_rule + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + # This is basically just Klaww. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 0) + main_area.add_cell_locations([86]) + + # Some folks prefer firing Yellow Eco from the hip, so optionally put this rule before Klaww. Klaww is the only + # location in main_area, so he's at index 0. + if world.options.require_punch_for_klaww: + add_rule(main_area.locations[0], lambda state: state.has("Punch", player)) + + race = JakAndDaxterRegion("Race", player, multiworld, level_name, 50) + race.add_cell_locations([87]) + + # All scout flies can be broken with the zoomer. + race.add_fly_locations(scouts.locMP_scoutTable.keys()) + + shortcut = JakAndDaxterRegion("Shortcut", player, multiworld, level_name, 0) + shortcut.add_cell_locations([110]) + + # Of course, in order to make it to the race region, you must defeat Klaww. He's not optional. + # So we need to set up this inter-region rule as well (or make it free if the setting is off). + if world.options.require_punch_for_klaww: + main_area.connect(race, rule=lambda state: state.has("Punch", player)) + else: + main_area.connect(race) + + # You actually can go backwards from the race back to Klaww's area. + race.connect(main_area) + race.connect(shortcut, rule=lambda state: state.has("Yellow Eco Switch", player)) + + shortcut.connect(race) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(race) + world.level_to_regions[level_name].append(shortcut) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(10, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + # Return race required for inter-level connections. + return main_area, race diff --git a/worlds/jakanddaxter/regs/precursor_basin_regions.py b/worlds/jakanddaxter/regs/precursor_basin_regions.py new file mode 100644 index 000000000000..25a109155b92 --- /dev/null +++ b/worlds/jakanddaxter/regs/precursor_basin_regions.py @@ -0,0 +1,38 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import cell_locations as cells, scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 200) + + # Everything is accessible by making contact with the zoomer. + main_area.add_cell_locations(cells.locPB_cellTable.keys()) + main_area.add_fly_locations(scouts.locPB_scoutTable.keys()) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(9, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/region_base.py b/worlds/jakanddaxter/regs/region_base.py new file mode 100644 index 000000000000..cb1005aa7a0c --- /dev/null +++ b/worlds/jakanddaxter/regs/region_base.py @@ -0,0 +1,91 @@ +from typing import Iterable +from BaseClasses import MultiWorld, Region +from ..game_id import jak1_name +from ..locations import JakAndDaxterLocation, location_table +from ..locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches) +from worlds.generic.Rules import CollectionRule + + +class JakAndDaxterRegion(Region): + """ + Holds region information such as name, level name, number of orbs available, etc. + We especially need orb counts to be tracked because we need to know when you can + afford the Citizen and Oracle orb payments for more checks. + """ + game: str = jak1_name + level_name: str + orb_count: int + location_count: int = 0 + + def __init__(self, name: str, player: int, multiworld: MultiWorld, level_name: str = "", orb_count: int = 0): + formatted_name = f"{level_name} {name}".strip() + super().__init__(formatted_name, player, multiworld) + self.level_name = level_name + self.orb_count = orb_count + + def add_cell_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds a Power Cell Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + """ + for loc in locations: + ap_id = cells.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_fly_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds a Scout Fly Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + """ + for loc in locations: + ap_id = scouts.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_special_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds a Special Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + Special Locations should be matched alongside their respective + Power Cell Locations, so you get 2 unlocks for these rather than 1. + """ + for loc in locations: + ap_id = specials.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_cache_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds an Orb Cache Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + """ + for loc in locations: + ap_id = caches.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_orb_locations(self, level_index: int, bundle_index: int, access_rule: CollectionRule | None = None) -> None: + """ + Adds Orb Bundle Locations to this region equal to `bundle_count`. Used only when Per-Level Orbsanity is enabled. + The orb factory class will handle AP ID enumeration. + """ + bundle_address = orbs.create_address(level_index, bundle_index) + location = JakAndDaxterLocation(self.player, + f"{self.level_name} Orb Bundle {bundle_index + 1}".strip(), + orbs.to_ap_id(bundle_address), + self) + if access_rule: + location.access_rule = access_rule + self.locations.append(location) + self.location_count += 1 + + def add_jak_location(self, ap_id: int, name: str, access_rule: CollectionRule | None = None) -> None: + """ + Helper function to add Locations. Not to be used directly. + """ + location = JakAndDaxterLocation(self.player, name, ap_id, self) + if access_rule: + location.access_rule = access_rule + self.locations.append(location) + self.location_count += 1 diff --git a/worlds/jakanddaxter/regs/rock_village_regions.py b/worlds/jakanddaxter/regs/rock_village_regions.py new file mode 100644 index 000000000000..2138eb119404 --- /dev/null +++ b/worlds/jakanddaxter/regs/rock_village_regions.py @@ -0,0 +1,75 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + # This includes most of the area surrounding LPC as well, for orb_count purposes. You can swim and single jump. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 23) + main_area.add_cell_locations([31], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([32], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([33], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([34], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([35], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 34)) + + # These 2 scout fly boxes can be broken by running with nearby blue eco. + main_area.add_fly_locations([196684, 262220]) + main_area.add_fly_locations([76, 131148, 65612, 327756], access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Warrior Pontoon check. You just talk to him and get his introduction. + main_area.add_special_locations([33]) + + orb_cache = JakAndDaxterRegion("Orb Cache", player, multiworld, level_name, 20) + + # You need roll jump to be able to reach this before the blue eco runs out. + orb_cache.add_cache_locations([10945], access_rule=lambda state: state.has_all(("Roll", "Roll Jump"), player)) + + # Fly here can be gotten with Yellow Eco from Boggy, goggles, and no extra movement options (see fly ID 43). + pontoon_bridge = JakAndDaxterRegion("Pontoon Bridge", player, multiworld, level_name, 7) + pontoon_bridge.add_fly_locations([393292]) + + klaww_cliff = JakAndDaxterRegion("Klaww's Cliff", player, multiworld, level_name, 0) + + main_area.connect(orb_cache, rule=lambda state: state.has_all(("Roll", "Roll Jump"), player)) + main_area.connect(pontoon_bridge, rule=lambda state: state.has("Warrior's Pontoons", player)) + + orb_cache.connect(main_area) + + pontoon_bridge.connect(main_area, rule=lambda state: state.has("Warrior's Pontoons", player)) + pontoon_bridge.connect(klaww_cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut", "Jump Kick"), player)) + + klaww_cliff.connect(pontoon_bridge) # Just jump back down. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(orb_cache) + world.level_to_regions[level_name].append(pontoon_bridge) + world.level_to_regions[level_name].append(klaww_cliff) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(6, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + # Return klaww_cliff required for inter-level connections. + return main_area, pontoon_bridge, klaww_cliff diff --git a/worlds/jakanddaxter/regs/sandover_village_regions.py b/worlds/jakanddaxter/regs/sandover_village_regions.py new file mode 100644 index 000000000000..3969cdb41ad2 --- /dev/null +++ b/worlds/jakanddaxter/regs/sandover_village_regions.py @@ -0,0 +1,83 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 26) + + # Yakows requires no combat. + main_area.add_cell_locations([10]) + main_area.add_cell_locations([11], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([12], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + + # These 4 scout fly boxes can be broken by running with all the blue eco from Sentinel Beach. + main_area.add_fly_locations([262219, 327755, 131147, 65611]) + + # The farmer's scout fly. You can either get the Orb Cache Cliff blue eco, or break it normally. + main_area.add_fly_locations([196683], access_rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or can_free_scout_flies(state, player)) + + orb_cache_cliff = JakAndDaxterRegion("Orb Cache Cliff", player, multiworld, level_name, 15) + orb_cache_cliff.add_cache_locations([10344]) + + yakow_cliff = JakAndDaxterRegion("Yakow Cliff", player, multiworld, level_name, 3) + yakow_cliff.add_fly_locations([75], access_rule=lambda state: can_free_scout_flies(state, player)) + + oracle_platforms = JakAndDaxterRegion("Oracle Platforms", player, multiworld, level_name, 6) + oracle_platforms.add_cell_locations([13], access_rule=lambda state: + world.can_trade(state, world.total_trade_orbs, None)) + oracle_platforms.add_cell_locations([14], access_rule=lambda state: + world.can_trade(state, world.total_trade_orbs, 13)) + oracle_platforms.add_fly_locations([393291], access_rule=lambda state: + can_free_scout_flies(state, player)) + + main_area.connect(orb_cache_cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut", "Jump Kick"), player)) + + main_area.connect(yakow_cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut", "Jump Kick"), player)) + + main_area.connect(oracle_platforms, rule=lambda state: + state.has_all(("Roll", "Roll Jump"), player) + or state.has_all(("Double Jump", "Jump Kick"), player)) + + # All these can go back to main_area immediately. + orb_cache_cliff.connect(main_area) + yakow_cliff.connect(main_area) + oracle_platforms.connect(main_area) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(orb_cache_cliff) + world.level_to_regions[level_name].append(yakow_cliff) + world.level_to_regions[level_name].append(oracle_platforms) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(1, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/sentinel_beach_regions.py b/worlds/jakanddaxter/regs/sentinel_beach_regions.py new file mode 100644 index 000000000000..293215ea8232 --- /dev/null +++ b/worlds/jakanddaxter/regs/sentinel_beach_regions.py @@ -0,0 +1,108 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 128) + main_area.add_cell_locations([18, 21, 22]) + + # These scout fly boxes can be broken by running with freely accessible blue eco. + # The 3 clusters by the Flut Flut egg can go surprisingly far. + main_area.add_fly_locations([327700, 20, 65556, 262164]) + + # This scout fly box can be broken with the locked blue eco vent, or by normal combat tricks. + main_area.add_fly_locations([393236], access_rule=lambda state: + state.has("Blue Eco Switch", player) + or can_free_scout_flies(state, player)) + + # No need for the blue eco vent for either of the orb caches. + main_area.add_cache_locations([12634, 12635]) + + pelican = JakAndDaxterRegion("Pelican", player, multiworld, level_name, 0) + pelican.add_cell_locations([16], access_rule=lambda state: can_fight(state, player)) + + # Only these specific attacks can push the flut flut egg off the cliff. + flut_flut_egg = JakAndDaxterRegion("Flut Flut Egg", player, multiworld, level_name, 0) + flut_flut_egg.add_cell_locations([17], access_rule=lambda state: + state.has_any(("Punch", "Kick", "Jump Kick"), player)) + flut_flut_egg.add_special_locations([17], access_rule=lambda state: + state.has_any(("Punch", "Kick", "Jump Kick"), player)) + + eco_harvesters = JakAndDaxterRegion("Eco Harvesters", player, multiworld, level_name, 0) + eco_harvesters.add_cell_locations([15], access_rule=lambda state: can_fight(state, player)) + + green_ridge = JakAndDaxterRegion("Ridge Near Green Vents", player, multiworld, level_name, 5) + green_ridge.add_fly_locations([131092], access_rule=lambda state: can_free_scout_flies(state, player)) + + blue_ridge = JakAndDaxterRegion("Ridge Near Blue Vent", player, multiworld, level_name, 5) + blue_ridge.add_fly_locations([196628], access_rule=lambda state: + state.has("Blue Eco Switch", player) + or can_free_scout_flies(state, player)) + + cannon_tower = JakAndDaxterRegion("Cannon Tower", player, multiworld, level_name, 12) + cannon_tower.add_cell_locations([19], access_rule=lambda state: can_fight(state, player)) + + main_area.connect(pelican) # Swim and jump. + main_area.connect(flut_flut_egg) # Run and jump. + main_area.connect(eco_harvesters) # Run. + + # We need a helper function for the uppercut logs. + def can_uppercut_and_jump_logs(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + and (state.has_all(("Crouch", "Crouch Uppercut"), p) + or state.has_all(("Punch", "Punch Uppercut"), p))) + + # If you have double jump or crouch jump, you don't need the logs to reach this place. + main_area.connect(green_ridge, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or can_uppercut_and_jump_logs(state, player)) + + # If you have the blue eco jump pad, you don't need the logs to reach this place. + main_area.connect(blue_ridge, rule=lambda state: + state.has("Blue Eco Switch", player) + or can_uppercut_and_jump_logs(state, player)) + + main_area.connect(cannon_tower, rule=lambda state: state.has("Blue Eco Switch", player)) + + # All these can go back to main_area immediately. + pelican.connect(main_area) + flut_flut_egg.connect(main_area) + eco_harvesters.connect(main_area) + green_ridge.connect(main_area) + blue_ridge.connect(main_area) + cannon_tower.connect(main_area) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(pelican) + world.level_to_regions[level_name].append(flut_flut_egg) + world.level_to_regions[level_name].append(eco_harvesters) + world.level_to_regions[level_name].append(green_ridge) + world.level_to_regions[level_name].append(blue_ridge) + world.level_to_regions[level_name].append(cannon_tower) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 150 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(2, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/snowy_mountain_regions.py b/worlds/jakanddaxter/regs/snowy_mountain_regions.py new file mode 100644 index 000000000000..5adc3e9d2228 --- /dev/null +++ b/worlds/jakanddaxter/regs/snowy_mountain_regions.py @@ -0,0 +1,203 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +# God help me... here we go. +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # We need a few helper functions. + def can_cross_long_gap(state: CollectionState, p: int) -> bool: + return (state.has_all(("Roll", "Roll Jump"), p) + or state.has_all(("Double Jump", "Jump Kick"), p)) + + def can_jump_blockers(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + or state.has_all(("Crouch", "Crouch Jump"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 0) + main_area.add_fly_locations([65], access_rule=lambda state: can_free_scout_flies(state, player)) + + # We need a few virtual regions like we had for Dark Crystals in Spider Cave. + # First, a virtual region for the glacier lurkers. + glacier_lurkers = JakAndDaxterRegion("Glacier Lurkers", player, multiworld, level_name, 0) + + # Need to fight all the troops. + # Troop in snowball_canyon: cross main_area. + # Troop in ice_skating_rink: cross main_area and fort_exterior. + # Troop in fort_exterior: cross main_area and fort_exterior. + glacier_lurkers.add_cell_locations([61], access_rule=lambda state: + can_fight(state, player) + and can_cross_long_gap(state, player)) + + # Second, a virtual region for the precursor blockers. Unlike the others, this contains orbs: + # the total number of orbs that sit on top of the blockers. Yes, there are only 8. + blockers = JakAndDaxterRegion("Precursor Blockers", player, multiworld, level_name, 8) + + # 1 in main_area + # 2 in snowball_canyon + # 4 in ice_skating_rink + # 3 in fort_exterior + # 3 in bunny_cave_start + blockers.add_cell_locations([66], access_rule=lambda state: + can_fight(state, player) + and can_cross_long_gap(state, player)) + + snowball_canyon = JakAndDaxterRegion("Snowball Canyon", player, multiworld, level_name, 28) + + # The scout fly box *can* be broken without YES, so leave it in this region. + frozen_box_cave = JakAndDaxterRegion("Frozen Box Cave", player, multiworld, level_name, 12) + frozen_box_cave.add_fly_locations([327745], access_rule=lambda state: + state.has("Yellow Eco Switch", player) + or can_free_scout_flies(state, player)) + + # This region has crates that can *only* be broken with YES. + frozen_box_cave_crates = JakAndDaxterRegion("Frozen Box Cave Orb Crates", player, multiworld, level_name, 8) + frozen_box_cave_crates.add_cell_locations([67], access_rule=lambda state: + state.has("Yellow Eco Switch", player)) + + # Include 6 orbs on the twin elevator ice ramp. + ice_skating_rink = JakAndDaxterRegion("Ice Skating Rink", player, multiworld, level_name, 20) + ice_skating_rink.add_fly_locations([131137], access_rule=lambda state: can_free_scout_flies(state, player)) + + flut_flut_course = JakAndDaxterRegion("Flut Flut Course", player, multiworld, level_name, 15) + flut_flut_course.add_cell_locations([63], access_rule=lambda state: state.has("Flut Flut", player)) + flut_flut_course.add_special_locations([63], access_rule=lambda state: state.has("Flut Flut", player)) + + # Includes the bridge from snowball_canyon, the area beneath that bridge, and the areas around the fort. + fort_exterior = JakAndDaxterRegion("Fort Exterior", player, multiworld, level_name, 20) + fort_exterior.add_fly_locations([65601, 393281], access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Includes the icy island and bridge outside the cave entrance. + bunny_cave_start = JakAndDaxterRegion("Bunny Cave (Start)", player, multiworld, level_name, 10) + + # Includes the cell and 3 orbs at the exit. + bunny_cave_end = JakAndDaxterRegion("Bunny Cave (End)", player, multiworld, level_name, 3) + bunny_cave_end.add_cell_locations([64]) + + switch_cave = JakAndDaxterRegion("Yellow Eco Switch Cave", player, multiworld, level_name, 4) + switch_cave.add_cell_locations([60]) + switch_cave.add_special_locations([60]) + + # Only what can be covered by single jump. + fort_interior = JakAndDaxterRegion("Fort Interior (Main)", player, multiworld, level_name, 19) + + # Reaching the top of the watch tower, getting the fly with the blue eco, and falling down to get the caches. + fort_interior_caches = JakAndDaxterRegion("Fort Interior (Caches)", player, multiworld, level_name, 51) + fort_interior_caches.add_fly_locations([196673]) + fort_interior_caches.add_cache_locations([23348, 23349, 23350]) + + # Need higher jump. + fort_interior_base = JakAndDaxterRegion("Fort Interior (Base)", player, multiworld, level_name, 0) + fort_interior_base.add_fly_locations([262209], access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Need farther jump. + fort_interior_course_end = JakAndDaxterRegion("Fort Interior (Course End)", player, multiworld, level_name, 2) + fort_interior_course_end.add_cell_locations([62]) + + # Wire up the virtual regions first. + main_area.connect(blockers, rule=lambda state: can_jump_blockers(state, player)) + main_area.connect(glacier_lurkers, rule=lambda state: can_fight(state, player)) + + # Yes, the only way into the rest of the level requires advanced movement. + main_area.connect(snowball_canyon, rule=lambda state: can_cross_long_gap(state, player)) + + snowball_canyon.connect(main_area) # But you can just jump down and run up the ramp. + snowball_canyon.connect(bunny_cave_start) # Jump down from the glacier troop cliff. + snowball_canyon.connect(fort_exterior) # Jump down, to the left of frozen box cave. + snowball_canyon.connect(frozen_box_cave, rule=lambda state: # More advanced movement. + can_cross_long_gap(state, player)) + + frozen_box_cave.connect(snowball_canyon, rule=lambda state: # Same movement to go back. + can_cross_long_gap(state, player)) + frozen_box_cave.connect(frozen_box_cave_crates, rule=lambda state: # YES to get these crates. + state.has("Yellow Eco Switch", player)) + frozen_box_cave.connect(ice_skating_rink, rule=lambda state: # Same movement to go forward. + can_cross_long_gap(state, player)) + + frozen_box_cave_crates.connect(frozen_box_cave) # Semi-virtual region, no moves req'd. + + ice_skating_rink.connect(frozen_box_cave, rule=lambda state: # Same movement to go back. + can_cross_long_gap(state, player)) + ice_skating_rink.connect(flut_flut_course, rule=lambda state: # Duh. + state.has("Flut Flut", player)) + ice_skating_rink.connect(fort_exterior) # Just slide down the elevator ramp. + + fort_exterior.connect(ice_skating_rink, rule=lambda state: # Twin elevators OR scout fly ledge. + can_cross_long_gap(state, player)) # Both doable with main_gap logic. + fort_exterior.connect(snowball_canyon) # Run across bridge. + fort_exterior.connect(fort_interior, rule=lambda state: # Duh. + state.has("Snowy Fort Gate", player)) + fort_exterior.connect(bunny_cave_start) # Run across bridge. + fort_exterior.connect(switch_cave, rule=lambda state: # Yes, blocker jumps work here. + can_jump_blockers(state, player)) + + fort_interior.connect(fort_interior_caches, rule=lambda state: # Just need a little height. + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player)) + fort_interior.connect(fort_interior_base, rule=lambda state: # Just need a little height. + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player)) + fort_interior.connect(fort_interior_course_end, rule=lambda state: # Just need a little distance. + state.has_any(("Double Jump", "Jump Kick"), player) + or state.has_all(("Punch", "Punch Uppercut"), player)) + + flut_flut_course.connect(fort_exterior) # Ride the elevator. + + # Must fight way through cave, but there is also a grab-less ledge we must jump over. + bunny_cave_start.connect(bunny_cave_end, rule=lambda state: + can_fight(state, player) + and (state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player))) + + # All jump down. + fort_interior_caches.connect(fort_interior) + fort_interior_base.connect(fort_interior) + fort_interior_course_end.connect(fort_interior) + switch_cave.connect(fort_exterior) + bunny_cave_end.connect(fort_exterior) + + # I really hope that is everything. + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(glacier_lurkers) + world.level_to_regions[level_name].append(blockers) + world.level_to_regions[level_name].append(snowball_canyon) + world.level_to_regions[level_name].append(frozen_box_cave) + world.level_to_regions[level_name].append(frozen_box_cave_crates) + world.level_to_regions[level_name].append(ice_skating_rink) + world.level_to_regions[level_name].append(flut_flut_course) + world.level_to_regions[level_name].append(fort_exterior) + world.level_to_regions[level_name].append(bunny_cave_start) + world.level_to_regions[level_name].append(bunny_cave_end) + world.level_to_regions[level_name].append(switch_cave) + world.level_to_regions[level_name].append(fort_interior) + world.level_to_regions[level_name].append(fort_interior_caches) + world.level_to_regions[level_name].append(fort_interior_base) + world.level_to_regions[level_name].append(fort_interior_course_end) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(12, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/spider_cave_regions.py b/worlds/jakanddaxter/regs/spider_cave_regions.py new file mode 100644 index 000000000000..6069bbb80c2b --- /dev/null +++ b/worlds/jakanddaxter/regs/spider_cave_regions.py @@ -0,0 +1,127 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # A large amount of this area can be covered by single jump, floating platforms, web trampolines, and goggles. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 63) + main_area.add_cell_locations([78, 84]) + main_area.add_fly_locations([327765, 393301, 196693, 131157]) + + # This is a virtual region describing what you need to DO to get the Dark Crystal power cell, + # rather than describing where each of the crystals ARE, because you can destroy them in any order, + # and you need to destroy ALL of them to get the cell. + dark_crystals = JakAndDaxterRegion("Dark Crystals", player, multiworld, level_name, 0) + + # can_fight = The underwater crystal in dark cave. + # Roll Jump = The underwater crystal across a long dark eco pool. + # The rest of the crystals can be destroyed with yellow eco in main_area. + dark_crystals.add_cell_locations([79], access_rule=lambda state: + can_fight(state, player) + and state.has_all(("Roll", "Roll Jump"), player)) + + dark_cave = JakAndDaxterRegion("Dark Cave", player, multiworld, level_name, 5) + dark_cave.add_cell_locations([80]) + dark_cave.add_fly_locations([262229], access_rule=lambda state: can_free_scout_flies(state, player)) + + robot_cave = JakAndDaxterRegion("Robot Cave", player, multiworld, level_name, 0) + + # Need double jump for orbs. + scaffolding_level_zero = JakAndDaxterRegion("Robot Scaffolding Level 0", player, multiworld, level_name, 12) + + scaffolding_level_one = JakAndDaxterRegion("Robot Scaffolding Level 1", player, multiworld, level_name, 53) + scaffolding_level_one.add_fly_locations([85]) # Shootable. + + scaffolding_level_two = JakAndDaxterRegion("Robot Scaffolding Level 2", player, multiworld, level_name, 4) + + # Using the blue eco from the pole course, you can single jump to the scout fly up here. + scaffolding_level_three = JakAndDaxterRegion("Robot Scaffolding Level 3", player, multiworld, level_name, 29) + scaffolding_level_three.add_cell_locations([81]) + scaffolding_level_three.add_fly_locations([65621]) + + pole_course = JakAndDaxterRegion("Pole Course", player, multiworld, level_name, 18) + pole_course.add_cell_locations([82]) + + # You only need combat to fight through the spiders, but to collect the orb crates, + # you will need the yellow eco vent unlocked. + spider_tunnel = JakAndDaxterRegion("Spider Tunnel", player, multiworld, level_name, 4) + spider_tunnel.add_cell_locations([83]) + + spider_tunnel_crates = JakAndDaxterRegion("Spider Tunnel Orb Crates", player, multiworld, level_name, 12) + + main_area.connect(dark_crystals) + main_area.connect(robot_cave) + main_area.connect(dark_cave, rule=lambda state: + can_fight(state, player) + and (state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player))) + + robot_cave.connect(main_area) + robot_cave.connect(pole_course) # Nothing special required. + robot_cave.connect(scaffolding_level_one) # Ramps lead to level 1. + robot_cave.connect(spider_tunnel) # Web trampolines (bounce twice on each to gain momentum). + + pole_course.connect(robot_cave) # Blue eco platform down. + + scaffolding_level_one.connect(robot_cave) # All scaffolding (level 1+) connects back by jumping down. + + # Elevator, but the orbs need double jump or jump kick. + scaffolding_level_one.connect(scaffolding_level_zero, rule=lambda state: + state.has_any(("Double Jump", "Jump Kick"), player)) + + # Narrow enough that enemies are unavoidable. + scaffolding_level_one.connect(scaffolding_level_two, rule=lambda state: can_fight(state, player)) + + scaffolding_level_zero.connect(scaffolding_level_one) # Elevator. + + scaffolding_level_two.connect(robot_cave) # Jump down. + scaffolding_level_two.connect(scaffolding_level_one) # Elevator. + + # Elevator, but narrow enough that enemies are unavoidable. + scaffolding_level_two.connect(scaffolding_level_three, rule=lambda state: can_fight(state, player)) + + scaffolding_level_three.connect(robot_cave) # Jump down. + scaffolding_level_three.connect(scaffolding_level_two) # Elevator. + + spider_tunnel.connect(robot_cave) # Back to web trampolines. + spider_tunnel.connect(main_area) # Escape with jump pad. + + # Requires yellow eco switch. + spider_tunnel.connect(spider_tunnel_crates, rule=lambda state: state.has("Yellow Eco Switch", player)) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(dark_crystals) + world.level_to_regions[level_name].append(dark_cave) + world.level_to_regions[level_name].append(robot_cave) + world.level_to_regions[level_name].append(scaffolding_level_zero) + world.level_to_regions[level_name].append(scaffolding_level_one) + world.level_to_regions[level_name].append(scaffolding_level_two) + world.level_to_regions[level_name].append(scaffolding_level_three) + world.level_to_regions[level_name].append(pole_course) + world.level_to_regions[level_name].append(spider_tunnel) + world.level_to_regions[level_name].append(spider_tunnel_crates) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(13, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/volcanic_crater_regions.py b/worlds/jakanddaxter/regs/volcanic_crater_regions.py new file mode 100644 index 000000000000..47bfccfd2b7d --- /dev/null +++ b/worlds/jakanddaxter/regs/volcanic_crater_regions.py @@ -0,0 +1,52 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_reach_orbs_level +from ..locs import scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # No area is inaccessible in VC even with only running and jumping. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 50) + main_area.add_cell_locations([96], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([97], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 96)) + main_area.add_cell_locations([98], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 97)) + main_area.add_cell_locations([99], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 98)) + main_area.add_cell_locations([100], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([101], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 100)) + + # Hidden Power Cell: you can carry yellow eco from Spider Cave just by running and jumping + # and using your Goggles to shoot the box (you do not need Punch to shoot from FP mode). + main_area.add_cell_locations([74]) + + # No blue eco sources in this area, all boxes must be broken by hand (yellow eco can't be carried far enough). + main_area.add_fly_locations(scouts.locVC_scoutTable.keys(), access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Approach the gondola to get this check. + main_area.add_special_locations([105]) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(11, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/requirements.txt b/worlds/jakanddaxter/requirements.txt new file mode 100644 index 000000000000..ca36764fbfaa --- /dev/null +++ b/worlds/jakanddaxter/requirements.txt @@ -0,0 +1 @@ +Pymem>=1.13.0 diff --git a/worlds/jakanddaxter/rules.py b/worlds/jakanddaxter/rules.py new file mode 100644 index 000000000000..71b94df885c8 --- /dev/null +++ b/worlds/jakanddaxter/rules.py @@ -0,0 +1,230 @@ +import typing +from BaseClasses import CollectionState +from Options import OptionError +from .options import (EnableOrbsanity, + GlobalOrbsanityBundleSize, + PerLevelOrbsanityBundleSize, + FireCanyonCellCount, + MountainPassCellCount, + LavaTubeCellCount, + CitizenOrbTradeAmount, + OracleOrbTradeAmount) +from .locs import cell_locations as cells +from .locations import location_table +from .levels import level_table + +if typing.TYPE_CHECKING: + from . import JakAndDaxterWorld + + +def set_orb_trade_rule(world: "JakAndDaxterWorld"): + options = world.options + player = world.player + + if options.enable_orbsanity == EnableOrbsanity.option_off: + world.can_trade = lambda state, required_orbs, required_previous_trade: ( + can_trade_vanilla(state, player, world, required_orbs, required_previous_trade)) + else: + world.can_trade = lambda state, required_orbs, required_previous_trade: ( + can_trade_orbsanity(state, player, world, required_orbs, required_previous_trade)) + + +def recalculate_reachable_orbs(state: CollectionState, player: int, world: "JakAndDaxterWorld") -> None: + + # Recalculate every level, every time the cache is stale, because you don't know + # when a specific bundle of orbs in one level may unlock access to another. + accessible_total_orbs = 0 + for level in level_table: + accessible_level_orbs = count_reachable_orbs_level(state, world, level) + accessible_total_orbs += accessible_level_orbs + state.prog_items[player][f"{level} Reachable Orbs".lstrip()] = accessible_level_orbs + + # Also recalculate the global count, still used even when Orbsanity is Off. + state.prog_items[player]["Reachable Orbs"] = accessible_total_orbs + state.prog_items[player]["Reachable Orbs Fresh"] = True + + +def count_reachable_orbs_global(state: CollectionState, + world: "JakAndDaxterWorld") -> int: + + accessible_orbs = 0 + for level_regions in world.level_to_orb_regions.values(): + for region in level_regions: + if region.can_reach(state): + accessible_orbs += region.orb_count + return accessible_orbs + + +def count_reachable_orbs_level(state: CollectionState, + world: "JakAndDaxterWorld", + level_name: str = "") -> int: + + accessible_orbs = 0 + for region in world.level_to_orb_regions[level_name]: + if region.can_reach(state): + accessible_orbs += region.orb_count + return accessible_orbs + + +def can_reach_orbs_global(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + orb_amount: int) -> bool: + + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + return state.has("Reachable Orbs", player, orb_amount) + + +def can_reach_orbs_level(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + level_name: str, + orb_amount: int) -> bool: + + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + return state.has(f"{level_name} Reachable Orbs", player, orb_amount) + + +def can_trade_vanilla(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + required_orbs: int, + required_previous_trade: typing.Optional[int] = None) -> bool: + + # With Orbsanity Off, Reachable Orbs are in fact Tradeable Orbs. + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + if required_previous_trade: + name_of_previous_trade = location_table[cells.to_ap_id(required_previous_trade)] + return (state.has("Reachable Orbs", player, required_orbs) + and state.can_reach_location(name_of_previous_trade, player=player)) + return state.has("Reachable Orbs", player, required_orbs) + + +def can_trade_orbsanity(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + required_orbs: int, + required_previous_trade: typing.Optional[int] = None) -> bool: + + # Yes, even Orbsanity trades may unlock access to new Reachable Orbs. + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + if required_previous_trade: + name_of_previous_trade = location_table[cells.to_ap_id(required_previous_trade)] + return (state.has("Tradeable Orbs", player, required_orbs) + and state.can_reach_location(name_of_previous_trade, player=player)) + return state.has("Tradeable Orbs", player, required_orbs) + + +def can_free_scout_flies(state: CollectionState, player: int) -> bool: + return state.has("Jump Dive", player) or state.has_all({"Crouch", "Crouch Uppercut"}, player) + + +def can_fight(state: CollectionState, player: int) -> bool: + return state.has_any(("Jump Dive", "Jump Kick", "Punch", "Kick"), player) + + +def enforce_multiplayer_limits(world: "JakAndDaxterWorld"): + options = world.options + friendly_message = "" + + if (options.enable_orbsanity == EnableOrbsanity.option_global + and (options.global_orbsanity_bundle_size.value < GlobalOrbsanityBundleSize.friendly_minimum + or options.global_orbsanity_bundle_size.value > GlobalOrbsanityBundleSize.friendly_maximum)): + friendly_message += (f" " + f"{options.global_orbsanity_bundle_size.display_name} must be no less than " + f"{GlobalOrbsanityBundleSize.friendly_minimum} and no greater than " + f"{GlobalOrbsanityBundleSize.friendly_maximum} (currently " + f"{options.global_orbsanity_bundle_size.value}).\n") + + if (options.enable_orbsanity == EnableOrbsanity.option_per_level + and options.level_orbsanity_bundle_size.value < PerLevelOrbsanityBundleSize.friendly_minimum): + friendly_message += (f" " + f"{options.level_orbsanity_bundle_size.display_name} must be no less than " + f"{PerLevelOrbsanityBundleSize.friendly_minimum} (currently " + f"{options.level_orbsanity_bundle_size.value}).\n") + + if options.fire_canyon_cell_count.value > FireCanyonCellCount.friendly_maximum: + friendly_message += (f" " + f"{options.fire_canyon_cell_count.display_name} must be no greater than " + f"{FireCanyonCellCount.friendly_maximum} (currently " + f"{options.fire_canyon_cell_count.value}).\n") + + if options.mountain_pass_cell_count.value > MountainPassCellCount.friendly_maximum: + friendly_message += (f" " + f"{options.mountain_pass_cell_count.display_name} must be no greater than " + f"{MountainPassCellCount.friendly_maximum} (currently " + f"{options.mountain_pass_cell_count.value}).\n") + + if options.lava_tube_cell_count.value > LavaTubeCellCount.friendly_maximum: + friendly_message += (f" " + f"{options.lava_tube_cell_count.display_name} must be no greater than " + f"{LavaTubeCellCount.friendly_maximum} (currently " + f"{options.lava_tube_cell_count.value}).\n") + + if options.citizen_orb_trade_amount.value > CitizenOrbTradeAmount.friendly_maximum: + friendly_message += (f" " + f"{options.citizen_orb_trade_amount.display_name} must be no greater than " + f"{CitizenOrbTradeAmount.friendly_maximum} (currently " + f"{options.citizen_orb_trade_amount.value}).\n") + + if options.oracle_orb_trade_amount.value > OracleOrbTradeAmount.friendly_maximum: + friendly_message += (f" " + f"{options.oracle_orb_trade_amount.display_name} must be no greater than " + f"{OracleOrbTradeAmount.friendly_maximum} (currently " + f"{options.oracle_orb_trade_amount.value}).\n") + + if friendly_message != "": + raise OptionError(f"{world.player_name}: The options you have chosen may disrupt the multiworld. \n" + f"Please adjust the following Options for a multiplayer game. \n" + f"{friendly_message}" + f"Or use 'random-range-x-y' instead of 'random' in your player yaml.\n" + f"Or set 'enforce_friendly_options' in the seed generator's host.yaml to false. " + f"(Use at your own risk!)") + + +def enforce_singleplayer_limits(world: "JakAndDaxterWorld"): + options = world.options + friendly_message = "" + + if options.fire_canyon_cell_count.value > FireCanyonCellCount.friendly_maximum: + friendly_message += (f" " + f"{options.fire_canyon_cell_count.display_name} must be no greater than " + f"{FireCanyonCellCount.friendly_maximum} (currently " + f"{options.fire_canyon_cell_count.value}).\n") + + if options.mountain_pass_cell_count.value > MountainPassCellCount.friendly_maximum: + friendly_message += (f" " + f"{options.mountain_pass_cell_count.display_name} must be no greater than " + f"{MountainPassCellCount.friendly_maximum} (currently " + f"{options.mountain_pass_cell_count.value}).\n") + + if options.lava_tube_cell_count.value > LavaTubeCellCount.friendly_maximum: + friendly_message += (f" " + f"{options.lava_tube_cell_count.display_name} must be no greater than " + f"{LavaTubeCellCount.friendly_maximum} (currently " + f"{options.lava_tube_cell_count.value}).\n") + + if friendly_message != "": + raise OptionError(f"The options you have chosen may result in seed generation failures. \n" + f"Please adjust the following Options for a singleplayer game. \n" + f"{friendly_message}" + f"Or use 'random-range-x-y' instead of 'random' in your player yaml.\n" + f"Or set 'enforce_friendly_options' in your host.yaml to false. " + f"(Use at your own risk!)") + + +def verify_orb_trade_amounts(world: "JakAndDaxterWorld"): + + if world.total_trade_orbs > 2000: + raise OptionError(f"{world.player_name}: Required number of orbs for all trades ({world.total_trade_orbs}) " + f"is more than all the orbs in the game (2000). Reduce the value of either " + f"{world.options.citizen_orb_trade_amount.display_name} " + f"or {world.options.oracle_orb_trade_amount.display_name}.") diff --git a/worlds/jakanddaxter/test/__init__.py b/worlds/jakanddaxter/test/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/test/bases.py b/worlds/jakanddaxter/test/bases.py new file mode 100644 index 000000000000..73d18b80bf3c --- /dev/null +++ b/worlds/jakanddaxter/test/bases.py @@ -0,0 +1,107 @@ +from worlds.jakanddaxter import JakAndDaxterWorld +from ..game_id import jak1_name +from test.bases import WorldTestBase + + +class JakAndDaxterTestBase(WorldTestBase): + game = jak1_name + world: JakAndDaxterWorld + + level_info = { + "Geyser Rock": { + "cells": 4, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Sandover Village": { + "cells": 6, + "flies": 7, + "orbs": 50, + "caches": 1, + }, + "Forbidden Jungle": { + "cells": 8, + "flies": 7, + "orbs": 150, + "caches": 1, + }, + "Sentinel Beach": { + "cells": 8, + "flies": 7, + "orbs": 150, + "caches": 2, + }, + "Misty Island": { + "cells": 8, + "flies": 7, + "orbs": 150, + "caches": 1, + }, + "Fire Canyon": { + "cells": 2, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Rock Village": { + "cells": 6, + "flies": 7, + "orbs": 50, + "caches": 1, + }, + "Precursor Basin": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 0, + }, + "Lost Precursor City": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 2, + }, + "Boggy Swamp": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 0, + }, + "Mountain Pass": { + "cells": 4, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Volcanic Crater": { + "cells": 8, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Spider Cave": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 0, + }, + "Snowy Mountain": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 3, + }, + "Lava Tube": { + "cells": 2, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Gol and Maia's Citadel": { + "cells": 5, + "flies": 7, + "orbs": 200, + "caches": 3, + }, + } diff --git a/worlds/jakanddaxter/test/test_locations.py b/worlds/jakanddaxter/test/test_locations.py new file mode 100644 index 000000000000..1d47066b9314 --- /dev/null +++ b/worlds/jakanddaxter/test/test_locations.py @@ -0,0 +1,52 @@ +import typing + +from .bases import JakAndDaxterTestBase +from ..game_id import jak1_id +from ..regs.region_base import JakAndDaxterRegion +from ..locs import (scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches, + orb_locations as orbs) + + +class LocationsTest(JakAndDaxterTestBase): + + def get_regions(self): + return [typing.cast(JakAndDaxterRegion, reg) for reg in self.multiworld.get_regions(self.player)] + + def test_count_cells(self): + + for level in self.level_info: + cell_count = 0 + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + for sl in sublevels: + for loc in sl.locations: + if loc.address in range(jak1_id, jak1_id + scouts.fly_offset): + cell_count += 1 + self.assertEqual(self.level_info[level]["cells"] - 1, cell_count, level) # Don't count the Free 7 Cells. + + def test_count_flies(self): + for level in self.level_info: + fly_count = 0 + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + for sl in sublevels: + for loc in sl.locations: + if loc.address in range(jak1_id + scouts.fly_offset, jak1_id + specials.special_offset): + fly_count += 1 + self.assertEqual(self.level_info[level]["flies"], fly_count, level) + + def test_count_orbs(self): + for level in self.level_info: + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + orb_count = sum([reg.orb_count for reg in sublevels]) + self.assertEqual(self.level_info[level]["orbs"], orb_count, level) + + def test_count_caches(self): + for level in self.level_info: + cache_count = 0 + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + for sl in sublevels: + for loc in sl.locations: + if loc.address in range(jak1_id + caches.orb_cache_offset, jak1_id + orbs.orb_offset): + cache_count += 1 + self.assertEqual(self.level_info[level]["caches"], cache_count, level) diff --git a/worlds/jakanddaxter/test/test_moverando.py b/worlds/jakanddaxter/test/test_moverando.py new file mode 100644 index 000000000000..d912d43af810 --- /dev/null +++ b/worlds/jakanddaxter/test/test_moverando.py @@ -0,0 +1,32 @@ +from .bases import JakAndDaxterTestBase +from ..items import move_item_table + + +class MoveRandoTest(JakAndDaxterTestBase): + options = { + "enable_move_randomizer": True + } + + def test_move_items_in_pool(self): + for move in move_item_table: + self.assertIn(move_item_table[move], {item.name for item in self.multiworld.itempool}) + self.assertNotIn(move_item_table[move], + {item.name for item in self.multiworld.precollected_items[self.player]}) + + def test_cannot_reach_without_move(self): + self.assertAccessDependency( + ["GR: Climb Up The Cliff"], + [["Double Jump"], ["Crouch"]], + only_check_listed=True) + + +class NoMoveRandoTest(JakAndDaxterTestBase): + options = { + "enable_move_randomizer": False + } + + def test_move_items_in_inventory(self): + for move in move_item_table: + self.assertNotIn(move_item_table[move], {item.name for item in self.multiworld.itempool}) + self.assertIn(move_item_table[move], + {item.name for item in self.multiworld.precollected_items[self.player]}) diff --git a/worlds/jakanddaxter/test/test_orbsanity.py b/worlds/jakanddaxter/test/test_orbsanity.py new file mode 100644 index 000000000000..5f871c855247 --- /dev/null +++ b/worlds/jakanddaxter/test/test_orbsanity.py @@ -0,0 +1,61 @@ +from .bases import JakAndDaxterTestBase +from ..items import orb_item_table + + +class NoOrbsanityTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 0, # Off + "level_orbsanity_bundle_size": 25, + "global_orbsanity_bundle_size": 16 + } + + def test_orb_bundles_not_exist_in_pool(self): + for bundle in orb_item_table: + self.assertNotIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + + def test_orb_bundle_count(self): + bundle_name = orb_item_table[self.options["level_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(0, count) + + bundle_name = orb_item_table[self.options["global_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(0, count) + + +class PerLevelOrbsanityTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 1, # Per Level + "level_orbsanity_bundle_size": 25 + } + + def test_orb_bundles_exist_in_pool(self): + for bundle in orb_item_table: + if bundle == self.options["level_orbsanity_bundle_size"]: + self.assertIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + else: + self.assertNotIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + + def test_orb_bundle_count(self): + bundle_name = orb_item_table[self.options["level_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(80, count) + + +class GlobalOrbsanityTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 2, # Global + "global_orbsanity_bundle_size": 16 + } + + def test_orb_bundles_exist_in_pool(self): + for bundle in orb_item_table: + if bundle == self.options["global_orbsanity_bundle_size"]: + self.assertIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + else: + self.assertNotIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + + def test_orb_bundle_count(self): + bundle_name = orb_item_table[self.options["global_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(125, count) diff --git a/worlds/jakanddaxter/test/test_orderedcellcounts.py b/worlds/jakanddaxter/test/test_orderedcellcounts.py new file mode 100644 index 000000000000..7ad0d76ca50a --- /dev/null +++ b/worlds/jakanddaxter/test/test_orderedcellcounts.py @@ -0,0 +1,29 @@ +from .bases import JakAndDaxterTestBase + + +class ReorderedCellCountsTest(JakAndDaxterTestBase): + options = { + "enable_ordered_cell_counts": True, + "fire_canyon_cell_count": 20, + "mountain_pass_cell_count": 15, + "lava_tube_cell_count": 10, + } + + def test_reordered_cell_counts(self): + self.world.generate_early() + self.assertLessEqual(self.world.options.fire_canyon_cell_count, self.world.options.mountain_pass_cell_count) + self.assertLessEqual(self.world.options.mountain_pass_cell_count, self.world.options.lava_tube_cell_count) + + +class UnorderedCellCountsTest(JakAndDaxterTestBase): + options = { + "enable_ordered_cell_counts": False, + "fire_canyon_cell_count": 20, + "mountain_pass_cell_count": 15, + "lava_tube_cell_count": 10, + } + + def test_unordered_cell_counts(self): + self.world.generate_early() + self.assertGreaterEqual(self.world.options.fire_canyon_cell_count, self.world.options.mountain_pass_cell_count) + self.assertGreaterEqual(self.world.options.mountain_pass_cell_count, self.world.options.lava_tube_cell_count) diff --git a/worlds/jakanddaxter/test/test_trades.py b/worlds/jakanddaxter/test/test_trades.py new file mode 100644 index 000000000000..e1d1a2e53dec --- /dev/null +++ b/worlds/jakanddaxter/test/test_trades.py @@ -0,0 +1,39 @@ +from .bases import JakAndDaxterTestBase + + +class TradesCostNothingTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 2, + "global_orbsanity_bundle_size": 5, + "citizen_orb_trade_amount": 0, + "oracle_orb_trade_amount": 0 + } + + def test_orb_items_are_filler(self): + self.collect_all_but("") + self.assertNotIn("5 Precursor Orbs", self.multiworld.state.prog_items) + + def test_trades_are_accessible(self): + self.assertTrue(self.multiworld + .get_location("SV: Bring 90 Orbs To The Mayor", self.player) + .can_reach(self.multiworld.state)) + + +class TradesCostEverythingTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 2, + "global_orbsanity_bundle_size": 5, + "citizen_orb_trade_amount": 120, + "oracle_orb_trade_amount": 150 + } + + def test_orb_items_are_progression(self): + self.collect_all_but("") + self.assertIn("5 Precursor Orbs", self.multiworld.state.prog_items[self.player]) + self.assertEqual(396, self.multiworld.state.prog_items[self.player]["5 Precursor Orbs"]) + + def test_trades_are_accessible(self): + self.collect_all_but("") + self.assertTrue(self.multiworld + .get_location("SV: Bring 90 Orbs To The Mayor", self.player) + .can_reach(self.multiworld.state)) diff --git a/worlds/jakanddaxter/test/test_traps.py b/worlds/jakanddaxter/test/test_traps.py new file mode 100644 index 000000000000..841997798bf8 --- /dev/null +++ b/worlds/jakanddaxter/test/test_traps.py @@ -0,0 +1,80 @@ +from BaseClasses import ItemClassification +from .bases import JakAndDaxterTestBase + + +class NoTrapsTest(JakAndDaxterTestBase): + options = { + "filler_power_cells_replaced_with_traps": 0, + "filler_orb_bundles_replaced_with_traps": 0, + "trap_weights": {"Trip Trap": 1}, + } + + def test_trap_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Trip Trap" + and item.classification == ItemClassification.trap]) + self.assertEqual(0, count) + + def test_prog_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.progression_skip_balancing]) + self.assertEqual(72, count) + + def test_fill_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.filler]) + self.assertEqual(29, count) + + +class SomeTrapsTest(JakAndDaxterTestBase): + options = { + "filler_power_cells_replaced_with_traps": 10, + "filler_orb_bundles_replaced_with_traps": 10, + "trap_weights": {"Trip Trap": 1}, + } + + def test_trap_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Trip Trap" + and item.classification == ItemClassification.trap]) + self.assertEqual(10, count) + + def test_prog_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.progression_skip_balancing]) + self.assertEqual(72, count) + + def test_fill_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.filler]) + self.assertEqual(19, count) + + +class MaximumTrapsTest(JakAndDaxterTestBase): + options = { + "filler_power_cells_replaced_with_traps": 100, + "filler_orb_bundles_replaced_with_traps": 100, + "trap_weights": {"Trip Trap": 1}, + } + + def test_trap_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Trip Trap" + and item.classification == ItemClassification.trap]) + self.assertEqual(29, count) + + def test_prog_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.progression_skip_balancing]) + self.assertEqual(72, count) + + def test_fill_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.filler]) + self.assertEqual(0, count) From d5bacaba639a9fc14a8148ea005112a76c700b56 Mon Sep 17 00:00:00 2001 From: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com> Date: Wed, 21 May 2025 14:30:39 +0200 Subject: [PATCH 063/183] shapez: Implement New Game (#3960) Adds shapez as a supported game in AP. --- worlds/shapez/__init__.py | 417 + worlds/shapez/common/__init__.py | 0 worlds/shapez/common/options.py | 190 + worlds/shapez/data/__init__.py | 0 worlds/shapez/data/generate.py | 134 + worlds/shapez/data/options.json | 4 + worlds/shapez/data/shapesanity_pool.py | 75814 ++++++++++++++++ worlds/shapez/data/strings.py | 337 + worlds/shapez/docs/datapackage_settings_de.md | 35 + worlds/shapez/docs/datapackage_settings_en.md | 33 + worlds/shapez/docs/de_shapez.md | 71 + worlds/shapez/docs/en_shapez.md | 65 + worlds/shapez/docs/setup_de.md | 62 + worlds/shapez/docs/setup_en.md | 58 + worlds/shapez/docs/shapesanity_full.png | Bin 0 -> 127240 bytes worlds/shapez/items.py | 279 + worlds/shapez/locations.py | 546 + worlds/shapez/options.py | 310 + worlds/shapez/presets.py | 49 + worlds/shapez/regions.py | 277 + worlds/shapez/test/__init__.py | 213 + 21 files changed, 78894 insertions(+) create mode 100644 worlds/shapez/__init__.py create mode 100644 worlds/shapez/common/__init__.py create mode 100644 worlds/shapez/common/options.py create mode 100644 worlds/shapez/data/__init__.py create mode 100644 worlds/shapez/data/generate.py create mode 100644 worlds/shapez/data/options.json create mode 100644 worlds/shapez/data/shapesanity_pool.py create mode 100644 worlds/shapez/data/strings.py create mode 100644 worlds/shapez/docs/datapackage_settings_de.md create mode 100644 worlds/shapez/docs/datapackage_settings_en.md create mode 100644 worlds/shapez/docs/de_shapez.md create mode 100644 worlds/shapez/docs/en_shapez.md create mode 100644 worlds/shapez/docs/setup_de.md create mode 100644 worlds/shapez/docs/setup_en.md create mode 100644 worlds/shapez/docs/shapesanity_full.png create mode 100644 worlds/shapez/items.py create mode 100644 worlds/shapez/locations.py create mode 100644 worlds/shapez/options.py create mode 100644 worlds/shapez/presets.py create mode 100644 worlds/shapez/regions.py create mode 100644 worlds/shapez/test/__init__.py diff --git a/worlds/shapez/__init__.py b/worlds/shapez/__init__.py new file mode 100644 index 000000000000..2a77ed8c9c96 --- /dev/null +++ b/worlds/shapez/__init__.py @@ -0,0 +1,417 @@ +import math +from typing import Any, List, Dict, Tuple, Mapping + +from Options import OptionError +from .data.strings import OTHER, ITEMS, CATEGORY, LOCATIONS, SLOTDATA, GOALS, OPTIONS +from .items import item_descriptions, item_table, ShapezItem, \ + buildings_routing, buildings_processing, buildings_other, \ + buildings_top_row, buildings_wires, gameplay_unlocks, upgrades, \ + big_upgrades, filler, trap, bundles, belt_and_extractor, standard_traps, random_draining_trap, split_draining_traps, \ + whacky_upgrade_traps +from .locations import ShapezLocation, addlevels, addupgrades, addachievements, location_description, \ + addshapesanity, addshapesanity_ut, shapesanity_simple, init_shapesanity_pool, achievement_locations, \ + level_locations, upgrade_locations, shapesanity_locations, categories +from .presets import options_presets +from .options import ShapezOptions +from worlds.AutoWorld import World, WebWorld +from BaseClasses import Item, Tutorial, LocationProgressType, MultiWorld +from .regions import create_shapez_regions, has_x_belt_multiplier +from ..generic.Rules import add_rule + + +class ShapezWeb(WebWorld): + options_presets = options_presets + rich_text_options_doc = True + theme = "stone" + game_info_languages = ['en', 'de'] + setup_en = Tutorial( + "Multiworld Setup Guide", + "A guide to playing shapez with Archipelago:", + "English", + "setup_en.md", + "setup/en", + ["BlastSlimey"] + ) + setup_de = Tutorial( + setup_en.tutorial_name, + setup_en.description, + "Deutsch", + "setup_de.md", + "setup/de", + ["BlastSlimey"] + ) + datapackage_settings_en = Tutorial( + "Changing datapackage settings", + "3000 locations are too many or not enough? Here's how you can change that:", + "English", + "datapackage_settings_en.md", + "datapackage_settings/en", + ["BlastSlimey"] + ) + datapackage_settings_de = Tutorial( + datapackage_settings_en.tutorial_name, + datapackage_settings_en.description, + "Deutsch", + "datapackage_settings_de.md", + "datapackage_settings/de", + ["BlastSlimey"] + ) + tutorials = [setup_en, setup_de, datapackage_settings_en, datapackage_settings_de] + item_descriptions = item_descriptions + location_descriptions = location_description + + +class ShapezWorld(World): + """ + shapez is an automation game about cutting, rotating, stacking, and painting shapes, that you extract from randomly + generated patches on an infinite canvas, without the need to manage your infinite resources or to pay for building + your factories. + """ + game = OTHER.game_name + options_dataclass = ShapezOptions + options: ShapezOptions + topology_present = True + web = ShapezWeb() + base_id = 20010707 + item_name_to_id = {name: id for id, name in enumerate(item_table.keys(), base_id)} + location_name_to_id = {name: id for id, name in enumerate(level_locations + upgrade_locations + + achievement_locations + shapesanity_locations, base_id)} + item_name_groups = { + "Main Buildings": {ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker}, + "Processing Buildings": {*buildings_processing}, + "Goal Buildings": {ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.rotator_ccw, ITEMS.color_mixer, + ITEMS.stacker, ITEMS.cutter_quad, ITEMS.painter_double, ITEMS.painter_quad, ITEMS.wires, + ITEMS.switch, ITEMS.const_signal}, + "Most Useful Buildings": {ITEMS.balancer, ITEMS.tunnel, ITEMS.tunnel_tier_ii, ITEMS.comp_merger, + ITEMS.comp_splitter, ITEMS.trash, ITEMS.extractor_chain}, + "Most Important Buildings": {*belt_and_extractor}, + "Top Row Buildings": {*buildings_top_row}, + "Wires Layer Buildings": {*buildings_wires}, + "Gameplay Mechanics": {ITEMS.blueprints, ITEMS.wires}, + "Upgrades": {*{ITEMS.upgrade(size, cat) + for size in {CATEGORY.big, CATEGORY.small, CATEGORY.gigantic, CATEGORY.rising} + for cat in {CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting}}, + *{ITEMS.trap_upgrade(cat, size) + for cat in {CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting} + for size in {"", CATEGORY.demonic}}, + *{ITEMS.upgrade(size, CATEGORY.random) + for size in {CATEGORY.big, CATEGORY.small}}}, + **{f"{cat} Upgrades": {*{ITEMS.upgrade(size, cat) + for size in {CATEGORY.big, CATEGORY.small, CATEGORY.gigantic, CATEGORY.rising}}, + *{ITEMS.trap_upgrade(cat, size) + for size in {"", CATEGORY.demonic}}} + for cat in {CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting}}, + "Bundles": {*bundles}, + "Traps": {*standard_traps, *random_draining_trap, *split_draining_traps, *whacky_upgrade_traps}, + } + location_name_groups = { + "Levels": {*level_locations}, + "Upgrades": {*upgrade_locations}, + "Achievements": {*achievement_locations}, + "Shapesanity": {*shapesanity_locations}, + **{f"{cat} Upgrades": {loc for loc in upgrade_locations if loc.startswith(cat)} for cat in categories}, + "Only Belt and Extractor": {LOCATIONS.level(1), LOCATIONS.level(1, 1), + LOCATIONS.my_eyes, LOCATIONS.its_a_mess, LOCATIONS.getting_into_it, + LOCATIONS.perfectionist, LOCATIONS.oops, LOCATIONS.i_need_trains, LOCATIONS.gps, + LOCATIONS.a_long_time, LOCATIONS.addicted, + LOCATIONS.shapesanity(1), LOCATIONS.shapesanity(2), LOCATIONS.shapesanity(3)}, + } + + def __init__(self, multiworld: MultiWorld, player: int): + super().__init__(multiworld, player) + + # Defining instance attributes for each shapez world + # These are set to default values that should fail unit tests if not replaced with correct values + self.location_count: int = 0 + self.level_logic: List[str] = [] + self.upgrade_logic: List[str] = [] + self.level_logic_type: str = "" + self.upgrade_logic_type: str = "" + self.random_logic_phase_length: List[int] = [] + self.category_random_logic_amounts: Dict[str, int] = {} + self.maxlevel: int = 0 + self.finaltier: int = 0 + self.included_locations: Dict[str, Tuple[str, LocationProgressType]] = {} + self.client_seed: int = 0 + self.shapesanity_names: List[str] = [] + self.upgrade_traps_allowed: bool = False + + # Universal Tracker support + self.ut_active: bool = False + self.passthrough: Dict[str, any] = {} + self.location_id_to_alias: Dict[int, str] = {} + + @classmethod + def stage_generate_early(cls, multiworld: MultiWorld) -> None: + # Import the 75800 entries long shapesanity pool only once and only if it's actually needed + if len(shapesanity_simple) == 0: + init_shapesanity_pool() + + def generate_early(self) -> None: + # Calculate all the important values used for generating a shapez world, with some of them being random + self.upgrade_traps_allowed: bool = (self.options.include_whacky_upgrades and + (not self.options.goal == GOALS.efficiency_iii) and + self.options.throughput_levels_ratio == 0) + + # Load values from UT if this is a regenerated world + if hasattr(self.multiworld, "re_gen_passthrough"): + if OTHER.game_name in self.multiworld.re_gen_passthrough: + self.ut_active = True + self.passthrough = self.multiworld.re_gen_passthrough[OTHER.game_name] + self.maxlevel = self.passthrough[SLOTDATA.maxlevel] + self.finaltier = self.passthrough[SLOTDATA.finaltier] + self.client_seed = self.passthrough[SLOTDATA.seed] + self.level_logic = [self.passthrough[SLOTDATA.level_building(i+1)] for i in range(5)] + self.upgrade_logic = [self.passthrough[SLOTDATA.upgrade_building(i+1)] for i in range(5)] + self.level_logic_type = self.passthrough[SLOTDATA.rand_level_logic] + self.upgrade_logic_type = self.passthrough[SLOTDATA.rand_upgrade_logic] + self.random_logic_phase_length = [self.passthrough[SLOTDATA.phase_length(i)] for i in range(5)] + self.category_random_logic_amounts = {cat: self.passthrough[SLOTDATA.cat_buildings_amount(cat)] + for cat in [CATEGORY.belt_low, CATEGORY.miner_low, + CATEGORY.processors_low, CATEGORY.painting_low]} + # Forces balancers, tunnel, and trash to not appear in regen to make UT more accurate + self.options.early_balancer_tunnel_and_trash.value = 0 + return + + # "MAM" goal is supposed to be longer than vanilla, but to not have more options than necessary, + # both goal amounts for "MAM" and "Even fasterer" are set in a single option. + if self.options.goal == GOALS.mam and self.options.goal_amount < 27: + raise OptionError(self.player_name + + ": When setting goal to 1 ('mam'), goal_amount must be at least 27 and not " + + str(self.options.goal_amount.value)) + + # If lock_belt_and_extractor is true, the only sphere 1 locations will be achievements + if self.options.lock_belt_and_extractor and not self.options.include_achievements: + raise OptionError(self.player_name + ": Achievements must be included when belt and extractor are locked") + + # Determines maxlevel and finaltier, which are needed for location and item generation + if self.options.goal == GOALS.vanilla: + self.maxlevel = 25 + self.finaltier = 8 + elif self.options.goal == GOALS.mam: + self.maxlevel = self.options.goal_amount - 1 + self.finaltier = 8 + elif self.options.goal == GOALS.even_fasterer: + self.maxlevel = 26 + self.finaltier = self.options.goal_amount.value + else: # goal == efficiency_iii + self.maxlevel = 26 + self.finaltier = 8 + + # Setting the seed for the game before any other randomization call is done + self.client_seed = self.random.randint(0, 100000) + + # Determines the order of buildings for levels logic + if self.options.randomize_level_requirements: + self.level_logic_type = self.options.randomize_level_logic.current_key + if self.level_logic_type.endswith(OPTIONS.logic_shuffled) or self.level_logic_type == OPTIONS.logic_dopamine: + vanilla_list = [ITEMS.cutter, ITEMS.painter, ITEMS.stacker] + while len(vanilla_list) > 0: + index = self.random.randint(0, len(vanilla_list)-1) + next_building = vanilla_list.pop(index) + if next_building == ITEMS.cutter: + vanilla_list.append(ITEMS.rotator) + if next_building == ITEMS.painter: + vanilla_list.append(ITEMS.color_mixer) + self.level_logic.append(next_building) + else: + self.level_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + else: + self.level_logic_type = OPTIONS.logic_vanilla + self.level_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + + # Determines the order of buildings for upgrades logic + if self.options.randomize_upgrade_requirements: + self.upgrade_logic_type = self.options.randomize_upgrade_logic.current_key + if self.upgrade_logic_type == OPTIONS.logic_hardcore: + self.upgrade_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + elif self.upgrade_logic_type == OPTIONS.logic_category: + self.upgrade_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.stacker, ITEMS.painter, ITEMS.color_mixer] + else: + vanilla_list = [ITEMS.cutter, ITEMS.painter, ITEMS.stacker] + while len(vanilla_list) > 0: + index = self.random.randint(0, len(vanilla_list)-1) + next_building = vanilla_list.pop(index) + if next_building == ITEMS.cutter: + vanilla_list.append(ITEMS.rotator) + if next_building == ITEMS.painter: + vanilla_list.append(ITEMS.color_mixer) + self.upgrade_logic.append(next_building) + else: + self.upgrade_logic_type = OPTIONS.logic_vanilla_like + self.upgrade_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + + # Determine lenghts of phases in level logic type "random" + self.random_logic_phase_length = [1, 1, 1, 1, 1] + if self.level_logic_type.startswith(OPTIONS.logic_random_steps): + remaininglength = self.maxlevel - 1 + for phase in range(0, 5): + if self.random.random() < 0.1: # Make sure that longer phases are less frequent + self.random_logic_phase_length[phase] = self.random.randint(0, remaininglength) + else: + self.random_logic_phase_length[phase] = self.random.randint(0, remaininglength // (6 - phase)) + remaininglength -= self.random_logic_phase_length[phase] + + # Determine amount of needed buildings for each category in upgrade logic type "category_random" + self.category_random_logic_amounts = {CATEGORY.belt_low: 0, CATEGORY.miner_low: 1, + CATEGORY.processors_low: 2, CATEGORY.painting_low: 3} + if self.upgrade_logic_type == OPTIONS.logic_category_random: + cats = [CATEGORY.belt_low, CATEGORY.miner_low, CATEGORY.processors_low, CATEGORY.painting_low] + nextcat = self.random.choice(cats) + self.category_random_logic_amounts[nextcat] = 0 + cats.remove(nextcat) + for cat in cats: + self.category_random_logic_amounts[cat] = self.random.randint(0, 5) + + def create_item(self, name: str) -> Item: + return ShapezItem(name, item_table[name](self.options), self.item_name_to_id[name], self.player) + + def get_filler_item_name(self) -> str: + return filler(self.random.random(), bool(self.options.include_whacky_upgrades)) + + def append_shapesanity(self, name: str) -> None: + """This method is given as a parameter when creating the locations for shapesanity.""" + self.shapesanity_names.append(name) + + def add_alias(self, location_name: str, alias: str): + """This method is given as a parameter when locations with helpful aliases for UT are created.""" + if self.ut_active: + self.location_id_to_alias[self.location_name_to_id[location_name]] = alias + + def create_regions(self) -> None: + # Create list of all included level and upgrade locations based on player options + # This already includes the region to be placed in and the LocationProgressType + self.included_locations = {**addlevels(self.maxlevel, self.level_logic_type, + self.random_logic_phase_length), + **addupgrades(self.finaltier, self.upgrade_logic_type, + self.category_random_logic_amounts)} + + # Add shapesanity to included location and creates the corresponding list based on player options + if self.ut_active: + self.shapesanity_names = self.passthrough[SLOTDATA.shapesanity] + self.included_locations.update(addshapesanity_ut(self.shapesanity_names, self.add_alias)) + else: + self.included_locations.update(addshapesanity(self.options.shapesanity_amount.value, self.random, + self.append_shapesanity, self.add_alias)) + + # Add achievements to included locations based on player options + if self.options.include_achievements: + self.included_locations.update(addachievements( + bool(self.options.exclude_softlock_achievements), bool(self.options.exclude_long_playtime_achievements), + bool(self.options.exclude_progression_unreasonable), self.maxlevel, self.upgrade_logic_type, + self.category_random_logic_amounts, self.options.goal.current_key, self.included_locations, + self.add_alias, self.upgrade_traps_allowed)) + + # Save the final amount of to-be-filled locations + self.location_count = len(self.included_locations) + + # Create regions and entrances based on included locations and player options + self.multiworld.regions.extend(create_shapez_regions(self.player, self.multiworld, + bool(self.options.allow_floating_layers.value), + self.included_locations, self.location_name_to_id, + self.level_logic, self.upgrade_logic, + self.options.early_balancer_tunnel_and_trash.current_key, + self.options.goal.current_key)) + + def create_items(self) -> None: + # Include guaranteed items (game mechanic unlocks and 7x4 big upgrades) + included_items: List[Item] = ([self.create_item(name) for name in buildings_processing.keys()] + + [self.create_item(name) for name in buildings_routing.keys()] + + [self.create_item(name) for name in buildings_other.keys()] + + [self.create_item(name) for name in buildings_top_row.keys()] + + [self.create_item(name) for name in buildings_wires.keys()] + + [self.create_item(name) for name in gameplay_unlocks.keys()] + + [self.create_item(name) for name in big_upgrades for _ in range(7)]) + + if not self.options.lock_belt_and_extractor: + for name in belt_and_extractor: + self.multiworld.push_precollected(self.create_item(name)) + else: # This also requires self.options.include_achievements to be true + included_items.extend([self.create_item(name) for name in belt_and_extractor.keys()]) + + # Give a detailed error message if there are already more items than available locations. + # At the moment, this won't happen, but it's better for debugging in case a future update breaks things. + if len(included_items) > self.location_count: + raise RuntimeError(self.player_name + ": There are more guaranteed items than available locations") + + # Get value from traps probability option and convert to float + traps_probability = self.options.traps_percentage/100 + split_draining = bool(self.options.split_inventory_draining_trap) + # Fill remaining locations with fillers + for x in range(self.location_count - len(included_items)): + if self.random.random() < traps_probability: + # Fill with trap + included_items.append(self.create_item(trap(self.random.random(), split_draining, + self.upgrade_traps_allowed))) + else: + # Fil with random filler item + included_items.append(self.create_item(self.get_filler_item_name())) + + # Add correct number of items to itempool + self.multiworld.itempool += included_items + + # Add balancer, tunnel, and trash to early items if player options say so + if self.options.early_balancer_tunnel_and_trash == OPTIONS.sphere_1: + self.multiworld.early_items[self.player][ITEMS.balancer] = 1 + self.multiworld.early_items[self.player][ITEMS.tunnel] = 1 + self.multiworld.early_items[self.player][ITEMS.trash] = 1 + + def set_rules(self) -> None: + # Levels might need more belt speed if they require throughput per second. As the randomization of what levels + # need throughput happens in the client mod, this logic needs to be applied to all levels. This is applied to + # every individual level instead of regions, because they would need a much more complex calculation to prevent + # softlocks. + + def f(x: int, name: str): + # These calculations are taken from the client mod + if x < 26: + throughput = math.ceil((2.999+x*0.333)*self.options.required_shapes_multiplier/10) + else: + throughput = min((4+(x-26)*0.25)*self.options.required_shapes_multiplier/10, 200) + if throughput/32 >= 1: + add_rule(self.get_location(name), + lambda state: has_x_belt_multiplier(state, self.player, throughput/32)) + + if not self.options.throughput_levels_ratio == 0: + f(0, LOCATIONS.level(1, 1)) + f(19, LOCATIONS.level(20, 1)) + f(19, LOCATIONS.level(20, 2)) + for _x in range(self.maxlevel): + f(_x, LOCATIONS.level(_x+1)) + if self.options.goal.current_key in [GOALS.vanilla, GOALS.mam]: + f(self.maxlevel, LOCATIONS.goal) + + def fill_slot_data(self) -> Mapping[str, Any]: + # Buildings logic; all buildings as individual parameters + level_logic_data = {SLOTDATA.level_building(x+1): self.level_logic[x] for x in range(5)} + upgrade_logic_data = {SLOTDATA.upgrade_building(x+1): self.upgrade_logic[x] for x in range(5)} + # Randomized values for certain logic types + logic_type_random_data = {SLOTDATA.phase_length(x): self.random_logic_phase_length[x] for x in range(0, 5)} + logic_type_cat_random_data = {SLOTDATA.cat_buildings_amount(cat): self.category_random_logic_amounts[cat] + for cat in [CATEGORY.belt_low, CATEGORY.miner_low, + CATEGORY.processors_low, CATEGORY.painting_low]} + + # Options that are relevant to the mod + option_data = { + SLOTDATA.goal: self.options.goal.current_key, + SLOTDATA.maxlevel: self.maxlevel, + SLOTDATA.finaltier: self.finaltier, + SLOTDATA.req_shapes_mult: self.options.required_shapes_multiplier.value, + SLOTDATA.allow_float_layers: bool(self.options.allow_floating_layers), + SLOTDATA.rand_level_req: bool(self.options.randomize_level_requirements), + SLOTDATA.rand_upgrade_req: bool(self.options.randomize_upgrade_requirements), + SLOTDATA.rand_level_logic: self.level_logic_type, + SLOTDATA.rand_upgrade_logic: self.upgrade_logic_type, + SLOTDATA.throughput_levels_ratio: self.options.throughput_levels_ratio.value, + SLOTDATA.comp_growth_gradient: self.options.complexity_growth_gradient.value, + SLOTDATA.same_late: bool(self.options.same_late_upgrade_requirements), + SLOTDATA.toolbar_shuffling: bool(self.options.toolbar_shuffling), + } + + return {**level_logic_data, **upgrade_logic_data, **option_data, **logic_type_random_data, + **logic_type_cat_random_data, SLOTDATA.seed: self.client_seed, + SLOTDATA.shapesanity: self.shapesanity_names} + + def interpret_slot_data(self, slot_data: Dict[str, Any]) -> Dict[str, Any]: + """Helper function for Universal Tracker""" + return slot_data diff --git a/worlds/shapez/common/__init__.py b/worlds/shapez/common/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/shapez/common/options.py b/worlds/shapez/common/options.py new file mode 100644 index 000000000000..aa66ced03294 --- /dev/null +++ b/worlds/shapez/common/options.py @@ -0,0 +1,190 @@ +import random +import typing + +from Options import FreeText, NumericOption + + +class FloatRangeText(FreeText, NumericOption): + """FreeText option optimized for entering float numbers. + Supports everything that Range supports. + range_start and range_end have to be floats, while default has to be a string.""" + + default = "0.0" + value: float + range_start: float = 0.0 + range_end: float = 1.0 + + def __init__(self, value: str): + super().__init__(value) + value = value.lower() + if value.startswith("random"): + self.value = self.weighted_range(value) + elif value == "default" and hasattr(self, "default"): + self.value = float(self.default) + elif value == "high": + self.value = self.range_end + elif value == "low": + self.value = self.range_start + elif self.range_start == 0.0 \ + and hasattr(self, "default") \ + and self.default != "0.0" \ + and value in ("true", "false"): + # these are the conditions where "true" and "false" make sense + if value == "true": + self.value = float(self.default) + else: # "false" + self.value = 0.0 + else: + try: + self.value = float(value) + except ValueError: + raise Exception(f"Invalid value for option {self.__class__.__name__}: {value}") + except OverflowError: + raise Exception(f"Out of range floating value for option {self.__class__.__name__}: {value}") + if self.value < self.range_start: + raise Exception(f"{value} is lower than minimum {self.range_start} for option {self.__class__.__name__}") + if self.value > self.range_end: + raise Exception(f"{value} is higher than maximum {self.range_end} for option {self.__class__.__name__}") + + @classmethod + def from_text(cls, text: str) -> typing.Any: + return cls(text) + + @classmethod + def weighted_range(cls, text: str) -> float: + if text == "random-low": + return random.triangular(cls.range_start, cls.range_end, cls.range_start) + elif text == "random-high": + return random.triangular(cls.range_start, cls.range_end, cls.range_end) + elif text == "random-middle": + return random.triangular(cls.range_start, cls.range_end) + elif text.startswith("random-range-"): + return cls.custom_range(text) + elif text == "random": + return random.uniform(cls.range_start, cls.range_end) + else: + raise Exception(f"random text \"{text}\" did not resolve to a recognized pattern. " + f"Acceptable values are: random, random-high, random-middle, random-low, " + f"random-range-low--, random-range-middle--, " + f"random-range-high--, or random-range--.") + + @classmethod + def custom_range(cls, text: str) -> float: + textsplit = text.split("-") + try: + random_range = [float(textsplit[len(textsplit) - 2]), float(textsplit[len(textsplit) - 1])] + except ValueError: + raise ValueError(f"Invalid random range {text} for option {cls.__name__}") + except OverflowError: + raise Exception(f"Out of range floating value for option {cls.__name__}: {text}") + random_range.sort() + if random_range[0] < cls.range_start or random_range[1] > cls.range_end: + raise Exception( + f"{random_range[0]}-{random_range[1]} is outside allowed range " + f"{cls.range_start}-{cls.range_end} for option {cls.__name__}") + if text.startswith("random-range-low"): + return random.triangular(random_range[0], random_range[1], random_range[0]) + elif text.startswith("random-range-middle"): + return random.triangular(random_range[0], random_range[1]) + elif text.startswith("random-range-high"): + return random.triangular(random_range[0], random_range[1], random_range[1]) + else: + return random.uniform(random_range[0], random_range[1]) + + @property + def current_key(self) -> str: + return str(self.value) + + @classmethod + def get_option_name(cls, value: float) -> str: + return str(value) + + def __eq__(self, other: typing.Any): + if isinstance(other, NumericOption): + return self.value == other.value + else: + return typing.cast(bool, self.value == other) + + def __lt__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value < other.value + else: + return self.value < other + + def __le__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value <= other.value + else: + return self.value <= other + + def __gt__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value > other.value + else: + return self.value > other + + def __ge__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value >= other.value + else: + return self.value >= other + + def __int__(self) -> int: + return int(self.value) + + def __and__(self, other: typing.Any) -> int: + raise TypeError("& operator not supported for float values") + + def __floordiv__(self, other: typing.Any) -> int: + return int(self.value // float(other)) + + def __invert__(self) -> int: + raise TypeError("~ operator not supported for float values") + + def __lshift__(self, other: typing.Any) -> int: + raise TypeError("<< operator not supported for float values") + + def __mod__(self, other: typing.Any) -> float: + return self.value % float(other) + + def __neg__(self) -> float: + return -self.value + + def __or__(self, other: typing.Any) -> int: + raise TypeError("| operator not supported for float values") + + def __pos__(self) -> float: + return +self.value + + def __rand__(self, other: typing.Any) -> int: + raise TypeError("& operator not supported for float values") + + def __rfloordiv__(self, other: typing.Any) -> int: + return int(float(other) // self.value) + + def __rlshift__(self, other: typing.Any) -> int: + raise TypeError("<< operator not supported for float values") + + def __rmod__(self, other: typing.Any) -> float: + return float(other) % self.value + + def __ror__(self, other: typing.Any) -> int: + raise TypeError("| operator not supported for float values") + + def __round__(self, ndigits: typing.Optional[int] = None) -> float: + return round(self.value, ndigits) + + def __rpow__(self, base: typing.Any) -> typing.Any: + return base ** self.value + + def __rrshift__(self, other: typing.Any) -> int: + raise TypeError(">> operator not supported for float values") + + def __rshift__(self, other: typing.Any) -> int: + raise TypeError(">> operator not supported for float values") + + def __rxor__(self, other: typing.Any) -> int: + raise TypeError("^ operator not supported for float values") + + def __xor__(self, other: typing.Any) -> int: + raise TypeError("^ operator not supported for float values") diff --git a/worlds/shapez/data/__init__.py b/worlds/shapez/data/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/shapez/data/generate.py b/worlds/shapez/data/generate.py new file mode 100644 index 000000000000..27d74e865d08 --- /dev/null +++ b/worlds/shapez/data/generate.py @@ -0,0 +1,134 @@ +import itertools +import time +from typing import Dict, List + +from worlds.shapez.data.strings import SHAPESANITY, REGIONS + +shapesanity_simple: Dict[str, str] = {} +shapesanity_1_4: Dict[str, str] = {} +shapesanity_two_sided: Dict[str, str] = {} +shapesanity_three_parts: Dict[str, str] = {} +shapesanity_four_parts: Dict[str, str] = {} +subshape_names = [SHAPESANITY.circle, SHAPESANITY.square, SHAPESANITY.star, SHAPESANITY.windmill] +color_names = [SHAPESANITY.red, SHAPESANITY.blue, SHAPESANITY.green, SHAPESANITY.yellow, SHAPESANITY.purple, + SHAPESANITY.cyan, SHAPESANITY.white, SHAPESANITY.uncolored] +short_subshapes = ["C", "R", "S", "W"] +short_colors = ["b", "c", "g", "p", "r", "u", "w", "y"] + + +def color_to_needed_building(color_list: List[str]) -> str: + for next_color in color_list: + if next_color in [SHAPESANITY.yellow, SHAPESANITY.purple, SHAPESANITY.cyan, SHAPESANITY.white, + "y", "p", "c", "w"]: + return REGIONS.mixed + for next_color in color_list: + if next_color not in [SHAPESANITY.uncolored, "u"]: + return REGIONS.painted + return REGIONS.uncol + + +def generate_shapesanity_pool() -> None: + # same shapes && same color + for color in color_names: + color_region = color_to_needed_building([color]) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.circle)] = REGIONS.sanity(REGIONS.full, color_region) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.square)] = REGIONS.sanity(REGIONS.full, color_region) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.star)] = REGIONS.sanity(REGIONS.full, color_region) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.windmill)] = REGIONS.sanity(REGIONS.east_wind, color_region) + for shape in subshape_names: + for color in color_names: + color_region = color_to_needed_building([color]) + shapesanity_simple[SHAPESANITY.half(color, shape)] = REGIONS.sanity(REGIONS.half, color_region) + shapesanity_simple[SHAPESANITY.piece(color, shape)] = REGIONS.sanity(REGIONS.piece, color_region) + shapesanity_simple[SHAPESANITY.cutout(color, shape)] = REGIONS.sanity(REGIONS.stitched, color_region) + shapesanity_simple[SHAPESANITY.cornered(color, shape)] = REGIONS.sanity(REGIONS.stitched, color_region) + + # one color && 4 shapes (including empty) + for first_color, second_color, third_color, fourth_color in itertools.combinations(short_colors+["-"], 4): + colors = [first_color, second_color, third_color, fourth_color] + color_region = color_to_needed_building(colors) + shape_regions = [REGIONS.stitched, REGIONS.stitched] if fourth_color == "-" else [REGIONS.col_full, REGIONS.col_east_wind] + color_code = ''.join(colors) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.circle)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.square)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.star)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.windmill)] = REGIONS.sanity(shape_regions[1], color_region) + + # one shape && 4 colors (including empty) + for first_shape, second_shape, third_shape, fourth_shape in itertools.combinations(short_subshapes+["-"], 4): + for color in color_names: + shapesanity_1_4[SHAPESANITY.full(color, ''.join([first_shape, second_shape, third_shape, fourth_shape]))] \ + = REGIONS.sanity(REGIONS.stitched, color_to_needed_building([color])) + + combos = [shape + color for shape in short_subshapes for color in short_colors] + for first_combo, second_combo in itertools.permutations(combos, 2): + # 2-sided shapes + color_region = color_to_needed_building([first_combo[1], second_combo[1]]) + ordered_combo = " ".join(sorted([first_combo, second_combo])) + shape_regions = (([REGIONS.east_wind, REGIONS.east_wind, REGIONS.col_half] + if first_combo[0] == "W" else [REGIONS.col_full, REGIONS.col_full, REGIONS.col_half]) + if first_combo[0] == second_combo[0] else [REGIONS.stitched, REGIONS.half_half, REGIONS.stitched]) + shapesanity_two_sided[SHAPESANITY.three_one(first_combo, second_combo)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_two_sided[SHAPESANITY.halfhalf(ordered_combo)] = REGIONS.sanity(shape_regions[1], color_region) + shapesanity_two_sided[SHAPESANITY.checkered(ordered_combo)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_two_sided[SHAPESANITY.singles(ordered_combo, SHAPESANITY.adjacent_pos)] = REGIONS.sanity(shape_regions[2], color_region) + shapesanity_two_sided[SHAPESANITY.singles(ordered_combo, SHAPESANITY.cornered_pos)] = REGIONS.sanity(REGIONS.stitched, color_region) + shapesanity_two_sided[SHAPESANITY.two_one(first_combo, second_combo, SHAPESANITY.adjacent_pos)] = REGIONS.sanity(REGIONS.stitched, color_region) + shapesanity_two_sided[SHAPESANITY.two_one(first_combo, second_combo, SHAPESANITY.cornered_pos)] = REGIONS.sanity(REGIONS.stitched, color_region) + for third_combo in combos: + if third_combo in [first_combo, second_combo]: + continue + # 3-part shapes + colors = [first_combo[1], second_combo[1], third_combo[1]] + color_region = color_to_needed_building(colors) + ordered_two = " ".join(sorted([second_combo, third_combo])) + if not (first_combo[1] == second_combo[1] == third_combo[1] or + first_combo[0] == second_combo[0] == third_combo[0]): + ordered_all = " ".join(sorted([first_combo, second_combo, third_combo])) + shapesanity_three_parts[SHAPESANITY.singles(ordered_all)] = REGIONS.sanity(REGIONS.stitched, color_region) + shape_regions = ([REGIONS.stitched, REGIONS.stitched] if not second_combo[0] == third_combo[0] + else (([REGIONS.east_wind, REGIONS.east_wind] if first_combo[0] == "W" + else [REGIONS.col_full, REGIONS.col_full]) + if first_combo[0] == second_combo[0] else [REGIONS.col_half_half, REGIONS.stitched])) + shapesanity_three_parts[SHAPESANITY.two_one_one(first_combo, ordered_two, SHAPESANITY.adjacent_pos)] \ + = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_three_parts[SHAPESANITY.two_one_one(first_combo, ordered_two, SHAPESANITY.cornered_pos)] \ + = REGIONS.sanity(shape_regions[1], color_region) + for fourth_combo in combos: + if fourth_combo in [first_combo, second_combo, third_combo]: + continue + if (first_combo[1] == second_combo[1] == third_combo[1] == fourth_combo[1] or + first_combo[0] == second_combo[0] == third_combo[0] == fourth_combo[0]): + continue + colors = [first_combo[1], second_combo[1], third_combo[1], fourth_combo[1]] + color_region = color_to_needed_building(colors) + ordered_all = " ".join(sorted([first_combo, second_combo, third_combo, fourth_combo])) + if ((first_combo[0] == second_combo[0] and third_combo[0] == fourth_combo[0]) or + (first_combo[0] == third_combo[0] and second_combo[0] == fourth_combo[0]) or + (first_combo[0] == fourth_combo[0] and third_combo[0] == second_combo[0])): + shapesanity_four_parts[SHAPESANITY.singles(ordered_all)] = REGIONS.sanity(REGIONS.col_half_half, color_region) + else: + shapesanity_four_parts[SHAPESANITY.singles(ordered_all)] = REGIONS.sanity(REGIONS.stitched, color_region) + + +if __name__ == "__main__": + start = time.time() + generate_shapesanity_pool() + print(time.time() - start) + with open("shapesanity_pool.py", "w") as outfile: + outfile.writelines(["shapesanity_simple = {\n"] + + [f" \"{name}\": \"{shapesanity_simple[name]}\",\n" + for name in shapesanity_simple] + + ["}\n\nshapesanity_1_4 = {\n"] + + [f" \"{name}\": \"{shapesanity_1_4[name]}\",\n" + for name in shapesanity_1_4] + + ["}\n\nshapesanity_two_sided = {\n"] + + [f" \"{name}\": \"{shapesanity_two_sided[name]}\",\n" + for name in shapesanity_two_sided] + + ["}\n\nshapesanity_three_parts = {\n"] + + [f" \"{name}\": \"{shapesanity_three_parts[name]}\",\n" + for name in shapesanity_three_parts] + + ["}\n\nshapesanity_four_parts = {\n"] + + [f" \"{name}\": \"{shapesanity_four_parts[name]}\",\n" + for name in shapesanity_four_parts] + + ["}\n"]) diff --git a/worlds/shapez/data/options.json b/worlds/shapez/data/options.json new file mode 100644 index 000000000000..d60f02e0fd93 --- /dev/null +++ b/worlds/shapez/data/options.json @@ -0,0 +1,4 @@ +{ + "max_levels_and_upgrades": 500, + "max_shapesanity": 1000 +} diff --git a/worlds/shapez/data/shapesanity_pool.py b/worlds/shapez/data/shapesanity_pool.py new file mode 100644 index 000000000000..b0ae132e5432 --- /dev/null +++ b/worlds/shapez/data/shapesanity_pool.py @@ -0,0 +1,75814 @@ +shapesanity_simple = { + "Red Circle": "Shapesanity Full Painted", + "Red Square": "Shapesanity Full Painted", + "Red Star": "Shapesanity Full Painted", + "Red Windmill": "Shapesanity East Windmill Painted", + "Blue Circle": "Shapesanity Full Painted", + "Blue Square": "Shapesanity Full Painted", + "Blue Star": "Shapesanity Full Painted", + "Blue Windmill": "Shapesanity East Windmill Painted", + "Green Circle": "Shapesanity Full Painted", + "Green Square": "Shapesanity Full Painted", + "Green Star": "Shapesanity Full Painted", + "Green Windmill": "Shapesanity East Windmill Painted", + "Yellow Circle": "Shapesanity Full Mixed", + "Yellow Square": "Shapesanity Full Mixed", + "Yellow Star": "Shapesanity Full Mixed", + "Yellow Windmill": "Shapesanity East Windmill Mixed", + "Purple Circle": "Shapesanity Full Mixed", + "Purple Square": "Shapesanity Full Mixed", + "Purple Star": "Shapesanity Full Mixed", + "Purple Windmill": "Shapesanity East Windmill Mixed", + "Cyan Circle": "Shapesanity Full Mixed", + "Cyan Square": "Shapesanity Full Mixed", + "Cyan Star": "Shapesanity Full Mixed", + "Cyan Windmill": "Shapesanity East Windmill Mixed", + "White Circle": "Shapesanity Full Mixed", + "White Square": "Shapesanity Full Mixed", + "White Star": "Shapesanity Full Mixed", + "White Windmill": "Shapesanity East Windmill Mixed", + "Uncolored Circle": "Shapesanity Full Uncolored", + "Uncolored Square": "Shapesanity Full Uncolored", + "Uncolored Star": "Shapesanity Full Uncolored", + "Uncolored Windmill": "Shapesanity East Windmill Uncolored", + "Half Red Circle": "Shapesanity Half Painted", + "Red Circle Piece": "Shapesanity Piece Painted", + "Cut Out Red Circle": "Shapesanity Stitched Painted", + "Cornered Red Circle": "Shapesanity Stitched Painted", + "Half Blue Circle": "Shapesanity Half Painted", + "Blue Circle Piece": "Shapesanity Piece Painted", + "Cut Out Blue Circle": "Shapesanity Stitched Painted", + "Cornered Blue Circle": "Shapesanity Stitched Painted", + "Half Green Circle": "Shapesanity Half Painted", + "Green Circle Piece": "Shapesanity Piece Painted", + "Cut Out Green Circle": "Shapesanity Stitched Painted", + "Cornered Green Circle": "Shapesanity Stitched Painted", + "Half Yellow Circle": "Shapesanity Half Mixed", + "Yellow Circle Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Circle": "Shapesanity Stitched Mixed", + "Cornered Yellow Circle": "Shapesanity Stitched Mixed", + "Half Purple Circle": "Shapesanity Half Mixed", + "Purple Circle Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Circle": "Shapesanity Stitched Mixed", + "Cornered Purple Circle": "Shapesanity Stitched Mixed", + "Half Cyan Circle": "Shapesanity Half Mixed", + "Cyan Circle Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Circle": "Shapesanity Stitched Mixed", + "Cornered Cyan Circle": "Shapesanity Stitched Mixed", + "Half White Circle": "Shapesanity Half Mixed", + "White Circle Piece": "Shapesanity Piece Mixed", + "Cut Out White Circle": "Shapesanity Stitched Mixed", + "Cornered White Circle": "Shapesanity Stitched Mixed", + "Half Uncolored Circle": "Shapesanity Half Uncolored", + "Uncolored Circle Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Circle": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Circle": "Shapesanity Stitched Uncolored", + "Half Red Square": "Shapesanity Half Painted", + "Red Square Piece": "Shapesanity Piece Painted", + "Cut Out Red Square": "Shapesanity Stitched Painted", + "Cornered Red Square": "Shapesanity Stitched Painted", + "Half Blue Square": "Shapesanity Half Painted", + "Blue Square Piece": "Shapesanity Piece Painted", + "Cut Out Blue Square": "Shapesanity Stitched Painted", + "Cornered Blue Square": "Shapesanity Stitched Painted", + "Half Green Square": "Shapesanity Half Painted", + "Green Square Piece": "Shapesanity Piece Painted", + "Cut Out Green Square": "Shapesanity Stitched Painted", + "Cornered Green Square": "Shapesanity Stitched Painted", + "Half Yellow Square": "Shapesanity Half Mixed", + "Yellow Square Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Square": "Shapesanity Stitched Mixed", + "Cornered Yellow Square": "Shapesanity Stitched Mixed", + "Half Purple Square": "Shapesanity Half Mixed", + "Purple Square Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Square": "Shapesanity Stitched Mixed", + "Cornered Purple Square": "Shapesanity Stitched Mixed", + "Half Cyan Square": "Shapesanity Half Mixed", + "Cyan Square Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Square": "Shapesanity Stitched Mixed", + "Cornered Cyan Square": "Shapesanity Stitched Mixed", + "Half White Square": "Shapesanity Half Mixed", + "White Square Piece": "Shapesanity Piece Mixed", + "Cut Out White Square": "Shapesanity Stitched Mixed", + "Cornered White Square": "Shapesanity Stitched Mixed", + "Half Uncolored Square": "Shapesanity Half Uncolored", + "Uncolored Square Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Square": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Square": "Shapesanity Stitched Uncolored", + "Half Red Star": "Shapesanity Half Painted", + "Red Star Piece": "Shapesanity Piece Painted", + "Cut Out Red Star": "Shapesanity Stitched Painted", + "Cornered Red Star": "Shapesanity Stitched Painted", + "Half Blue Star": "Shapesanity Half Painted", + "Blue Star Piece": "Shapesanity Piece Painted", + "Cut Out Blue Star": "Shapesanity Stitched Painted", + "Cornered Blue Star": "Shapesanity Stitched Painted", + "Half Green Star": "Shapesanity Half Painted", + "Green Star Piece": "Shapesanity Piece Painted", + "Cut Out Green Star": "Shapesanity Stitched Painted", + "Cornered Green Star": "Shapesanity Stitched Painted", + "Half Yellow Star": "Shapesanity Half Mixed", + "Yellow Star Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Star": "Shapesanity Stitched Mixed", + "Cornered Yellow Star": "Shapesanity Stitched Mixed", + "Half Purple Star": "Shapesanity Half Mixed", + "Purple Star Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Star": "Shapesanity Stitched Mixed", + "Cornered Purple Star": "Shapesanity Stitched Mixed", + "Half Cyan Star": "Shapesanity Half Mixed", + "Cyan Star Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Star": "Shapesanity Stitched Mixed", + "Cornered Cyan Star": "Shapesanity Stitched Mixed", + "Half White Star": "Shapesanity Half Mixed", + "White Star Piece": "Shapesanity Piece Mixed", + "Cut Out White Star": "Shapesanity Stitched Mixed", + "Cornered White Star": "Shapesanity Stitched Mixed", + "Half Uncolored Star": "Shapesanity Half Uncolored", + "Uncolored Star Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Star": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Star": "Shapesanity Stitched Uncolored", + "Half Red Windmill": "Shapesanity Half Painted", + "Red Windmill Piece": "Shapesanity Piece Painted", + "Cut Out Red Windmill": "Shapesanity Stitched Painted", + "Cornered Red Windmill": "Shapesanity Stitched Painted", + "Half Blue Windmill": "Shapesanity Half Painted", + "Blue Windmill Piece": "Shapesanity Piece Painted", + "Cut Out Blue Windmill": "Shapesanity Stitched Painted", + "Cornered Blue Windmill": "Shapesanity Stitched Painted", + "Half Green Windmill": "Shapesanity Half Painted", + "Green Windmill Piece": "Shapesanity Piece Painted", + "Cut Out Green Windmill": "Shapesanity Stitched Painted", + "Cornered Green Windmill": "Shapesanity Stitched Painted", + "Half Yellow Windmill": "Shapesanity Half Mixed", + "Yellow Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Windmill": "Shapesanity Stitched Mixed", + "Cornered Yellow Windmill": "Shapesanity Stitched Mixed", + "Half Purple Windmill": "Shapesanity Half Mixed", + "Purple Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Windmill": "Shapesanity Stitched Mixed", + "Cornered Purple Windmill": "Shapesanity Stitched Mixed", + "Half Cyan Windmill": "Shapesanity Half Mixed", + "Cyan Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Windmill": "Shapesanity Stitched Mixed", + "Cornered Cyan Windmill": "Shapesanity Stitched Mixed", + "Half White Windmill": "Shapesanity Half Mixed", + "White Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out White Windmill": "Shapesanity Stitched Mixed", + "Cornered White Windmill": "Shapesanity Stitched Mixed", + "Half Uncolored Windmill": "Shapesanity Half Uncolored", + "Uncolored Windmill Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Windmill": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Windmill": "Shapesanity Stitched Uncolored", +} + +shapesanity_1_4 = { + "bcgp Circle": "Shapesanity Colorful Full Mixed", + "bcgp Square": "Shapesanity Colorful Full Mixed", + "bcgp Star": "Shapesanity Colorful Full Mixed", + "bcgp Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgr Circle": "Shapesanity Colorful Full Mixed", + "bcgr Square": "Shapesanity Colorful Full Mixed", + "bcgr Star": "Shapesanity Colorful Full Mixed", + "bcgr Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgu Circle": "Shapesanity Colorful Full Mixed", + "bcgu Square": "Shapesanity Colorful Full Mixed", + "bcgu Star": "Shapesanity Colorful Full Mixed", + "bcgu Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgw Circle": "Shapesanity Colorful Full Mixed", + "bcgw Square": "Shapesanity Colorful Full Mixed", + "bcgw Star": "Shapesanity Colorful Full Mixed", + "bcgw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgy Circle": "Shapesanity Colorful Full Mixed", + "bcgy Square": "Shapesanity Colorful Full Mixed", + "bcgy Star": "Shapesanity Colorful Full Mixed", + "bcgy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcg- Circle": "Shapesanity Stitched Mixed", + "bcg- Square": "Shapesanity Stitched Mixed", + "bcg- Star": "Shapesanity Stitched Mixed", + "bcg- Windmill": "Shapesanity Stitched Mixed", + "bcpr Circle": "Shapesanity Colorful Full Mixed", + "bcpr Square": "Shapesanity Colorful Full Mixed", + "bcpr Star": "Shapesanity Colorful Full Mixed", + "bcpr Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcpu Circle": "Shapesanity Colorful Full Mixed", + "bcpu Square": "Shapesanity Colorful Full Mixed", + "bcpu Star": "Shapesanity Colorful Full Mixed", + "bcpu Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcpw Circle": "Shapesanity Colorful Full Mixed", + "bcpw Square": "Shapesanity Colorful Full Mixed", + "bcpw Star": "Shapesanity Colorful Full Mixed", + "bcpw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcpy Circle": "Shapesanity Colorful Full Mixed", + "bcpy Square": "Shapesanity Colorful Full Mixed", + "bcpy Star": "Shapesanity Colorful Full Mixed", + "bcpy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcp- Circle": "Shapesanity Stitched Mixed", + "bcp- Square": "Shapesanity Stitched Mixed", + "bcp- Star": "Shapesanity Stitched Mixed", + "bcp- Windmill": "Shapesanity Stitched Mixed", + "bcru Circle": "Shapesanity Colorful Full Mixed", + "bcru Square": "Shapesanity Colorful Full Mixed", + "bcru Star": "Shapesanity Colorful Full Mixed", + "bcru Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcrw Circle": "Shapesanity Colorful Full Mixed", + "bcrw Square": "Shapesanity Colorful Full Mixed", + "bcrw Star": "Shapesanity Colorful Full Mixed", + "bcrw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcry Circle": "Shapesanity Colorful Full Mixed", + "bcry Square": "Shapesanity Colorful Full Mixed", + "bcry Star": "Shapesanity Colorful Full Mixed", + "bcry Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcr- Circle": "Shapesanity Stitched Mixed", + "bcr- Square": "Shapesanity Stitched Mixed", + "bcr- Star": "Shapesanity Stitched Mixed", + "bcr- Windmill": "Shapesanity Stitched Mixed", + "bcuw Circle": "Shapesanity Colorful Full Mixed", + "bcuw Square": "Shapesanity Colorful Full Mixed", + "bcuw Star": "Shapesanity Colorful Full Mixed", + "bcuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcuy Circle": "Shapesanity Colorful Full Mixed", + "bcuy Square": "Shapesanity Colorful Full Mixed", + "bcuy Star": "Shapesanity Colorful Full Mixed", + "bcuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcu- Circle": "Shapesanity Stitched Mixed", + "bcu- Square": "Shapesanity Stitched Mixed", + "bcu- Star": "Shapesanity Stitched Mixed", + "bcu- Windmill": "Shapesanity Stitched Mixed", + "bcwy Circle": "Shapesanity Colorful Full Mixed", + "bcwy Square": "Shapesanity Colorful Full Mixed", + "bcwy Star": "Shapesanity Colorful Full Mixed", + "bcwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcw- Circle": "Shapesanity Stitched Mixed", + "bcw- Square": "Shapesanity Stitched Mixed", + "bcw- Star": "Shapesanity Stitched Mixed", + "bcw- Windmill": "Shapesanity Stitched Mixed", + "bcy- Circle": "Shapesanity Stitched Mixed", + "bcy- Square": "Shapesanity Stitched Mixed", + "bcy- Star": "Shapesanity Stitched Mixed", + "bcy- Windmill": "Shapesanity Stitched Mixed", + "bgpr Circle": "Shapesanity Colorful Full Mixed", + "bgpr Square": "Shapesanity Colorful Full Mixed", + "bgpr Star": "Shapesanity Colorful Full Mixed", + "bgpr Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgpu Circle": "Shapesanity Colorful Full Mixed", + "bgpu Square": "Shapesanity Colorful Full Mixed", + "bgpu Star": "Shapesanity Colorful Full Mixed", + "bgpu Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgpw Circle": "Shapesanity Colorful Full Mixed", + "bgpw Square": "Shapesanity Colorful Full Mixed", + "bgpw Star": "Shapesanity Colorful Full Mixed", + "bgpw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgpy Circle": "Shapesanity Colorful Full Mixed", + "bgpy Square": "Shapesanity Colorful Full Mixed", + "bgpy Star": "Shapesanity Colorful Full Mixed", + "bgpy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgp- Circle": "Shapesanity Stitched Mixed", + "bgp- Square": "Shapesanity Stitched Mixed", + "bgp- Star": "Shapesanity Stitched Mixed", + "bgp- Windmill": "Shapesanity Stitched Mixed", + "bgru Circle": "Shapesanity Colorful Full Painted", + "bgru Square": "Shapesanity Colorful Full Painted", + "bgru Star": "Shapesanity Colorful Full Painted", + "bgru Windmill": "Shapesanity Colorful East Windmill Painted", + "bgrw Circle": "Shapesanity Colorful Full Mixed", + "bgrw Square": "Shapesanity Colorful Full Mixed", + "bgrw Star": "Shapesanity Colorful Full Mixed", + "bgrw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgry Circle": "Shapesanity Colorful Full Mixed", + "bgry Square": "Shapesanity Colorful Full Mixed", + "bgry Star": "Shapesanity Colorful Full Mixed", + "bgry Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgr- Circle": "Shapesanity Stitched Painted", + "bgr- Square": "Shapesanity Stitched Painted", + "bgr- Star": "Shapesanity Stitched Painted", + "bgr- Windmill": "Shapesanity Stitched Painted", + "bguw Circle": "Shapesanity Colorful Full Mixed", + "bguw Square": "Shapesanity Colorful Full Mixed", + "bguw Star": "Shapesanity Colorful Full Mixed", + "bguw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bguy Circle": "Shapesanity Colorful Full Mixed", + "bguy Square": "Shapesanity Colorful Full Mixed", + "bguy Star": "Shapesanity Colorful Full Mixed", + "bguy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgu- Circle": "Shapesanity Stitched Painted", + "bgu- Square": "Shapesanity Stitched Painted", + "bgu- Star": "Shapesanity Stitched Painted", + "bgu- Windmill": "Shapesanity Stitched Painted", + "bgwy Circle": "Shapesanity Colorful Full Mixed", + "bgwy Square": "Shapesanity Colorful Full Mixed", + "bgwy Star": "Shapesanity Colorful Full Mixed", + "bgwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgw- Circle": "Shapesanity Stitched Mixed", + "bgw- Square": "Shapesanity Stitched Mixed", + "bgw- Star": "Shapesanity Stitched Mixed", + "bgw- Windmill": "Shapesanity Stitched Mixed", + "bgy- Circle": "Shapesanity Stitched Mixed", + "bgy- Square": "Shapesanity Stitched Mixed", + "bgy- Star": "Shapesanity Stitched Mixed", + "bgy- Windmill": "Shapesanity Stitched Mixed", + "bpru Circle": "Shapesanity Colorful Full Mixed", + "bpru Square": "Shapesanity Colorful Full Mixed", + "bpru Star": "Shapesanity Colorful Full Mixed", + "bpru Windmill": "Shapesanity Colorful East Windmill Mixed", + "bprw Circle": "Shapesanity Colorful Full Mixed", + "bprw Square": "Shapesanity Colorful Full Mixed", + "bprw Star": "Shapesanity Colorful Full Mixed", + "bprw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpry Circle": "Shapesanity Colorful Full Mixed", + "bpry Square": "Shapesanity Colorful Full Mixed", + "bpry Star": "Shapesanity Colorful Full Mixed", + "bpry Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpr- Circle": "Shapesanity Stitched Mixed", + "bpr- Square": "Shapesanity Stitched Mixed", + "bpr- Star": "Shapesanity Stitched Mixed", + "bpr- Windmill": "Shapesanity Stitched Mixed", + "bpuw Circle": "Shapesanity Colorful Full Mixed", + "bpuw Square": "Shapesanity Colorful Full Mixed", + "bpuw Star": "Shapesanity Colorful Full Mixed", + "bpuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpuy Circle": "Shapesanity Colorful Full Mixed", + "bpuy Square": "Shapesanity Colorful Full Mixed", + "bpuy Star": "Shapesanity Colorful Full Mixed", + "bpuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpu- Circle": "Shapesanity Stitched Mixed", + "bpu- Square": "Shapesanity Stitched Mixed", + "bpu- Star": "Shapesanity Stitched Mixed", + "bpu- Windmill": "Shapesanity Stitched Mixed", + "bpwy Circle": "Shapesanity Colorful Full Mixed", + "bpwy Square": "Shapesanity Colorful Full Mixed", + "bpwy Star": "Shapesanity Colorful Full Mixed", + "bpwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpw- Circle": "Shapesanity Stitched Mixed", + "bpw- Square": "Shapesanity Stitched Mixed", + "bpw- Star": "Shapesanity Stitched Mixed", + "bpw- Windmill": "Shapesanity Stitched Mixed", + "bpy- Circle": "Shapesanity Stitched Mixed", + "bpy- Square": "Shapesanity Stitched Mixed", + "bpy- Star": "Shapesanity Stitched Mixed", + "bpy- Windmill": "Shapesanity Stitched Mixed", + "bruw Circle": "Shapesanity Colorful Full Mixed", + "bruw Square": "Shapesanity Colorful Full Mixed", + "bruw Star": "Shapesanity Colorful Full Mixed", + "bruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bruy Circle": "Shapesanity Colorful Full Mixed", + "bruy Square": "Shapesanity Colorful Full Mixed", + "bruy Star": "Shapesanity Colorful Full Mixed", + "bruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bru- Circle": "Shapesanity Stitched Painted", + "bru- Square": "Shapesanity Stitched Painted", + "bru- Star": "Shapesanity Stitched Painted", + "bru- Windmill": "Shapesanity Stitched Painted", + "brwy Circle": "Shapesanity Colorful Full Mixed", + "brwy Square": "Shapesanity Colorful Full Mixed", + "brwy Star": "Shapesanity Colorful Full Mixed", + "brwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "brw- Circle": "Shapesanity Stitched Mixed", + "brw- Square": "Shapesanity Stitched Mixed", + "brw- Star": "Shapesanity Stitched Mixed", + "brw- Windmill": "Shapesanity Stitched Mixed", + "bry- Circle": "Shapesanity Stitched Mixed", + "bry- Square": "Shapesanity Stitched Mixed", + "bry- Star": "Shapesanity Stitched Mixed", + "bry- Windmill": "Shapesanity Stitched Mixed", + "buwy Circle": "Shapesanity Colorful Full Mixed", + "buwy Square": "Shapesanity Colorful Full Mixed", + "buwy Star": "Shapesanity Colorful Full Mixed", + "buwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "buw- Circle": "Shapesanity Stitched Mixed", + "buw- Square": "Shapesanity Stitched Mixed", + "buw- Star": "Shapesanity Stitched Mixed", + "buw- Windmill": "Shapesanity Stitched Mixed", + "buy- Circle": "Shapesanity Stitched Mixed", + "buy- Square": "Shapesanity Stitched Mixed", + "buy- Star": "Shapesanity Stitched Mixed", + "buy- Windmill": "Shapesanity Stitched Mixed", + "bwy- Circle": "Shapesanity Stitched Mixed", + "bwy- Square": "Shapesanity Stitched Mixed", + "bwy- Star": "Shapesanity Stitched Mixed", + "bwy- Windmill": "Shapesanity Stitched Mixed", + "cgpr Circle": "Shapesanity Colorful Full Mixed", + "cgpr Square": "Shapesanity Colorful Full Mixed", + "cgpr Star": "Shapesanity Colorful Full Mixed", + "cgpr Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgpu Circle": "Shapesanity Colorful Full Mixed", + "cgpu Square": "Shapesanity Colorful Full Mixed", + "cgpu Star": "Shapesanity Colorful Full Mixed", + "cgpu Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgpw Circle": "Shapesanity Colorful Full Mixed", + "cgpw Square": "Shapesanity Colorful Full Mixed", + "cgpw Star": "Shapesanity Colorful Full Mixed", + "cgpw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgpy Circle": "Shapesanity Colorful Full Mixed", + "cgpy Square": "Shapesanity Colorful Full Mixed", + "cgpy Star": "Shapesanity Colorful Full Mixed", + "cgpy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgp- Circle": "Shapesanity Stitched Mixed", + "cgp- Square": "Shapesanity Stitched Mixed", + "cgp- Star": "Shapesanity Stitched Mixed", + "cgp- Windmill": "Shapesanity Stitched Mixed", + "cgru Circle": "Shapesanity Colorful Full Mixed", + "cgru Square": "Shapesanity Colorful Full Mixed", + "cgru Star": "Shapesanity Colorful Full Mixed", + "cgru Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgrw Circle": "Shapesanity Colorful Full Mixed", + "cgrw Square": "Shapesanity Colorful Full Mixed", + "cgrw Star": "Shapesanity Colorful Full Mixed", + "cgrw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgry Circle": "Shapesanity Colorful Full Mixed", + "cgry Square": "Shapesanity Colorful Full Mixed", + "cgry Star": "Shapesanity Colorful Full Mixed", + "cgry Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgr- Circle": "Shapesanity Stitched Mixed", + "cgr- Square": "Shapesanity Stitched Mixed", + "cgr- Star": "Shapesanity Stitched Mixed", + "cgr- Windmill": "Shapesanity Stitched Mixed", + "cguw Circle": "Shapesanity Colorful Full Mixed", + "cguw Square": "Shapesanity Colorful Full Mixed", + "cguw Star": "Shapesanity Colorful Full Mixed", + "cguw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cguy Circle": "Shapesanity Colorful Full Mixed", + "cguy Square": "Shapesanity Colorful Full Mixed", + "cguy Star": "Shapesanity Colorful Full Mixed", + "cguy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgu- Circle": "Shapesanity Stitched Mixed", + "cgu- Square": "Shapesanity Stitched Mixed", + "cgu- Star": "Shapesanity Stitched Mixed", + "cgu- Windmill": "Shapesanity Stitched Mixed", + "cgwy Circle": "Shapesanity Colorful Full Mixed", + "cgwy Square": "Shapesanity Colorful Full Mixed", + "cgwy Star": "Shapesanity Colorful Full Mixed", + "cgwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgw- Circle": "Shapesanity Stitched Mixed", + "cgw- Square": "Shapesanity Stitched Mixed", + "cgw- Star": "Shapesanity Stitched Mixed", + "cgw- Windmill": "Shapesanity Stitched Mixed", + "cgy- Circle": "Shapesanity Stitched Mixed", + "cgy- Square": "Shapesanity Stitched Mixed", + "cgy- Star": "Shapesanity Stitched Mixed", + "cgy- Windmill": "Shapesanity Stitched Mixed", + "cpru Circle": "Shapesanity Colorful Full Mixed", + "cpru Square": "Shapesanity Colorful Full Mixed", + "cpru Star": "Shapesanity Colorful Full Mixed", + "cpru Windmill": "Shapesanity Colorful East Windmill Mixed", + "cprw Circle": "Shapesanity Colorful Full Mixed", + "cprw Square": "Shapesanity Colorful Full Mixed", + "cprw Star": "Shapesanity Colorful Full Mixed", + "cprw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpry Circle": "Shapesanity Colorful Full Mixed", + "cpry Square": "Shapesanity Colorful Full Mixed", + "cpry Star": "Shapesanity Colorful Full Mixed", + "cpry Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpr- Circle": "Shapesanity Stitched Mixed", + "cpr- Square": "Shapesanity Stitched Mixed", + "cpr- Star": "Shapesanity Stitched Mixed", + "cpr- Windmill": "Shapesanity Stitched Mixed", + "cpuw Circle": "Shapesanity Colorful Full Mixed", + "cpuw Square": "Shapesanity Colorful Full Mixed", + "cpuw Star": "Shapesanity Colorful Full Mixed", + "cpuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpuy Circle": "Shapesanity Colorful Full Mixed", + "cpuy Square": "Shapesanity Colorful Full Mixed", + "cpuy Star": "Shapesanity Colorful Full Mixed", + "cpuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpu- Circle": "Shapesanity Stitched Mixed", + "cpu- Square": "Shapesanity Stitched Mixed", + "cpu- Star": "Shapesanity Stitched Mixed", + "cpu- Windmill": "Shapesanity Stitched Mixed", + "cpwy Circle": "Shapesanity Colorful Full Mixed", + "cpwy Square": "Shapesanity Colorful Full Mixed", + "cpwy Star": "Shapesanity Colorful Full Mixed", + "cpwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpw- Circle": "Shapesanity Stitched Mixed", + "cpw- Square": "Shapesanity Stitched Mixed", + "cpw- Star": "Shapesanity Stitched Mixed", + "cpw- Windmill": "Shapesanity Stitched Mixed", + "cpy- Circle": "Shapesanity Stitched Mixed", + "cpy- Square": "Shapesanity Stitched Mixed", + "cpy- Star": "Shapesanity Stitched Mixed", + "cpy- Windmill": "Shapesanity Stitched Mixed", + "cruw Circle": "Shapesanity Colorful Full Mixed", + "cruw Square": "Shapesanity Colorful Full Mixed", + "cruw Star": "Shapesanity Colorful Full Mixed", + "cruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cruy Circle": "Shapesanity Colorful Full Mixed", + "cruy Square": "Shapesanity Colorful Full Mixed", + "cruy Star": "Shapesanity Colorful Full Mixed", + "cruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cru- Circle": "Shapesanity Stitched Mixed", + "cru- Square": "Shapesanity Stitched Mixed", + "cru- Star": "Shapesanity Stitched Mixed", + "cru- Windmill": "Shapesanity Stitched Mixed", + "crwy Circle": "Shapesanity Colorful Full Mixed", + "crwy Square": "Shapesanity Colorful Full Mixed", + "crwy Star": "Shapesanity Colorful Full Mixed", + "crwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "crw- Circle": "Shapesanity Stitched Mixed", + "crw- Square": "Shapesanity Stitched Mixed", + "crw- Star": "Shapesanity Stitched Mixed", + "crw- Windmill": "Shapesanity Stitched Mixed", + "cry- Circle": "Shapesanity Stitched Mixed", + "cry- Square": "Shapesanity Stitched Mixed", + "cry- Star": "Shapesanity Stitched Mixed", + "cry- Windmill": "Shapesanity Stitched Mixed", + "cuwy Circle": "Shapesanity Colorful Full Mixed", + "cuwy Square": "Shapesanity Colorful Full Mixed", + "cuwy Star": "Shapesanity Colorful Full Mixed", + "cuwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cuw- Circle": "Shapesanity Stitched Mixed", + "cuw- Square": "Shapesanity Stitched Mixed", + "cuw- Star": "Shapesanity Stitched Mixed", + "cuw- Windmill": "Shapesanity Stitched Mixed", + "cuy- Circle": "Shapesanity Stitched Mixed", + "cuy- Square": "Shapesanity Stitched Mixed", + "cuy- Star": "Shapesanity Stitched Mixed", + "cuy- Windmill": "Shapesanity Stitched Mixed", + "cwy- Circle": "Shapesanity Stitched Mixed", + "cwy- Square": "Shapesanity Stitched Mixed", + "cwy- Star": "Shapesanity Stitched Mixed", + "cwy- Windmill": "Shapesanity Stitched Mixed", + "gpru Circle": "Shapesanity Colorful Full Mixed", + "gpru Square": "Shapesanity Colorful Full Mixed", + "gpru Star": "Shapesanity Colorful Full Mixed", + "gpru Windmill": "Shapesanity Colorful East Windmill Mixed", + "gprw Circle": "Shapesanity Colorful Full Mixed", + "gprw Square": "Shapesanity Colorful Full Mixed", + "gprw Star": "Shapesanity Colorful Full Mixed", + "gprw Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpry Circle": "Shapesanity Colorful Full Mixed", + "gpry Square": "Shapesanity Colorful Full Mixed", + "gpry Star": "Shapesanity Colorful Full Mixed", + "gpry Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpr- Circle": "Shapesanity Stitched Mixed", + "gpr- Square": "Shapesanity Stitched Mixed", + "gpr- Star": "Shapesanity Stitched Mixed", + "gpr- Windmill": "Shapesanity Stitched Mixed", + "gpuw Circle": "Shapesanity Colorful Full Mixed", + "gpuw Square": "Shapesanity Colorful Full Mixed", + "gpuw Star": "Shapesanity Colorful Full Mixed", + "gpuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpuy Circle": "Shapesanity Colorful Full Mixed", + "gpuy Square": "Shapesanity Colorful Full Mixed", + "gpuy Star": "Shapesanity Colorful Full Mixed", + "gpuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpu- Circle": "Shapesanity Stitched Mixed", + "gpu- Square": "Shapesanity Stitched Mixed", + "gpu- Star": "Shapesanity Stitched Mixed", + "gpu- Windmill": "Shapesanity Stitched Mixed", + "gpwy Circle": "Shapesanity Colorful Full Mixed", + "gpwy Square": "Shapesanity Colorful Full Mixed", + "gpwy Star": "Shapesanity Colorful Full Mixed", + "gpwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpw- Circle": "Shapesanity Stitched Mixed", + "gpw- Square": "Shapesanity Stitched Mixed", + "gpw- Star": "Shapesanity Stitched Mixed", + "gpw- Windmill": "Shapesanity Stitched Mixed", + "gpy- Circle": "Shapesanity Stitched Mixed", + "gpy- Square": "Shapesanity Stitched Mixed", + "gpy- Star": "Shapesanity Stitched Mixed", + "gpy- Windmill": "Shapesanity Stitched Mixed", + "gruw Circle": "Shapesanity Colorful Full Mixed", + "gruw Square": "Shapesanity Colorful Full Mixed", + "gruw Star": "Shapesanity Colorful Full Mixed", + "gruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "gruy Circle": "Shapesanity Colorful Full Mixed", + "gruy Square": "Shapesanity Colorful Full Mixed", + "gruy Star": "Shapesanity Colorful Full Mixed", + "gruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "gru- Circle": "Shapesanity Stitched Painted", + "gru- Square": "Shapesanity Stitched Painted", + "gru- Star": "Shapesanity Stitched Painted", + "gru- Windmill": "Shapesanity Stitched Painted", + "grwy Circle": "Shapesanity Colorful Full Mixed", + "grwy Square": "Shapesanity Colorful Full Mixed", + "grwy Star": "Shapesanity Colorful Full Mixed", + "grwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "grw- Circle": "Shapesanity Stitched Mixed", + "grw- Square": "Shapesanity Stitched Mixed", + "grw- Star": "Shapesanity Stitched Mixed", + "grw- Windmill": "Shapesanity Stitched Mixed", + "gry- Circle": "Shapesanity Stitched Mixed", + "gry- Square": "Shapesanity Stitched Mixed", + "gry- Star": "Shapesanity Stitched Mixed", + "gry- Windmill": "Shapesanity Stitched Mixed", + "guwy Circle": "Shapesanity Colorful Full Mixed", + "guwy Square": "Shapesanity Colorful Full Mixed", + "guwy Star": "Shapesanity Colorful Full Mixed", + "guwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "guw- Circle": "Shapesanity Stitched Mixed", + "guw- Square": "Shapesanity Stitched Mixed", + "guw- Star": "Shapesanity Stitched Mixed", + "guw- Windmill": "Shapesanity Stitched Mixed", + "guy- Circle": "Shapesanity Stitched Mixed", + "guy- Square": "Shapesanity Stitched Mixed", + "guy- Star": "Shapesanity Stitched Mixed", + "guy- Windmill": "Shapesanity Stitched Mixed", + "gwy- Circle": "Shapesanity Stitched Mixed", + "gwy- Square": "Shapesanity Stitched Mixed", + "gwy- Star": "Shapesanity Stitched Mixed", + "gwy- Windmill": "Shapesanity Stitched Mixed", + "pruw Circle": "Shapesanity Colorful Full Mixed", + "pruw Square": "Shapesanity Colorful Full Mixed", + "pruw Star": "Shapesanity Colorful Full Mixed", + "pruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "pruy Circle": "Shapesanity Colorful Full Mixed", + "pruy Square": "Shapesanity Colorful Full Mixed", + "pruy Star": "Shapesanity Colorful Full Mixed", + "pruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "pru- Circle": "Shapesanity Stitched Mixed", + "pru- Square": "Shapesanity Stitched Mixed", + "pru- Star": "Shapesanity Stitched Mixed", + "pru- Windmill": "Shapesanity Stitched Mixed", + "prwy Circle": "Shapesanity Colorful Full Mixed", + "prwy Square": "Shapesanity Colorful Full Mixed", + "prwy Star": "Shapesanity Colorful Full Mixed", + "prwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "prw- Circle": "Shapesanity Stitched Mixed", + "prw- Square": "Shapesanity Stitched Mixed", + "prw- Star": "Shapesanity Stitched Mixed", + "prw- Windmill": "Shapesanity Stitched Mixed", + "pry- Circle": "Shapesanity Stitched Mixed", + "pry- Square": "Shapesanity Stitched Mixed", + "pry- Star": "Shapesanity Stitched Mixed", + "pry- Windmill": "Shapesanity Stitched Mixed", + "puwy Circle": "Shapesanity Colorful Full Mixed", + "puwy Square": "Shapesanity Colorful Full Mixed", + "puwy Star": "Shapesanity Colorful Full Mixed", + "puwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "puw- Circle": "Shapesanity Stitched Mixed", + "puw- Square": "Shapesanity Stitched Mixed", + "puw- Star": "Shapesanity Stitched Mixed", + "puw- Windmill": "Shapesanity Stitched Mixed", + "puy- Circle": "Shapesanity Stitched Mixed", + "puy- Square": "Shapesanity Stitched Mixed", + "puy- Star": "Shapesanity Stitched Mixed", + "puy- Windmill": "Shapesanity Stitched Mixed", + "pwy- Circle": "Shapesanity Stitched Mixed", + "pwy- Square": "Shapesanity Stitched Mixed", + "pwy- Star": "Shapesanity Stitched Mixed", + "pwy- Windmill": "Shapesanity Stitched Mixed", + "ruwy Circle": "Shapesanity Colorful Full Mixed", + "ruwy Square": "Shapesanity Colorful Full Mixed", + "ruwy Star": "Shapesanity Colorful Full Mixed", + "ruwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "ruw- Circle": "Shapesanity Stitched Mixed", + "ruw- Square": "Shapesanity Stitched Mixed", + "ruw- Star": "Shapesanity Stitched Mixed", + "ruw- Windmill": "Shapesanity Stitched Mixed", + "ruy- Circle": "Shapesanity Stitched Mixed", + "ruy- Square": "Shapesanity Stitched Mixed", + "ruy- Star": "Shapesanity Stitched Mixed", + "ruy- Windmill": "Shapesanity Stitched Mixed", + "rwy- Circle": "Shapesanity Stitched Mixed", + "rwy- Square": "Shapesanity Stitched Mixed", + "rwy- Star": "Shapesanity Stitched Mixed", + "rwy- Windmill": "Shapesanity Stitched Mixed", + "uwy- Circle": "Shapesanity Stitched Mixed", + "uwy- Square": "Shapesanity Stitched Mixed", + "uwy- Star": "Shapesanity Stitched Mixed", + "uwy- Windmill": "Shapesanity Stitched Mixed", + "Red CRSW": "Shapesanity Stitched Painted", + "Blue CRSW": "Shapesanity Stitched Painted", + "Green CRSW": "Shapesanity Stitched Painted", + "Yellow CRSW": "Shapesanity Stitched Mixed", + "Purple CRSW": "Shapesanity Stitched Mixed", + "Cyan CRSW": "Shapesanity Stitched Mixed", + "White CRSW": "Shapesanity Stitched Mixed", + "Uncolored CRSW": "Shapesanity Stitched Uncolored", + "Red CRS-": "Shapesanity Stitched Painted", + "Blue CRS-": "Shapesanity Stitched Painted", + "Green CRS-": "Shapesanity Stitched Painted", + "Yellow CRS-": "Shapesanity Stitched Mixed", + "Purple CRS-": "Shapesanity Stitched Mixed", + "Cyan CRS-": "Shapesanity Stitched Mixed", + "White CRS-": "Shapesanity Stitched Mixed", + "Uncolored CRS-": "Shapesanity Stitched Uncolored", + "Red CRW-": "Shapesanity Stitched Painted", + "Blue CRW-": "Shapesanity Stitched Painted", + "Green CRW-": "Shapesanity Stitched Painted", + "Yellow CRW-": "Shapesanity Stitched Mixed", + "Purple CRW-": "Shapesanity Stitched Mixed", + "Cyan CRW-": "Shapesanity Stitched Mixed", + "White CRW-": "Shapesanity Stitched Mixed", + "Uncolored CRW-": "Shapesanity Stitched Uncolored", + "Red CSW-": "Shapesanity Stitched Painted", + "Blue CSW-": "Shapesanity Stitched Painted", + "Green CSW-": "Shapesanity Stitched Painted", + "Yellow CSW-": "Shapesanity Stitched Mixed", + "Purple CSW-": "Shapesanity Stitched Mixed", + "Cyan CSW-": "Shapesanity Stitched Mixed", + "White CSW-": "Shapesanity Stitched Mixed", + "Uncolored CSW-": "Shapesanity Stitched Uncolored", + "Red RSW-": "Shapesanity Stitched Painted", + "Blue RSW-": "Shapesanity Stitched Painted", + "Green RSW-": "Shapesanity Stitched Painted", + "Yellow RSW-": "Shapesanity Stitched Mixed", + "Purple RSW-": "Shapesanity Stitched Mixed", + "Cyan RSW-": "Shapesanity Stitched Mixed", + "White RSW-": "Shapesanity Stitched Mixed", + "Uncolored RSW-": "Shapesanity Stitched Uncolored", +} + +shapesanity_two_sided = { + "3-1 Cb Cc": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cc": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cc": "Shapesanity Stitched Mixed", + "3-1 Cb Cg": "Shapesanity Colorful Full Painted", + "Half-Half Cb Cg": "Shapesanity Colorful Full Painted", + "Checkered Cb Cg": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cb Cg": "Shapesanity Colorful Half Painted", + "Cornered Singles Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Cg": "Shapesanity Stitched Painted", + "3-1 Cb Cp": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cp": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cp": "Shapesanity Stitched Mixed", + "3-1 Cb Cr": "Shapesanity Colorful Full Painted", + "Half-Half Cb Cr": "Shapesanity Colorful Full Painted", + "Checkered Cb Cr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cb Cr": "Shapesanity Colorful Half Painted", + "Cornered Singles Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Cr": "Shapesanity Stitched Painted", + "3-1 Cb Cu": "Shapesanity Colorful Full Painted", + "Half-Half Cb Cu": "Shapesanity Colorful Full Painted", + "Checkered Cb Cu": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cb Cu": "Shapesanity Colorful Half Painted", + "Cornered Singles Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Cu": "Shapesanity Stitched Painted", + "3-1 Cb Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cw": "Shapesanity Stitched Mixed", + "3-1 Cb Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cy": "Shapesanity Stitched Mixed", + "3-1 Cb Rb": "Shapesanity Stitched Painted", + "Half-Half Cb Rb": "Shapesanity Half-Half Painted", + "Checkered Cb Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Rb": "Shapesanity Stitched Painted", + "3-1 Cb Rc": "Shapesanity Stitched Mixed", + "Half-Half Cb Rc": "Shapesanity Half-Half Mixed", + "Checkered Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Rc": "Shapesanity Stitched Mixed", + "3-1 Cb Rg": "Shapesanity Stitched Painted", + "Half-Half Cb Rg": "Shapesanity Half-Half Painted", + "Checkered Cb Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Rg": "Shapesanity Stitched Painted", + "3-1 Cb Rp": "Shapesanity Stitched Mixed", + "Half-Half Cb Rp": "Shapesanity Half-Half Mixed", + "Checkered Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Rp": "Shapesanity Stitched Mixed", + "3-1 Cb Rr": "Shapesanity Stitched Painted", + "Half-Half Cb Rr": "Shapesanity Half-Half Painted", + "Checkered Cb Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Rr": "Shapesanity Stitched Painted", + "3-1 Cb Ru": "Shapesanity Stitched Painted", + "Half-Half Cb Ru": "Shapesanity Half-Half Painted", + "Checkered Cb Ru": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Ru": "Shapesanity Stitched Painted", + "Cornered Singles Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Ru": "Shapesanity Stitched Painted", + "3-1 Cb Rw": "Shapesanity Stitched Mixed", + "Half-Half Cb Rw": "Shapesanity Half-Half Mixed", + "Checkered Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Rw": "Shapesanity Stitched Mixed", + "3-1 Cb Ry": "Shapesanity Stitched Mixed", + "Half-Half Cb Ry": "Shapesanity Half-Half Mixed", + "Checkered Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Ry": "Shapesanity Stitched Mixed", + "3-1 Cb Sb": "Shapesanity Stitched Painted", + "Half-Half Cb Sb": "Shapesanity Half-Half Painted", + "Checkered Cb Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Sb": "Shapesanity Stitched Painted", + "3-1 Cb Sc": "Shapesanity Stitched Mixed", + "Half-Half Cb Sc": "Shapesanity Half-Half Mixed", + "Checkered Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sc": "Shapesanity Stitched Mixed", + "3-1 Cb Sg": "Shapesanity Stitched Painted", + "Half-Half Cb Sg": "Shapesanity Half-Half Painted", + "Checkered Cb Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Sg": "Shapesanity Stitched Painted", + "3-1 Cb Sp": "Shapesanity Stitched Mixed", + "Half-Half Cb Sp": "Shapesanity Half-Half Mixed", + "Checkered Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sp": "Shapesanity Stitched Mixed", + "3-1 Cb Sr": "Shapesanity Stitched Painted", + "Half-Half Cb Sr": "Shapesanity Half-Half Painted", + "Checkered Cb Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Sr": "Shapesanity Stitched Painted", + "3-1 Cb Su": "Shapesanity Stitched Painted", + "Half-Half Cb Su": "Shapesanity Half-Half Painted", + "Checkered Cb Su": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Su": "Shapesanity Stitched Painted", + "Cornered Singles Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Su": "Shapesanity Stitched Painted", + "3-1 Cb Sw": "Shapesanity Stitched Mixed", + "Half-Half Cb Sw": "Shapesanity Half-Half Mixed", + "Checkered Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sw": "Shapesanity Stitched Mixed", + "3-1 Cb Sy": "Shapesanity Stitched Mixed", + "Half-Half Cb Sy": "Shapesanity Half-Half Mixed", + "Checkered Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sy": "Shapesanity Stitched Mixed", + "3-1 Cb Wb": "Shapesanity Stitched Painted", + "Half-Half Cb Wb": "Shapesanity Half-Half Painted", + "Checkered Cb Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wb": "Shapesanity Stitched Painted", + "3-1 Cb Wc": "Shapesanity Stitched Mixed", + "Half-Half Cb Wc": "Shapesanity Half-Half Mixed", + "Checkered Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Wc": "Shapesanity Stitched Mixed", + "3-1 Cb Wg": "Shapesanity Stitched Painted", + "Half-Half Cb Wg": "Shapesanity Half-Half Painted", + "Checkered Cb Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wg": "Shapesanity Stitched Painted", + "3-1 Cb Wp": "Shapesanity Stitched Mixed", + "Half-Half Cb Wp": "Shapesanity Half-Half Mixed", + "Checkered Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Wp": "Shapesanity Stitched Mixed", + "3-1 Cb Wr": "Shapesanity Stitched Painted", + "Half-Half Cb Wr": "Shapesanity Half-Half Painted", + "Checkered Cb Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wr": "Shapesanity Stitched Painted", + "3-1 Cb Wu": "Shapesanity Stitched Painted", + "Half-Half Cb Wu": "Shapesanity Half-Half Painted", + "Checkered Cb Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wu": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wu": "Shapesanity Stitched Painted", + "3-1 Cb Ww": "Shapesanity Stitched Mixed", + "Half-Half Cb Ww": "Shapesanity Half-Half Mixed", + "Checkered Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Ww": "Shapesanity Stitched Mixed", + "3-1 Cb Wy": "Shapesanity Stitched Mixed", + "Half-Half Cb Wy": "Shapesanity Half-Half Mixed", + "Checkered Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Wy": "Shapesanity Stitched Mixed", + "3-1 Cc Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cb": "Shapesanity Stitched Mixed", + "3-1 Cc Cg": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cg": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cg": "Shapesanity Stitched Mixed", + "3-1 Cc Cp": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cp": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cp": "Shapesanity Stitched Mixed", + "3-1 Cc Cr": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cr": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cr": "Shapesanity Stitched Mixed", + "3-1 Cc Cu": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cu": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cu": "Shapesanity Stitched Mixed", + "3-1 Cc Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cw": "Shapesanity Stitched Mixed", + "3-1 Cc Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cy": "Shapesanity Stitched Mixed", + "3-1 Cc Rb": "Shapesanity Stitched Mixed", + "Half-Half Cc Rb": "Shapesanity Half-Half Mixed", + "Checkered Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rb": "Shapesanity Stitched Mixed", + "3-1 Cc Rc": "Shapesanity Stitched Mixed", + "Half-Half Cc Rc": "Shapesanity Half-Half Mixed", + "Checkered Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rc": "Shapesanity Stitched Mixed", + "3-1 Cc Rg": "Shapesanity Stitched Mixed", + "Half-Half Cc Rg": "Shapesanity Half-Half Mixed", + "Checkered Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rg": "Shapesanity Stitched Mixed", + "3-1 Cc Rp": "Shapesanity Stitched Mixed", + "Half-Half Cc Rp": "Shapesanity Half-Half Mixed", + "Checkered Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rp": "Shapesanity Stitched Mixed", + "3-1 Cc Rr": "Shapesanity Stitched Mixed", + "Half-Half Cc Rr": "Shapesanity Half-Half Mixed", + "Checkered Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rr": "Shapesanity Stitched Mixed", + "3-1 Cc Ru": "Shapesanity Stitched Mixed", + "Half-Half Cc Ru": "Shapesanity Half-Half Mixed", + "Checkered Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Ru": "Shapesanity Stitched Mixed", + "3-1 Cc Rw": "Shapesanity Stitched Mixed", + "Half-Half Cc Rw": "Shapesanity Half-Half Mixed", + "Checkered Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rw": "Shapesanity Stitched Mixed", + "3-1 Cc Ry": "Shapesanity Stitched Mixed", + "Half-Half Cc Ry": "Shapesanity Half-Half Mixed", + "Checkered Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Ry": "Shapesanity Stitched Mixed", + "3-1 Cc Sb": "Shapesanity Stitched Mixed", + "Half-Half Cc Sb": "Shapesanity Half-Half Mixed", + "Checkered Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sb": "Shapesanity Stitched Mixed", + "3-1 Cc Sc": "Shapesanity Stitched Mixed", + "Half-Half Cc Sc": "Shapesanity Half-Half Mixed", + "Checkered Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sc": "Shapesanity Stitched Mixed", + "3-1 Cc Sg": "Shapesanity Stitched Mixed", + "Half-Half Cc Sg": "Shapesanity Half-Half Mixed", + "Checkered Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sg": "Shapesanity Stitched Mixed", + "3-1 Cc Sp": "Shapesanity Stitched Mixed", + "Half-Half Cc Sp": "Shapesanity Half-Half Mixed", + "Checkered Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sp": "Shapesanity Stitched Mixed", + "3-1 Cc Sr": "Shapesanity Stitched Mixed", + "Half-Half Cc Sr": "Shapesanity Half-Half Mixed", + "Checkered Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sr": "Shapesanity Stitched Mixed", + "3-1 Cc Su": "Shapesanity Stitched Mixed", + "Half-Half Cc Su": "Shapesanity Half-Half Mixed", + "Checkered Cc Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Su": "Shapesanity Stitched Mixed", + "3-1 Cc Sw": "Shapesanity Stitched Mixed", + "Half-Half Cc Sw": "Shapesanity Half-Half Mixed", + "Checkered Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sw": "Shapesanity Stitched Mixed", + "3-1 Cc Sy": "Shapesanity Stitched Mixed", + "Half-Half Cc Sy": "Shapesanity Half-Half Mixed", + "Checkered Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sy": "Shapesanity Stitched Mixed", + "3-1 Cc Wb": "Shapesanity Stitched Mixed", + "Half-Half Cc Wb": "Shapesanity Half-Half Mixed", + "Checkered Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wb": "Shapesanity Stitched Mixed", + "3-1 Cc Wc": "Shapesanity Stitched Mixed", + "Half-Half Cc Wc": "Shapesanity Half-Half Mixed", + "Checkered Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wc": "Shapesanity Stitched Mixed", + "3-1 Cc Wg": "Shapesanity Stitched Mixed", + "Half-Half Cc Wg": "Shapesanity Half-Half Mixed", + "Checkered Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wg": "Shapesanity Stitched Mixed", + "3-1 Cc Wp": "Shapesanity Stitched Mixed", + "Half-Half Cc Wp": "Shapesanity Half-Half Mixed", + "Checkered Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wp": "Shapesanity Stitched Mixed", + "3-1 Cc Wr": "Shapesanity Stitched Mixed", + "Half-Half Cc Wr": "Shapesanity Half-Half Mixed", + "Checkered Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wr": "Shapesanity Stitched Mixed", + "3-1 Cc Wu": "Shapesanity Stitched Mixed", + "Half-Half Cc Wu": "Shapesanity Half-Half Mixed", + "Checkered Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wu": "Shapesanity Stitched Mixed", + "3-1 Cc Ww": "Shapesanity Stitched Mixed", + "Half-Half Cc Ww": "Shapesanity Half-Half Mixed", + "Checkered Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Ww": "Shapesanity Stitched Mixed", + "3-1 Cc Wy": "Shapesanity Stitched Mixed", + "Half-Half Cc Wy": "Shapesanity Half-Half Mixed", + "Checkered Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wy": "Shapesanity Stitched Mixed", + "3-1 Cg Cb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Cb": "Shapesanity Stitched Painted", + "3-1 Cg Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cc": "Shapesanity Stitched Mixed", + "3-1 Cg Cp": "Shapesanity Colorful Full Mixed", + "Half-Half Cg Cp": "Shapesanity Colorful Full Mixed", + "Checkered Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cg Cp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cp": "Shapesanity Stitched Mixed", + "3-1 Cg Cr": "Shapesanity Colorful Full Painted", + "Half-Half Cg Cr": "Shapesanity Colorful Full Painted", + "Checkered Cg Cr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cg Cr": "Shapesanity Colorful Half Painted", + "Cornered Singles Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Cr": "Shapesanity Stitched Painted", + "3-1 Cg Cu": "Shapesanity Colorful Full Painted", + "Half-Half Cg Cu": "Shapesanity Colorful Full Painted", + "Checkered Cg Cu": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cg Cu": "Shapesanity Colorful Half Painted", + "Cornered Singles Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Cu": "Shapesanity Stitched Painted", + "3-1 Cg Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cg Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cg Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cw": "Shapesanity Stitched Mixed", + "3-1 Cg Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cg Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cg Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cy": "Shapesanity Stitched Mixed", + "3-1 Cg Rb": "Shapesanity Stitched Painted", + "Half-Half Cg Rb": "Shapesanity Half-Half Painted", + "Checkered Cg Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Rb": "Shapesanity Stitched Painted", + "3-1 Cg Rc": "Shapesanity Stitched Mixed", + "Half-Half Cg Rc": "Shapesanity Half-Half Mixed", + "Checkered Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Rc": "Shapesanity Stitched Mixed", + "3-1 Cg Rg": "Shapesanity Stitched Painted", + "Half-Half Cg Rg": "Shapesanity Half-Half Painted", + "Checkered Cg Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Rg": "Shapesanity Stitched Painted", + "3-1 Cg Rp": "Shapesanity Stitched Mixed", + "Half-Half Cg Rp": "Shapesanity Half-Half Mixed", + "Checkered Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Rp": "Shapesanity Stitched Mixed", + "3-1 Cg Rr": "Shapesanity Stitched Painted", + "Half-Half Cg Rr": "Shapesanity Half-Half Painted", + "Checkered Cg Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Rr": "Shapesanity Stitched Painted", + "3-1 Cg Ru": "Shapesanity Stitched Painted", + "Half-Half Cg Ru": "Shapesanity Half-Half Painted", + "Checkered Cg Ru": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Ru": "Shapesanity Stitched Painted", + "Cornered Singles Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Ru": "Shapesanity Stitched Painted", + "3-1 Cg Rw": "Shapesanity Stitched Mixed", + "Half-Half Cg Rw": "Shapesanity Half-Half Mixed", + "Checkered Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Rw": "Shapesanity Stitched Mixed", + "3-1 Cg Ry": "Shapesanity Stitched Mixed", + "Half-Half Cg Ry": "Shapesanity Half-Half Mixed", + "Checkered Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Ry": "Shapesanity Stitched Mixed", + "3-1 Cg Sb": "Shapesanity Stitched Painted", + "Half-Half Cg Sb": "Shapesanity Half-Half Painted", + "Checkered Cg Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Sb": "Shapesanity Stitched Painted", + "3-1 Cg Sc": "Shapesanity Stitched Mixed", + "Half-Half Cg Sc": "Shapesanity Half-Half Mixed", + "Checkered Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sc": "Shapesanity Stitched Mixed", + "3-1 Cg Sg": "Shapesanity Stitched Painted", + "Half-Half Cg Sg": "Shapesanity Half-Half Painted", + "Checkered Cg Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Sg": "Shapesanity Stitched Painted", + "3-1 Cg Sp": "Shapesanity Stitched Mixed", + "Half-Half Cg Sp": "Shapesanity Half-Half Mixed", + "Checkered Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sp": "Shapesanity Stitched Mixed", + "3-1 Cg Sr": "Shapesanity Stitched Painted", + "Half-Half Cg Sr": "Shapesanity Half-Half Painted", + "Checkered Cg Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Sr": "Shapesanity Stitched Painted", + "3-1 Cg Su": "Shapesanity Stitched Painted", + "Half-Half Cg Su": "Shapesanity Half-Half Painted", + "Checkered Cg Su": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Su": "Shapesanity Stitched Painted", + "Cornered Singles Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Su": "Shapesanity Stitched Painted", + "3-1 Cg Sw": "Shapesanity Stitched Mixed", + "Half-Half Cg Sw": "Shapesanity Half-Half Mixed", + "Checkered Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sw": "Shapesanity Stitched Mixed", + "3-1 Cg Sy": "Shapesanity Stitched Mixed", + "Half-Half Cg Sy": "Shapesanity Half-Half Mixed", + "Checkered Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sy": "Shapesanity Stitched Mixed", + "3-1 Cg Wb": "Shapesanity Stitched Painted", + "Half-Half Cg Wb": "Shapesanity Half-Half Painted", + "Checkered Cg Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wb": "Shapesanity Stitched Painted", + "3-1 Cg Wc": "Shapesanity Stitched Mixed", + "Half-Half Cg Wc": "Shapesanity Half-Half Mixed", + "Checkered Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Wc": "Shapesanity Stitched Mixed", + "3-1 Cg Wg": "Shapesanity Stitched Painted", + "Half-Half Cg Wg": "Shapesanity Half-Half Painted", + "Checkered Cg Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wg": "Shapesanity Stitched Painted", + "3-1 Cg Wp": "Shapesanity Stitched Mixed", + "Half-Half Cg Wp": "Shapesanity Half-Half Mixed", + "Checkered Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Wp": "Shapesanity Stitched Mixed", + "3-1 Cg Wr": "Shapesanity Stitched Painted", + "Half-Half Cg Wr": "Shapesanity Half-Half Painted", + "Checkered Cg Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wr": "Shapesanity Stitched Painted", + "3-1 Cg Wu": "Shapesanity Stitched Painted", + "Half-Half Cg Wu": "Shapesanity Half-Half Painted", + "Checkered Cg Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wu": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wu": "Shapesanity Stitched Painted", + "3-1 Cg Ww": "Shapesanity Stitched Mixed", + "Half-Half Cg Ww": "Shapesanity Half-Half Mixed", + "Checkered Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Ww": "Shapesanity Stitched Mixed", + "3-1 Cg Wy": "Shapesanity Stitched Mixed", + "Half-Half Cg Wy": "Shapesanity Half-Half Mixed", + "Checkered Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Wy": "Shapesanity Stitched Mixed", + "3-1 Cp Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cb": "Shapesanity Stitched Mixed", + "3-1 Cp Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cc": "Shapesanity Stitched Mixed", + "3-1 Cp Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cg": "Shapesanity Stitched Mixed", + "3-1 Cp Cr": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cr": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cr": "Shapesanity Stitched Mixed", + "3-1 Cp Cu": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cu": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cu": "Shapesanity Stitched Mixed", + "3-1 Cp Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cw": "Shapesanity Stitched Mixed", + "3-1 Cp Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cy": "Shapesanity Stitched Mixed", + "3-1 Cp Rb": "Shapesanity Stitched Mixed", + "Half-Half Cp Rb": "Shapesanity Half-Half Mixed", + "Checkered Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rb": "Shapesanity Stitched Mixed", + "3-1 Cp Rc": "Shapesanity Stitched Mixed", + "Half-Half Cp Rc": "Shapesanity Half-Half Mixed", + "Checkered Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rc": "Shapesanity Stitched Mixed", + "3-1 Cp Rg": "Shapesanity Stitched Mixed", + "Half-Half Cp Rg": "Shapesanity Half-Half Mixed", + "Checkered Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rg": "Shapesanity Stitched Mixed", + "3-1 Cp Rp": "Shapesanity Stitched Mixed", + "Half-Half Cp Rp": "Shapesanity Half-Half Mixed", + "Checkered Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rp": "Shapesanity Stitched Mixed", + "3-1 Cp Rr": "Shapesanity Stitched Mixed", + "Half-Half Cp Rr": "Shapesanity Half-Half Mixed", + "Checkered Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rr": "Shapesanity Stitched Mixed", + "3-1 Cp Ru": "Shapesanity Stitched Mixed", + "Half-Half Cp Ru": "Shapesanity Half-Half Mixed", + "Checkered Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Ru": "Shapesanity Stitched Mixed", + "3-1 Cp Rw": "Shapesanity Stitched Mixed", + "Half-Half Cp Rw": "Shapesanity Half-Half Mixed", + "Checkered Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rw": "Shapesanity Stitched Mixed", + "3-1 Cp Ry": "Shapesanity Stitched Mixed", + "Half-Half Cp Ry": "Shapesanity Half-Half Mixed", + "Checkered Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Ry": "Shapesanity Stitched Mixed", + "3-1 Cp Sb": "Shapesanity Stitched Mixed", + "Half-Half Cp Sb": "Shapesanity Half-Half Mixed", + "Checkered Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sb": "Shapesanity Stitched Mixed", + "3-1 Cp Sc": "Shapesanity Stitched Mixed", + "Half-Half Cp Sc": "Shapesanity Half-Half Mixed", + "Checkered Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sc": "Shapesanity Stitched Mixed", + "3-1 Cp Sg": "Shapesanity Stitched Mixed", + "Half-Half Cp Sg": "Shapesanity Half-Half Mixed", + "Checkered Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sg": "Shapesanity Stitched Mixed", + "3-1 Cp Sp": "Shapesanity Stitched Mixed", + "Half-Half Cp Sp": "Shapesanity Half-Half Mixed", + "Checkered Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sp": "Shapesanity Stitched Mixed", + "3-1 Cp Sr": "Shapesanity Stitched Mixed", + "Half-Half Cp Sr": "Shapesanity Half-Half Mixed", + "Checkered Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sr": "Shapesanity Stitched Mixed", + "3-1 Cp Su": "Shapesanity Stitched Mixed", + "Half-Half Cp Su": "Shapesanity Half-Half Mixed", + "Checkered Cp Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Su": "Shapesanity Stitched Mixed", + "3-1 Cp Sw": "Shapesanity Stitched Mixed", + "Half-Half Cp Sw": "Shapesanity Half-Half Mixed", + "Checkered Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sw": "Shapesanity Stitched Mixed", + "3-1 Cp Sy": "Shapesanity Stitched Mixed", + "Half-Half Cp Sy": "Shapesanity Half-Half Mixed", + "Checkered Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sy": "Shapesanity Stitched Mixed", + "3-1 Cp Wb": "Shapesanity Stitched Mixed", + "Half-Half Cp Wb": "Shapesanity Half-Half Mixed", + "Checkered Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wb": "Shapesanity Stitched Mixed", + "3-1 Cp Wc": "Shapesanity Stitched Mixed", + "Half-Half Cp Wc": "Shapesanity Half-Half Mixed", + "Checkered Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wc": "Shapesanity Stitched Mixed", + "3-1 Cp Wg": "Shapesanity Stitched Mixed", + "Half-Half Cp Wg": "Shapesanity Half-Half Mixed", + "Checkered Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wg": "Shapesanity Stitched Mixed", + "3-1 Cp Wp": "Shapesanity Stitched Mixed", + "Half-Half Cp Wp": "Shapesanity Half-Half Mixed", + "Checkered Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wp": "Shapesanity Stitched Mixed", + "3-1 Cp Wr": "Shapesanity Stitched Mixed", + "Half-Half Cp Wr": "Shapesanity Half-Half Mixed", + "Checkered Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wr": "Shapesanity Stitched Mixed", + "3-1 Cp Wu": "Shapesanity Stitched Mixed", + "Half-Half Cp Wu": "Shapesanity Half-Half Mixed", + "Checkered Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wu": "Shapesanity Stitched Mixed", + "3-1 Cp Ww": "Shapesanity Stitched Mixed", + "Half-Half Cp Ww": "Shapesanity Half-Half Mixed", + "Checkered Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Ww": "Shapesanity Stitched Mixed", + "3-1 Cp Wy": "Shapesanity Stitched Mixed", + "Half-Half Cp Wy": "Shapesanity Half-Half Mixed", + "Checkered Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wy": "Shapesanity Stitched Mixed", + "3-1 Cr Cb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Cb": "Shapesanity Stitched Painted", + "3-1 Cr Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cc": "Shapesanity Stitched Mixed", + "3-1 Cr Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Cg": "Shapesanity Stitched Painted", + "3-1 Cr Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cp": "Shapesanity Stitched Mixed", + "3-1 Cr Cu": "Shapesanity Colorful Full Painted", + "Half-Half Cr Cu": "Shapesanity Colorful Full Painted", + "Checkered Cr Cu": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cr Cu": "Shapesanity Colorful Half Painted", + "Cornered Singles Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Cu": "Shapesanity Stitched Painted", + "3-1 Cr Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cr Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cr Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cw": "Shapesanity Stitched Mixed", + "3-1 Cr Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cr Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cr Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cr Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cy": "Shapesanity Stitched Mixed", + "3-1 Cr Rb": "Shapesanity Stitched Painted", + "Half-Half Cr Rb": "Shapesanity Half-Half Painted", + "Checkered Cr Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Rb": "Shapesanity Stitched Painted", + "3-1 Cr Rc": "Shapesanity Stitched Mixed", + "Half-Half Cr Rc": "Shapesanity Half-Half Mixed", + "Checkered Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Rc": "Shapesanity Stitched Mixed", + "3-1 Cr Rg": "Shapesanity Stitched Painted", + "Half-Half Cr Rg": "Shapesanity Half-Half Painted", + "Checkered Cr Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Rg": "Shapesanity Stitched Painted", + "3-1 Cr Rp": "Shapesanity Stitched Mixed", + "Half-Half Cr Rp": "Shapesanity Half-Half Mixed", + "Checkered Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Rp": "Shapesanity Stitched Mixed", + "3-1 Cr Rr": "Shapesanity Stitched Painted", + "Half-Half Cr Rr": "Shapesanity Half-Half Painted", + "Checkered Cr Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Rr": "Shapesanity Stitched Painted", + "3-1 Cr Ru": "Shapesanity Stitched Painted", + "Half-Half Cr Ru": "Shapesanity Half-Half Painted", + "Checkered Cr Ru": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Ru": "Shapesanity Stitched Painted", + "Cornered Singles Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Ru": "Shapesanity Stitched Painted", + "3-1 Cr Rw": "Shapesanity Stitched Mixed", + "Half-Half Cr Rw": "Shapesanity Half-Half Mixed", + "Checkered Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Rw": "Shapesanity Stitched Mixed", + "3-1 Cr Ry": "Shapesanity Stitched Mixed", + "Half-Half Cr Ry": "Shapesanity Half-Half Mixed", + "Checkered Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Ry": "Shapesanity Stitched Mixed", + "3-1 Cr Sb": "Shapesanity Stitched Painted", + "Half-Half Cr Sb": "Shapesanity Half-Half Painted", + "Checkered Cr Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Sb": "Shapesanity Stitched Painted", + "3-1 Cr Sc": "Shapesanity Stitched Mixed", + "Half-Half Cr Sc": "Shapesanity Half-Half Mixed", + "Checkered Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sc": "Shapesanity Stitched Mixed", + "3-1 Cr Sg": "Shapesanity Stitched Painted", + "Half-Half Cr Sg": "Shapesanity Half-Half Painted", + "Checkered Cr Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Sg": "Shapesanity Stitched Painted", + "3-1 Cr Sp": "Shapesanity Stitched Mixed", + "Half-Half Cr Sp": "Shapesanity Half-Half Mixed", + "Checkered Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sp": "Shapesanity Stitched Mixed", + "3-1 Cr Sr": "Shapesanity Stitched Painted", + "Half-Half Cr Sr": "Shapesanity Half-Half Painted", + "Checkered Cr Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Sr": "Shapesanity Stitched Painted", + "3-1 Cr Su": "Shapesanity Stitched Painted", + "Half-Half Cr Su": "Shapesanity Half-Half Painted", + "Checkered Cr Su": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Su": "Shapesanity Stitched Painted", + "Cornered Singles Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Su": "Shapesanity Stitched Painted", + "3-1 Cr Sw": "Shapesanity Stitched Mixed", + "Half-Half Cr Sw": "Shapesanity Half-Half Mixed", + "Checkered Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sw": "Shapesanity Stitched Mixed", + "3-1 Cr Sy": "Shapesanity Stitched Mixed", + "Half-Half Cr Sy": "Shapesanity Half-Half Mixed", + "Checkered Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sy": "Shapesanity Stitched Mixed", + "3-1 Cr Wb": "Shapesanity Stitched Painted", + "Half-Half Cr Wb": "Shapesanity Half-Half Painted", + "Checkered Cr Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wb": "Shapesanity Stitched Painted", + "3-1 Cr Wc": "Shapesanity Stitched Mixed", + "Half-Half Cr Wc": "Shapesanity Half-Half Mixed", + "Checkered Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Wc": "Shapesanity Stitched Mixed", + "3-1 Cr Wg": "Shapesanity Stitched Painted", + "Half-Half Cr Wg": "Shapesanity Half-Half Painted", + "Checkered Cr Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wg": "Shapesanity Stitched Painted", + "3-1 Cr Wp": "Shapesanity Stitched Mixed", + "Half-Half Cr Wp": "Shapesanity Half-Half Mixed", + "Checkered Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Wp": "Shapesanity Stitched Mixed", + "3-1 Cr Wr": "Shapesanity Stitched Painted", + "Half-Half Cr Wr": "Shapesanity Half-Half Painted", + "Checkered Cr Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wr": "Shapesanity Stitched Painted", + "3-1 Cr Wu": "Shapesanity Stitched Painted", + "Half-Half Cr Wu": "Shapesanity Half-Half Painted", + "Checkered Cr Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wu": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wu": "Shapesanity Stitched Painted", + "3-1 Cr Ww": "Shapesanity Stitched Mixed", + "Half-Half Cr Ww": "Shapesanity Half-Half Mixed", + "Checkered Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Ww": "Shapesanity Stitched Mixed", + "3-1 Cr Wy": "Shapesanity Stitched Mixed", + "Half-Half Cr Wy": "Shapesanity Half-Half Mixed", + "Checkered Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Wy": "Shapesanity Stitched Mixed", + "3-1 Cu Cb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cu Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Cb": "Shapesanity Stitched Painted", + "3-1 Cu Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cu Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cc": "Shapesanity Stitched Mixed", + "3-1 Cu Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cu Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Cg": "Shapesanity Stitched Painted", + "3-1 Cu Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cu Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cp": "Shapesanity Stitched Mixed", + "3-1 Cu Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cu Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Cr": "Shapesanity Stitched Painted", + "3-1 Cu Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cu Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cu Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cw": "Shapesanity Stitched Mixed", + "3-1 Cu Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cu Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cu Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cu Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cy": "Shapesanity Stitched Mixed", + "3-1 Cu Rb": "Shapesanity Stitched Painted", + "Half-Half Cu Rb": "Shapesanity Half-Half Painted", + "Checkered Cu Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Rb": "Shapesanity Stitched Painted", + "3-1 Cu Rc": "Shapesanity Stitched Mixed", + "Half-Half Cu Rc": "Shapesanity Half-Half Mixed", + "Checkered Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Rc": "Shapesanity Stitched Mixed", + "3-1 Cu Rg": "Shapesanity Stitched Painted", + "Half-Half Cu Rg": "Shapesanity Half-Half Painted", + "Checkered Cu Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Rg": "Shapesanity Stitched Painted", + "3-1 Cu Rp": "Shapesanity Stitched Mixed", + "Half-Half Cu Rp": "Shapesanity Half-Half Mixed", + "Checkered Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Rp": "Shapesanity Stitched Mixed", + "3-1 Cu Rr": "Shapesanity Stitched Painted", + "Half-Half Cu Rr": "Shapesanity Half-Half Painted", + "Checkered Cu Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Rr": "Shapesanity Stitched Painted", + "3-1 Cu Ru": "Shapesanity Stitched Uncolored", + "Half-Half Cu Ru": "Shapesanity Half-Half Uncolored", + "Checkered Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent Singles Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered Singles Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Cu Ru": "Shapesanity Stitched Uncolored", + "3-1 Cu Rw": "Shapesanity Stitched Mixed", + "Half-Half Cu Rw": "Shapesanity Half-Half Mixed", + "Checkered Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Rw": "Shapesanity Stitched Mixed", + "3-1 Cu Ry": "Shapesanity Stitched Mixed", + "Half-Half Cu Ry": "Shapesanity Half-Half Mixed", + "Checkered Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Ry": "Shapesanity Stitched Mixed", + "3-1 Cu Sb": "Shapesanity Stitched Painted", + "Half-Half Cu Sb": "Shapesanity Half-Half Painted", + "Checkered Cu Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Sb": "Shapesanity Stitched Painted", + "3-1 Cu Sc": "Shapesanity Stitched Mixed", + "Half-Half Cu Sc": "Shapesanity Half-Half Mixed", + "Checkered Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sc": "Shapesanity Stitched Mixed", + "3-1 Cu Sg": "Shapesanity Stitched Painted", + "Half-Half Cu Sg": "Shapesanity Half-Half Painted", + "Checkered Cu Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Sg": "Shapesanity Stitched Painted", + "3-1 Cu Sp": "Shapesanity Stitched Mixed", + "Half-Half Cu Sp": "Shapesanity Half-Half Mixed", + "Checkered Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sp": "Shapesanity Stitched Mixed", + "3-1 Cu Sr": "Shapesanity Stitched Painted", + "Half-Half Cu Sr": "Shapesanity Half-Half Painted", + "Checkered Cu Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Sr": "Shapesanity Stitched Painted", + "3-1 Cu Su": "Shapesanity Stitched Uncolored", + "Half-Half Cu Su": "Shapesanity Half-Half Uncolored", + "Checkered Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent Singles Cu Su": "Shapesanity Stitched Uncolored", + "Cornered Singles Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Cu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Cu Su": "Shapesanity Stitched Uncolored", + "3-1 Cu Sw": "Shapesanity Stitched Mixed", + "Half-Half Cu Sw": "Shapesanity Half-Half Mixed", + "Checkered Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sw": "Shapesanity Stitched Mixed", + "3-1 Cu Sy": "Shapesanity Stitched Mixed", + "Half-Half Cu Sy": "Shapesanity Half-Half Mixed", + "Checkered Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sy": "Shapesanity Stitched Mixed", + "3-1 Cu Wb": "Shapesanity Stitched Painted", + "Half-Half Cu Wb": "Shapesanity Half-Half Painted", + "Checkered Cu Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Wb": "Shapesanity Stitched Painted", + "3-1 Cu Wc": "Shapesanity Stitched Mixed", + "Half-Half Cu Wc": "Shapesanity Half-Half Mixed", + "Checkered Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Wc": "Shapesanity Stitched Mixed", + "3-1 Cu Wg": "Shapesanity Stitched Painted", + "Half-Half Cu Wg": "Shapesanity Half-Half Painted", + "Checkered Cu Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Wg": "Shapesanity Stitched Painted", + "3-1 Cu Wp": "Shapesanity Stitched Mixed", + "Half-Half Cu Wp": "Shapesanity Half-Half Mixed", + "Checkered Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Wp": "Shapesanity Stitched Mixed", + "3-1 Cu Wr": "Shapesanity Stitched Painted", + "Half-Half Cu Wr": "Shapesanity Half-Half Painted", + "Checkered Cu Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Wr": "Shapesanity Stitched Painted", + "3-1 Cu Wu": "Shapesanity Stitched Uncolored", + "Half-Half Cu Wu": "Shapesanity Half-Half Uncolored", + "Checkered Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent Singles Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered Singles Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Cu Wu": "Shapesanity Stitched Uncolored", + "3-1 Cu Ww": "Shapesanity Stitched Mixed", + "Half-Half Cu Ww": "Shapesanity Half-Half Mixed", + "Checkered Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Ww": "Shapesanity Stitched Mixed", + "3-1 Cu Wy": "Shapesanity Stitched Mixed", + "Half-Half Cu Wy": "Shapesanity Half-Half Mixed", + "Checkered Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Wy": "Shapesanity Stitched Mixed", + "3-1 Cw Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cb": "Shapesanity Stitched Mixed", + "3-1 Cw Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cc": "Shapesanity Stitched Mixed", + "3-1 Cw Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cg": "Shapesanity Stitched Mixed", + "3-1 Cw Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cp": "Shapesanity Stitched Mixed", + "3-1 Cw Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cr": "Shapesanity Stitched Mixed", + "3-1 Cw Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cu": "Shapesanity Stitched Mixed", + "3-1 Cw Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cw Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cw Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cw Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cy": "Shapesanity Stitched Mixed", + "3-1 Cw Rb": "Shapesanity Stitched Mixed", + "Half-Half Cw Rb": "Shapesanity Half-Half Mixed", + "Checkered Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rb": "Shapesanity Stitched Mixed", + "3-1 Cw Rc": "Shapesanity Stitched Mixed", + "Half-Half Cw Rc": "Shapesanity Half-Half Mixed", + "Checkered Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rc": "Shapesanity Stitched Mixed", + "3-1 Cw Rg": "Shapesanity Stitched Mixed", + "Half-Half Cw Rg": "Shapesanity Half-Half Mixed", + "Checkered Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rg": "Shapesanity Stitched Mixed", + "3-1 Cw Rp": "Shapesanity Stitched Mixed", + "Half-Half Cw Rp": "Shapesanity Half-Half Mixed", + "Checkered Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rp": "Shapesanity Stitched Mixed", + "3-1 Cw Rr": "Shapesanity Stitched Mixed", + "Half-Half Cw Rr": "Shapesanity Half-Half Mixed", + "Checkered Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rr": "Shapesanity Stitched Mixed", + "3-1 Cw Ru": "Shapesanity Stitched Mixed", + "Half-Half Cw Ru": "Shapesanity Half-Half Mixed", + "Checkered Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Ru": "Shapesanity Stitched Mixed", + "3-1 Cw Rw": "Shapesanity Stitched Mixed", + "Half-Half Cw Rw": "Shapesanity Half-Half Mixed", + "Checkered Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rw": "Shapesanity Stitched Mixed", + "3-1 Cw Ry": "Shapesanity Stitched Mixed", + "Half-Half Cw Ry": "Shapesanity Half-Half Mixed", + "Checkered Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Ry": "Shapesanity Stitched Mixed", + "3-1 Cw Sb": "Shapesanity Stitched Mixed", + "Half-Half Cw Sb": "Shapesanity Half-Half Mixed", + "Checkered Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sb": "Shapesanity Stitched Mixed", + "3-1 Cw Sc": "Shapesanity Stitched Mixed", + "Half-Half Cw Sc": "Shapesanity Half-Half Mixed", + "Checkered Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sc": "Shapesanity Stitched Mixed", + "3-1 Cw Sg": "Shapesanity Stitched Mixed", + "Half-Half Cw Sg": "Shapesanity Half-Half Mixed", + "Checkered Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sg": "Shapesanity Stitched Mixed", + "3-1 Cw Sp": "Shapesanity Stitched Mixed", + "Half-Half Cw Sp": "Shapesanity Half-Half Mixed", + "Checkered Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sp": "Shapesanity Stitched Mixed", + "3-1 Cw Sr": "Shapesanity Stitched Mixed", + "Half-Half Cw Sr": "Shapesanity Half-Half Mixed", + "Checkered Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sr": "Shapesanity Stitched Mixed", + "3-1 Cw Su": "Shapesanity Stitched Mixed", + "Half-Half Cw Su": "Shapesanity Half-Half Mixed", + "Checkered Cw Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Su": "Shapesanity Stitched Mixed", + "3-1 Cw Sw": "Shapesanity Stitched Mixed", + "Half-Half Cw Sw": "Shapesanity Half-Half Mixed", + "Checkered Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sw": "Shapesanity Stitched Mixed", + "3-1 Cw Sy": "Shapesanity Stitched Mixed", + "Half-Half Cw Sy": "Shapesanity Half-Half Mixed", + "Checkered Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sy": "Shapesanity Stitched Mixed", + "3-1 Cw Wb": "Shapesanity Stitched Mixed", + "Half-Half Cw Wb": "Shapesanity Half-Half Mixed", + "Checkered Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wb": "Shapesanity Stitched Mixed", + "3-1 Cw Wc": "Shapesanity Stitched Mixed", + "Half-Half Cw Wc": "Shapesanity Half-Half Mixed", + "Checkered Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wc": "Shapesanity Stitched Mixed", + "3-1 Cw Wg": "Shapesanity Stitched Mixed", + "Half-Half Cw Wg": "Shapesanity Half-Half Mixed", + "Checkered Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wg": "Shapesanity Stitched Mixed", + "3-1 Cw Wp": "Shapesanity Stitched Mixed", + "Half-Half Cw Wp": "Shapesanity Half-Half Mixed", + "Checkered Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wp": "Shapesanity Stitched Mixed", + "3-1 Cw Wr": "Shapesanity Stitched Mixed", + "Half-Half Cw Wr": "Shapesanity Half-Half Mixed", + "Checkered Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wr": "Shapesanity Stitched Mixed", + "3-1 Cw Wu": "Shapesanity Stitched Mixed", + "Half-Half Cw Wu": "Shapesanity Half-Half Mixed", + "Checkered Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wu": "Shapesanity Stitched Mixed", + "3-1 Cw Ww": "Shapesanity Stitched Mixed", + "Half-Half Cw Ww": "Shapesanity Half-Half Mixed", + "Checkered Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Ww": "Shapesanity Stitched Mixed", + "3-1 Cw Wy": "Shapesanity Stitched Mixed", + "Half-Half Cw Wy": "Shapesanity Half-Half Mixed", + "Checkered Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wy": "Shapesanity Stitched Mixed", + "3-1 Cy Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cb": "Shapesanity Stitched Mixed", + "3-1 Cy Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cc": "Shapesanity Stitched Mixed", + "3-1 Cy Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cg": "Shapesanity Stitched Mixed", + "3-1 Cy Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cp": "Shapesanity Stitched Mixed", + "3-1 Cy Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cr": "Shapesanity Stitched Mixed", + "3-1 Cy Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cu": "Shapesanity Stitched Mixed", + "3-1 Cy Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cw": "Shapesanity Stitched Mixed", + "3-1 Cy Rb": "Shapesanity Stitched Mixed", + "Half-Half Cy Rb": "Shapesanity Half-Half Mixed", + "Checkered Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rb": "Shapesanity Stitched Mixed", + "3-1 Cy Rc": "Shapesanity Stitched Mixed", + "Half-Half Cy Rc": "Shapesanity Half-Half Mixed", + "Checkered Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rc": "Shapesanity Stitched Mixed", + "3-1 Cy Rg": "Shapesanity Stitched Mixed", + "Half-Half Cy Rg": "Shapesanity Half-Half Mixed", + "Checkered Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rg": "Shapesanity Stitched Mixed", + "3-1 Cy Rp": "Shapesanity Stitched Mixed", + "Half-Half Cy Rp": "Shapesanity Half-Half Mixed", + "Checkered Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rp": "Shapesanity Stitched Mixed", + "3-1 Cy Rr": "Shapesanity Stitched Mixed", + "Half-Half Cy Rr": "Shapesanity Half-Half Mixed", + "Checkered Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rr": "Shapesanity Stitched Mixed", + "3-1 Cy Ru": "Shapesanity Stitched Mixed", + "Half-Half Cy Ru": "Shapesanity Half-Half Mixed", + "Checkered Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Ru": "Shapesanity Stitched Mixed", + "3-1 Cy Rw": "Shapesanity Stitched Mixed", + "Half-Half Cy Rw": "Shapesanity Half-Half Mixed", + "Checkered Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rw": "Shapesanity Stitched Mixed", + "3-1 Cy Ry": "Shapesanity Stitched Mixed", + "Half-Half Cy Ry": "Shapesanity Half-Half Mixed", + "Checkered Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Ry": "Shapesanity Stitched Mixed", + "3-1 Cy Sb": "Shapesanity Stitched Mixed", + "Half-Half Cy Sb": "Shapesanity Half-Half Mixed", + "Checkered Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sb": "Shapesanity Stitched Mixed", + "3-1 Cy Sc": "Shapesanity Stitched Mixed", + "Half-Half Cy Sc": "Shapesanity Half-Half Mixed", + "Checkered Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sc": "Shapesanity Stitched Mixed", + "3-1 Cy Sg": "Shapesanity Stitched Mixed", + "Half-Half Cy Sg": "Shapesanity Half-Half Mixed", + "Checkered Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sg": "Shapesanity Stitched Mixed", + "3-1 Cy Sp": "Shapesanity Stitched Mixed", + "Half-Half Cy Sp": "Shapesanity Half-Half Mixed", + "Checkered Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sp": "Shapesanity Stitched Mixed", + "3-1 Cy Sr": "Shapesanity Stitched Mixed", + "Half-Half Cy Sr": "Shapesanity Half-Half Mixed", + "Checkered Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sr": "Shapesanity Stitched Mixed", + "3-1 Cy Su": "Shapesanity Stitched Mixed", + "Half-Half Cy Su": "Shapesanity Half-Half Mixed", + "Checkered Cy Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Su": "Shapesanity Stitched Mixed", + "3-1 Cy Sw": "Shapesanity Stitched Mixed", + "Half-Half Cy Sw": "Shapesanity Half-Half Mixed", + "Checkered Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sw": "Shapesanity Stitched Mixed", + "3-1 Cy Sy": "Shapesanity Stitched Mixed", + "Half-Half Cy Sy": "Shapesanity Half-Half Mixed", + "Checkered Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sy": "Shapesanity Stitched Mixed", + "3-1 Cy Wb": "Shapesanity Stitched Mixed", + "Half-Half Cy Wb": "Shapesanity Half-Half Mixed", + "Checkered Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wb": "Shapesanity Stitched Mixed", + "3-1 Cy Wc": "Shapesanity Stitched Mixed", + "Half-Half Cy Wc": "Shapesanity Half-Half Mixed", + "Checkered Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wc": "Shapesanity Stitched Mixed", + "3-1 Cy Wg": "Shapesanity Stitched Mixed", + "Half-Half Cy Wg": "Shapesanity Half-Half Mixed", + "Checkered Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wg": "Shapesanity Stitched Mixed", + "3-1 Cy Wp": "Shapesanity Stitched Mixed", + "Half-Half Cy Wp": "Shapesanity Half-Half Mixed", + "Checkered Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wp": "Shapesanity Stitched Mixed", + "3-1 Cy Wr": "Shapesanity Stitched Mixed", + "Half-Half Cy Wr": "Shapesanity Half-Half Mixed", + "Checkered Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wr": "Shapesanity Stitched Mixed", + "3-1 Cy Wu": "Shapesanity Stitched Mixed", + "Half-Half Cy Wu": "Shapesanity Half-Half Mixed", + "Checkered Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wu": "Shapesanity Stitched Mixed", + "3-1 Cy Ww": "Shapesanity Stitched Mixed", + "Half-Half Cy Ww": "Shapesanity Half-Half Mixed", + "Checkered Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Ww": "Shapesanity Stitched Mixed", + "3-1 Cy Wy": "Shapesanity Stitched Mixed", + "Half-Half Cy Wy": "Shapesanity Half-Half Mixed", + "Checkered Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wy": "Shapesanity Stitched Mixed", + "3-1 Rb Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cb": "Shapesanity Stitched Painted", + "3-1 Rb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cc": "Shapesanity Stitched Mixed", + "3-1 Rb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cg": "Shapesanity Stitched Painted", + "3-1 Rb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cp": "Shapesanity Stitched Mixed", + "3-1 Rb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cr": "Shapesanity Stitched Painted", + "3-1 Rb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cu": "Shapesanity Stitched Painted", + "3-1 Rb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cw": "Shapesanity Stitched Mixed", + "3-1 Rb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cy": "Shapesanity Stitched Mixed", + "3-1 Rb Rc": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Rc": "Shapesanity Colorful Full Mixed", + "Checkered Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Rc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Rc": "Shapesanity Stitched Mixed", + "3-1 Rb Rg": "Shapesanity Colorful Full Painted", + "Half-Half Rb Rg": "Shapesanity Colorful Full Painted", + "Checkered Rb Rg": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rb Rg": "Shapesanity Colorful Half Painted", + "Cornered Singles Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Rg": "Shapesanity Stitched Painted", + "3-1 Rb Rp": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Rp": "Shapesanity Colorful Full Mixed", + "Checkered Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Rp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Rp": "Shapesanity Stitched Mixed", + "3-1 Rb Rr": "Shapesanity Colorful Full Painted", + "Half-Half Rb Rr": "Shapesanity Colorful Full Painted", + "Checkered Rb Rr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rb Rr": "Shapesanity Colorful Half Painted", + "Cornered Singles Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Rr": "Shapesanity Stitched Painted", + "3-1 Rb Ru": "Shapesanity Colorful Full Painted", + "Half-Half Rb Ru": "Shapesanity Colorful Full Painted", + "Checkered Rb Ru": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rb Ru": "Shapesanity Colorful Half Painted", + "Cornered Singles Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Ru": "Shapesanity Stitched Painted", + "3-1 Rb Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Rw": "Shapesanity Stitched Mixed", + "3-1 Rb Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Ry": "Shapesanity Stitched Mixed", + "3-1 Rb Sb": "Shapesanity Stitched Painted", + "Half-Half Rb Sb": "Shapesanity Half-Half Painted", + "Checkered Rb Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Sb": "Shapesanity Stitched Painted", + "Cornered Singles Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Sb": "Shapesanity Stitched Painted", + "3-1 Rb Sc": "Shapesanity Stitched Mixed", + "Half-Half Rb Sc": "Shapesanity Half-Half Mixed", + "Checkered Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sc": "Shapesanity Stitched Mixed", + "3-1 Rb Sg": "Shapesanity Stitched Painted", + "Half-Half Rb Sg": "Shapesanity Half-Half Painted", + "Checkered Rb Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Sg": "Shapesanity Stitched Painted", + "Cornered Singles Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Sg": "Shapesanity Stitched Painted", + "3-1 Rb Sp": "Shapesanity Stitched Mixed", + "Half-Half Rb Sp": "Shapesanity Half-Half Mixed", + "Checkered Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sp": "Shapesanity Stitched Mixed", + "3-1 Rb Sr": "Shapesanity Stitched Painted", + "Half-Half Rb Sr": "Shapesanity Half-Half Painted", + "Checkered Rb Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Sr": "Shapesanity Stitched Painted", + "Cornered Singles Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Sr": "Shapesanity Stitched Painted", + "3-1 Rb Su": "Shapesanity Stitched Painted", + "Half-Half Rb Su": "Shapesanity Half-Half Painted", + "Checkered Rb Su": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Su": "Shapesanity Stitched Painted", + "Cornered Singles Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Su": "Shapesanity Stitched Painted", + "3-1 Rb Sw": "Shapesanity Stitched Mixed", + "Half-Half Rb Sw": "Shapesanity Half-Half Mixed", + "Checkered Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sw": "Shapesanity Stitched Mixed", + "3-1 Rb Sy": "Shapesanity Stitched Mixed", + "Half-Half Rb Sy": "Shapesanity Half-Half Mixed", + "Checkered Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sy": "Shapesanity Stitched Mixed", + "3-1 Rb Wb": "Shapesanity Stitched Painted", + "Half-Half Rb Wb": "Shapesanity Half-Half Painted", + "Checkered Rb Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wb": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wb": "Shapesanity Stitched Painted", + "3-1 Rb Wc": "Shapesanity Stitched Mixed", + "Half-Half Rb Wc": "Shapesanity Half-Half Mixed", + "Checkered Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Wc": "Shapesanity Stitched Mixed", + "3-1 Rb Wg": "Shapesanity Stitched Painted", + "Half-Half Rb Wg": "Shapesanity Half-Half Painted", + "Checkered Rb Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wg": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wg": "Shapesanity Stitched Painted", + "3-1 Rb Wp": "Shapesanity Stitched Mixed", + "Half-Half Rb Wp": "Shapesanity Half-Half Mixed", + "Checkered Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Wp": "Shapesanity Stitched Mixed", + "3-1 Rb Wr": "Shapesanity Stitched Painted", + "Half-Half Rb Wr": "Shapesanity Half-Half Painted", + "Checkered Rb Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wr": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wr": "Shapesanity Stitched Painted", + "3-1 Rb Wu": "Shapesanity Stitched Painted", + "Half-Half Rb Wu": "Shapesanity Half-Half Painted", + "Checkered Rb Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wu": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wu": "Shapesanity Stitched Painted", + "3-1 Rb Ww": "Shapesanity Stitched Mixed", + "Half-Half Rb Ww": "Shapesanity Half-Half Mixed", + "Checkered Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Ww": "Shapesanity Stitched Mixed", + "3-1 Rb Wy": "Shapesanity Stitched Mixed", + "Half-Half Rb Wy": "Shapesanity Half-Half Mixed", + "Checkered Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Wy": "Shapesanity Stitched Mixed", + "3-1 Rc Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cb": "Shapesanity Stitched Mixed", + "3-1 Rc Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cc": "Shapesanity Stitched Mixed", + "3-1 Rc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cg": "Shapesanity Stitched Mixed", + "3-1 Rc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cp": "Shapesanity Stitched Mixed", + "3-1 Rc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cr": "Shapesanity Stitched Mixed", + "3-1 Rc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cu": "Shapesanity Stitched Mixed", + "3-1 Rc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cw": "Shapesanity Stitched Mixed", + "3-1 Rc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cy": "Shapesanity Stitched Mixed", + "3-1 Rc Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rb": "Shapesanity Stitched Mixed", + "3-1 Rc Rg": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rg": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rg": "Shapesanity Stitched Mixed", + "3-1 Rc Rp": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rp": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rp": "Shapesanity Stitched Mixed", + "3-1 Rc Rr": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rr": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rr": "Shapesanity Stitched Mixed", + "3-1 Rc Ru": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Ru": "Shapesanity Colorful Full Mixed", + "Checkered Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Ru": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Ru": "Shapesanity Stitched Mixed", + "3-1 Rc Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rw": "Shapesanity Stitched Mixed", + "3-1 Rc Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Ry": "Shapesanity Stitched Mixed", + "3-1 Rc Sb": "Shapesanity Stitched Mixed", + "Half-Half Rc Sb": "Shapesanity Half-Half Mixed", + "Checkered Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sb": "Shapesanity Stitched Mixed", + "3-1 Rc Sc": "Shapesanity Stitched Mixed", + "Half-Half Rc Sc": "Shapesanity Half-Half Mixed", + "Checkered Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sc": "Shapesanity Stitched Mixed", + "3-1 Rc Sg": "Shapesanity Stitched Mixed", + "Half-Half Rc Sg": "Shapesanity Half-Half Mixed", + "Checkered Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sg": "Shapesanity Stitched Mixed", + "3-1 Rc Sp": "Shapesanity Stitched Mixed", + "Half-Half Rc Sp": "Shapesanity Half-Half Mixed", + "Checkered Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sp": "Shapesanity Stitched Mixed", + "3-1 Rc Sr": "Shapesanity Stitched Mixed", + "Half-Half Rc Sr": "Shapesanity Half-Half Mixed", + "Checkered Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sr": "Shapesanity Stitched Mixed", + "3-1 Rc Su": "Shapesanity Stitched Mixed", + "Half-Half Rc Su": "Shapesanity Half-Half Mixed", + "Checkered Rc Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Su": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Su": "Shapesanity Stitched Mixed", + "3-1 Rc Sw": "Shapesanity Stitched Mixed", + "Half-Half Rc Sw": "Shapesanity Half-Half Mixed", + "Checkered Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sw": "Shapesanity Stitched Mixed", + "3-1 Rc Sy": "Shapesanity Stitched Mixed", + "Half-Half Rc Sy": "Shapesanity Half-Half Mixed", + "Checkered Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sy": "Shapesanity Stitched Mixed", + "3-1 Rc Wb": "Shapesanity Stitched Mixed", + "Half-Half Rc Wb": "Shapesanity Half-Half Mixed", + "Checkered Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wb": "Shapesanity Stitched Mixed", + "3-1 Rc Wc": "Shapesanity Stitched Mixed", + "Half-Half Rc Wc": "Shapesanity Half-Half Mixed", + "Checkered Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wc": "Shapesanity Stitched Mixed", + "3-1 Rc Wg": "Shapesanity Stitched Mixed", + "Half-Half Rc Wg": "Shapesanity Half-Half Mixed", + "Checkered Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wg": "Shapesanity Stitched Mixed", + "3-1 Rc Wp": "Shapesanity Stitched Mixed", + "Half-Half Rc Wp": "Shapesanity Half-Half Mixed", + "Checkered Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wp": "Shapesanity Stitched Mixed", + "3-1 Rc Wr": "Shapesanity Stitched Mixed", + "Half-Half Rc Wr": "Shapesanity Half-Half Mixed", + "Checkered Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wr": "Shapesanity Stitched Mixed", + "3-1 Rc Wu": "Shapesanity Stitched Mixed", + "Half-Half Rc Wu": "Shapesanity Half-Half Mixed", + "Checkered Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wu": "Shapesanity Stitched Mixed", + "3-1 Rc Ww": "Shapesanity Stitched Mixed", + "Half-Half Rc Ww": "Shapesanity Half-Half Mixed", + "Checkered Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Ww": "Shapesanity Stitched Mixed", + "3-1 Rc Wy": "Shapesanity Stitched Mixed", + "Half-Half Rc Wy": "Shapesanity Half-Half Mixed", + "Checkered Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wy": "Shapesanity Stitched Mixed", + "3-1 Rg Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cb": "Shapesanity Stitched Painted", + "3-1 Rg Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cc": "Shapesanity Stitched Mixed", + "3-1 Rg Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cg": "Shapesanity Stitched Painted", + "3-1 Rg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cp": "Shapesanity Stitched Mixed", + "3-1 Rg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cr": "Shapesanity Stitched Painted", + "3-1 Rg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cu": "Shapesanity Stitched Painted", + "3-1 Rg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cw": "Shapesanity Stitched Mixed", + "3-1 Rg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cy": "Shapesanity Stitched Mixed", + "3-1 Rg Rb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Rg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Rb": "Shapesanity Stitched Painted", + "3-1 Rg Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Rc": "Shapesanity Stitched Mixed", + "3-1 Rg Rp": "Shapesanity Colorful Full Mixed", + "Half-Half Rg Rp": "Shapesanity Colorful Full Mixed", + "Checkered Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rg Rp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Rp": "Shapesanity Stitched Mixed", + "3-1 Rg Rr": "Shapesanity Colorful Full Painted", + "Half-Half Rg Rr": "Shapesanity Colorful Full Painted", + "Checkered Rg Rr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rg Rr": "Shapesanity Colorful Half Painted", + "Cornered Singles Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Rr": "Shapesanity Stitched Painted", + "3-1 Rg Ru": "Shapesanity Colorful Full Painted", + "Half-Half Rg Ru": "Shapesanity Colorful Full Painted", + "Checkered Rg Ru": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rg Ru": "Shapesanity Colorful Half Painted", + "Cornered Singles Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Ru": "Shapesanity Stitched Painted", + "3-1 Rg Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rg Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rg Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Rw": "Shapesanity Stitched Mixed", + "3-1 Rg Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rg Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rg Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Ry": "Shapesanity Stitched Mixed", + "3-1 Rg Sb": "Shapesanity Stitched Painted", + "Half-Half Rg Sb": "Shapesanity Half-Half Painted", + "Checkered Rg Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Sb": "Shapesanity Stitched Painted", + "Cornered Singles Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Sb": "Shapesanity Stitched Painted", + "3-1 Rg Sc": "Shapesanity Stitched Mixed", + "Half-Half Rg Sc": "Shapesanity Half-Half Mixed", + "Checkered Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sc": "Shapesanity Stitched Mixed", + "3-1 Rg Sg": "Shapesanity Stitched Painted", + "Half-Half Rg Sg": "Shapesanity Half-Half Painted", + "Checkered Rg Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Sg": "Shapesanity Stitched Painted", + "Cornered Singles Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Sg": "Shapesanity Stitched Painted", + "3-1 Rg Sp": "Shapesanity Stitched Mixed", + "Half-Half Rg Sp": "Shapesanity Half-Half Mixed", + "Checkered Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sp": "Shapesanity Stitched Mixed", + "3-1 Rg Sr": "Shapesanity Stitched Painted", + "Half-Half Rg Sr": "Shapesanity Half-Half Painted", + "Checkered Rg Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Sr": "Shapesanity Stitched Painted", + "Cornered Singles Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Sr": "Shapesanity Stitched Painted", + "3-1 Rg Su": "Shapesanity Stitched Painted", + "Half-Half Rg Su": "Shapesanity Half-Half Painted", + "Checkered Rg Su": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Su": "Shapesanity Stitched Painted", + "Cornered Singles Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Su": "Shapesanity Stitched Painted", + "3-1 Rg Sw": "Shapesanity Stitched Mixed", + "Half-Half Rg Sw": "Shapesanity Half-Half Mixed", + "Checkered Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sw": "Shapesanity Stitched Mixed", + "3-1 Rg Sy": "Shapesanity Stitched Mixed", + "Half-Half Rg Sy": "Shapesanity Half-Half Mixed", + "Checkered Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sy": "Shapesanity Stitched Mixed", + "3-1 Rg Wb": "Shapesanity Stitched Painted", + "Half-Half Rg Wb": "Shapesanity Half-Half Painted", + "Checkered Rg Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wb": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wb": "Shapesanity Stitched Painted", + "3-1 Rg Wc": "Shapesanity Stitched Mixed", + "Half-Half Rg Wc": "Shapesanity Half-Half Mixed", + "Checkered Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Wc": "Shapesanity Stitched Mixed", + "3-1 Rg Wg": "Shapesanity Stitched Painted", + "Half-Half Rg Wg": "Shapesanity Half-Half Painted", + "Checkered Rg Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wg": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wg": "Shapesanity Stitched Painted", + "3-1 Rg Wp": "Shapesanity Stitched Mixed", + "Half-Half Rg Wp": "Shapesanity Half-Half Mixed", + "Checkered Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Wp": "Shapesanity Stitched Mixed", + "3-1 Rg Wr": "Shapesanity Stitched Painted", + "Half-Half Rg Wr": "Shapesanity Half-Half Painted", + "Checkered Rg Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wr": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wr": "Shapesanity Stitched Painted", + "3-1 Rg Wu": "Shapesanity Stitched Painted", + "Half-Half Rg Wu": "Shapesanity Half-Half Painted", + "Checkered Rg Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wu": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wu": "Shapesanity Stitched Painted", + "3-1 Rg Ww": "Shapesanity Stitched Mixed", + "Half-Half Rg Ww": "Shapesanity Half-Half Mixed", + "Checkered Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Ww": "Shapesanity Stitched Mixed", + "3-1 Rg Wy": "Shapesanity Stitched Mixed", + "Half-Half Rg Wy": "Shapesanity Half-Half Mixed", + "Checkered Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Wy": "Shapesanity Stitched Mixed", + "3-1 Rp Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cb": "Shapesanity Stitched Mixed", + "3-1 Rp Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cc": "Shapesanity Stitched Mixed", + "3-1 Rp Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cg": "Shapesanity Stitched Mixed", + "3-1 Rp Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cp": "Shapesanity Stitched Mixed", + "3-1 Rp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cr": "Shapesanity Stitched Mixed", + "3-1 Rp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cu": "Shapesanity Stitched Mixed", + "3-1 Rp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cw": "Shapesanity Stitched Mixed", + "3-1 Rp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cy": "Shapesanity Stitched Mixed", + "3-1 Rp Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rb": "Shapesanity Stitched Mixed", + "3-1 Rp Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rc": "Shapesanity Stitched Mixed", + "3-1 Rp Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rg": "Shapesanity Stitched Mixed", + "3-1 Rp Rr": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Rr": "Shapesanity Colorful Full Mixed", + "Checkered Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Rr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rr": "Shapesanity Stitched Mixed", + "3-1 Rp Ru": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Ru": "Shapesanity Colorful Full Mixed", + "Checkered Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Ru": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Ru": "Shapesanity Stitched Mixed", + "3-1 Rp Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rw": "Shapesanity Stitched Mixed", + "3-1 Rp Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Ry": "Shapesanity Stitched Mixed", + "3-1 Rp Sb": "Shapesanity Stitched Mixed", + "Half-Half Rp Sb": "Shapesanity Half-Half Mixed", + "Checkered Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sb": "Shapesanity Stitched Mixed", + "3-1 Rp Sc": "Shapesanity Stitched Mixed", + "Half-Half Rp Sc": "Shapesanity Half-Half Mixed", + "Checkered Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sc": "Shapesanity Stitched Mixed", + "3-1 Rp Sg": "Shapesanity Stitched Mixed", + "Half-Half Rp Sg": "Shapesanity Half-Half Mixed", + "Checkered Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sg": "Shapesanity Stitched Mixed", + "3-1 Rp Sp": "Shapesanity Stitched Mixed", + "Half-Half Rp Sp": "Shapesanity Half-Half Mixed", + "Checkered Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sp": "Shapesanity Stitched Mixed", + "3-1 Rp Sr": "Shapesanity Stitched Mixed", + "Half-Half Rp Sr": "Shapesanity Half-Half Mixed", + "Checkered Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sr": "Shapesanity Stitched Mixed", + "3-1 Rp Su": "Shapesanity Stitched Mixed", + "Half-Half Rp Su": "Shapesanity Half-Half Mixed", + "Checkered Rp Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Su": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Su": "Shapesanity Stitched Mixed", + "3-1 Rp Sw": "Shapesanity Stitched Mixed", + "Half-Half Rp Sw": "Shapesanity Half-Half Mixed", + "Checkered Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sw": "Shapesanity Stitched Mixed", + "3-1 Rp Sy": "Shapesanity Stitched Mixed", + "Half-Half Rp Sy": "Shapesanity Half-Half Mixed", + "Checkered Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sy": "Shapesanity Stitched Mixed", + "3-1 Rp Wb": "Shapesanity Stitched Mixed", + "Half-Half Rp Wb": "Shapesanity Half-Half Mixed", + "Checkered Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wb": "Shapesanity Stitched Mixed", + "3-1 Rp Wc": "Shapesanity Stitched Mixed", + "Half-Half Rp Wc": "Shapesanity Half-Half Mixed", + "Checkered Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wc": "Shapesanity Stitched Mixed", + "3-1 Rp Wg": "Shapesanity Stitched Mixed", + "Half-Half Rp Wg": "Shapesanity Half-Half Mixed", + "Checkered Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wg": "Shapesanity Stitched Mixed", + "3-1 Rp Wp": "Shapesanity Stitched Mixed", + "Half-Half Rp Wp": "Shapesanity Half-Half Mixed", + "Checkered Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wp": "Shapesanity Stitched Mixed", + "3-1 Rp Wr": "Shapesanity Stitched Mixed", + "Half-Half Rp Wr": "Shapesanity Half-Half Mixed", + "Checkered Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wr": "Shapesanity Stitched Mixed", + "3-1 Rp Wu": "Shapesanity Stitched Mixed", + "Half-Half Rp Wu": "Shapesanity Half-Half Mixed", + "Checkered Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wu": "Shapesanity Stitched Mixed", + "3-1 Rp Ww": "Shapesanity Stitched Mixed", + "Half-Half Rp Ww": "Shapesanity Half-Half Mixed", + "Checkered Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Ww": "Shapesanity Stitched Mixed", + "3-1 Rp Wy": "Shapesanity Stitched Mixed", + "Half-Half Rp Wy": "Shapesanity Half-Half Mixed", + "Checkered Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wy": "Shapesanity Stitched Mixed", + "3-1 Rr Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cb": "Shapesanity Stitched Painted", + "3-1 Rr Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cc": "Shapesanity Stitched Mixed", + "3-1 Rr Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cg": "Shapesanity Stitched Painted", + "3-1 Rr Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cp": "Shapesanity Stitched Mixed", + "3-1 Rr Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cr": "Shapesanity Stitched Painted", + "3-1 Rr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cu": "Shapesanity Stitched Painted", + "3-1 Rr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cw": "Shapesanity Stitched Mixed", + "3-1 Rr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cy": "Shapesanity Stitched Mixed", + "3-1 Rr Rb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Rr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Rb": "Shapesanity Stitched Painted", + "3-1 Rr Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Rc": "Shapesanity Stitched Mixed", + "3-1 Rr Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Rr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Rg": "Shapesanity Stitched Painted", + "3-1 Rr Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Rp": "Shapesanity Stitched Mixed", + "3-1 Rr Ru": "Shapesanity Colorful Full Painted", + "Half-Half Rr Ru": "Shapesanity Colorful Full Painted", + "Checkered Rr Ru": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rr Ru": "Shapesanity Colorful Half Painted", + "Cornered Singles Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Ru": "Shapesanity Stitched Painted", + "3-1 Rr Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rr Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rr Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Rw": "Shapesanity Stitched Mixed", + "3-1 Rr Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rr Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rr Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rr Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Ry": "Shapesanity Stitched Mixed", + "3-1 Rr Sb": "Shapesanity Stitched Painted", + "Half-Half Rr Sb": "Shapesanity Half-Half Painted", + "Checkered Rr Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Sb": "Shapesanity Stitched Painted", + "Cornered Singles Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Sb": "Shapesanity Stitched Painted", + "3-1 Rr Sc": "Shapesanity Stitched Mixed", + "Half-Half Rr Sc": "Shapesanity Half-Half Mixed", + "Checkered Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sc": "Shapesanity Stitched Mixed", + "3-1 Rr Sg": "Shapesanity Stitched Painted", + "Half-Half Rr Sg": "Shapesanity Half-Half Painted", + "Checkered Rr Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Sg": "Shapesanity Stitched Painted", + "Cornered Singles Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Sg": "Shapesanity Stitched Painted", + "3-1 Rr Sp": "Shapesanity Stitched Mixed", + "Half-Half Rr Sp": "Shapesanity Half-Half Mixed", + "Checkered Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sp": "Shapesanity Stitched Mixed", + "3-1 Rr Sr": "Shapesanity Stitched Painted", + "Half-Half Rr Sr": "Shapesanity Half-Half Painted", + "Checkered Rr Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Sr": "Shapesanity Stitched Painted", + "Cornered Singles Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Sr": "Shapesanity Stitched Painted", + "3-1 Rr Su": "Shapesanity Stitched Painted", + "Half-Half Rr Su": "Shapesanity Half-Half Painted", + "Checkered Rr Su": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Su": "Shapesanity Stitched Painted", + "Cornered Singles Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Su": "Shapesanity Stitched Painted", + "3-1 Rr Sw": "Shapesanity Stitched Mixed", + "Half-Half Rr Sw": "Shapesanity Half-Half Mixed", + "Checkered Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sw": "Shapesanity Stitched Mixed", + "3-1 Rr Sy": "Shapesanity Stitched Mixed", + "Half-Half Rr Sy": "Shapesanity Half-Half Mixed", + "Checkered Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sy": "Shapesanity Stitched Mixed", + "3-1 Rr Wb": "Shapesanity Stitched Painted", + "Half-Half Rr Wb": "Shapesanity Half-Half Painted", + "Checkered Rr Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wb": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wb": "Shapesanity Stitched Painted", + "3-1 Rr Wc": "Shapesanity Stitched Mixed", + "Half-Half Rr Wc": "Shapesanity Half-Half Mixed", + "Checkered Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Wc": "Shapesanity Stitched Mixed", + "3-1 Rr Wg": "Shapesanity Stitched Painted", + "Half-Half Rr Wg": "Shapesanity Half-Half Painted", + "Checkered Rr Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wg": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wg": "Shapesanity Stitched Painted", + "3-1 Rr Wp": "Shapesanity Stitched Mixed", + "Half-Half Rr Wp": "Shapesanity Half-Half Mixed", + "Checkered Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Wp": "Shapesanity Stitched Mixed", + "3-1 Rr Wr": "Shapesanity Stitched Painted", + "Half-Half Rr Wr": "Shapesanity Half-Half Painted", + "Checkered Rr Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wr": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wr": "Shapesanity Stitched Painted", + "3-1 Rr Wu": "Shapesanity Stitched Painted", + "Half-Half Rr Wu": "Shapesanity Half-Half Painted", + "Checkered Rr Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wu": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wu": "Shapesanity Stitched Painted", + "3-1 Rr Ww": "Shapesanity Stitched Mixed", + "Half-Half Rr Ww": "Shapesanity Half-Half Mixed", + "Checkered Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Ww": "Shapesanity Stitched Mixed", + "3-1 Rr Wy": "Shapesanity Stitched Mixed", + "Half-Half Rr Wy": "Shapesanity Half-Half Mixed", + "Checkered Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Wy": "Shapesanity Stitched Mixed", + "3-1 Ru Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Cb": "Shapesanity Stitched Painted", + "3-1 Ru Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cc": "Shapesanity Stitched Mixed", + "3-1 Ru Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Cg": "Shapesanity Stitched Painted", + "3-1 Ru Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cp": "Shapesanity Stitched Mixed", + "3-1 Ru Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Cr": "Shapesanity Stitched Painted", + "3-1 Ru Cu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Ru Cu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Ru Cu": "Shapesanity Stitched Uncolored", + "3-1 Ru Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cw": "Shapesanity Stitched Mixed", + "3-1 Ru Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cy": "Shapesanity Stitched Mixed", + "3-1 Ru Rb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Ru Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Rb": "Shapesanity Stitched Painted", + "3-1 Ru Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ru Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Rc": "Shapesanity Stitched Mixed", + "3-1 Ru Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Ru Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Rg": "Shapesanity Stitched Painted", + "3-1 Ru Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ru Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Rp": "Shapesanity Stitched Mixed", + "3-1 Ru Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Ru Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Rr": "Shapesanity Stitched Painted", + "3-1 Ru Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Ru Rw": "Shapesanity Colorful Full Mixed", + "Checkered Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Ru Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Rw": "Shapesanity Stitched Mixed", + "3-1 Ru Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Ru Ry": "Shapesanity Colorful Full Mixed", + "Checkered Ru Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Ru Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Ry": "Shapesanity Stitched Mixed", + "3-1 Ru Sb": "Shapesanity Stitched Painted", + "Half-Half Ru Sb": "Shapesanity Half-Half Painted", + "Checkered Ru Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Sb": "Shapesanity Stitched Painted", + "Cornered Singles Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Sb": "Shapesanity Stitched Painted", + "3-1 Ru Sc": "Shapesanity Stitched Mixed", + "Half-Half Ru Sc": "Shapesanity Half-Half Mixed", + "Checkered Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sc": "Shapesanity Stitched Mixed", + "3-1 Ru Sg": "Shapesanity Stitched Painted", + "Half-Half Ru Sg": "Shapesanity Half-Half Painted", + "Checkered Ru Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Sg": "Shapesanity Stitched Painted", + "Cornered Singles Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Sg": "Shapesanity Stitched Painted", + "3-1 Ru Sp": "Shapesanity Stitched Mixed", + "Half-Half Ru Sp": "Shapesanity Half-Half Mixed", + "Checkered Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sp": "Shapesanity Stitched Mixed", + "3-1 Ru Sr": "Shapesanity Stitched Painted", + "Half-Half Ru Sr": "Shapesanity Half-Half Painted", + "Checkered Ru Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Sr": "Shapesanity Stitched Painted", + "Cornered Singles Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Sr": "Shapesanity Stitched Painted", + "3-1 Ru Su": "Shapesanity Stitched Uncolored", + "Half-Half Ru Su": "Shapesanity Half-Half Uncolored", + "Checkered Ru Su": "Shapesanity Stitched Uncolored", + "Adjacent Singles Ru Su": "Shapesanity Stitched Uncolored", + "Cornered Singles Ru Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Ru Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Ru Su": "Shapesanity Stitched Uncolored", + "3-1 Ru Sw": "Shapesanity Stitched Mixed", + "Half-Half Ru Sw": "Shapesanity Half-Half Mixed", + "Checkered Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sw": "Shapesanity Stitched Mixed", + "3-1 Ru Sy": "Shapesanity Stitched Mixed", + "Half-Half Ru Sy": "Shapesanity Half-Half Mixed", + "Checkered Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sy": "Shapesanity Stitched Mixed", + "3-1 Ru Wb": "Shapesanity Stitched Painted", + "Half-Half Ru Wb": "Shapesanity Half-Half Painted", + "Checkered Ru Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Wb": "Shapesanity Stitched Painted", + "Cornered Singles Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Wb": "Shapesanity Stitched Painted", + "3-1 Ru Wc": "Shapesanity Stitched Mixed", + "Half-Half Ru Wc": "Shapesanity Half-Half Mixed", + "Checkered Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Wc": "Shapesanity Stitched Mixed", + "3-1 Ru Wg": "Shapesanity Stitched Painted", + "Half-Half Ru Wg": "Shapesanity Half-Half Painted", + "Checkered Ru Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Wg": "Shapesanity Stitched Painted", + "Cornered Singles Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Wg": "Shapesanity Stitched Painted", + "3-1 Ru Wp": "Shapesanity Stitched Mixed", + "Half-Half Ru Wp": "Shapesanity Half-Half Mixed", + "Checkered Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Wp": "Shapesanity Stitched Mixed", + "3-1 Ru Wr": "Shapesanity Stitched Painted", + "Half-Half Ru Wr": "Shapesanity Half-Half Painted", + "Checkered Ru Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Wr": "Shapesanity Stitched Painted", + "Cornered Singles Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Wr": "Shapesanity Stitched Painted", + "3-1 Ru Wu": "Shapesanity Stitched Uncolored", + "Half-Half Ru Wu": "Shapesanity Half-Half Uncolored", + "Checkered Ru Wu": "Shapesanity Stitched Uncolored", + "Adjacent Singles Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered Singles Ru Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Ru Wu": "Shapesanity Stitched Uncolored", + "3-1 Ru Ww": "Shapesanity Stitched Mixed", + "Half-Half Ru Ww": "Shapesanity Half-Half Mixed", + "Checkered Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Ww": "Shapesanity Stitched Mixed", + "3-1 Ru Wy": "Shapesanity Stitched Mixed", + "Half-Half Ru Wy": "Shapesanity Half-Half Mixed", + "Checkered Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Wy": "Shapesanity Stitched Mixed", + "3-1 Rw Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cb": "Shapesanity Stitched Mixed", + "3-1 Rw Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cc": "Shapesanity Stitched Mixed", + "3-1 Rw Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cg": "Shapesanity Stitched Mixed", + "3-1 Rw Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cp": "Shapesanity Stitched Mixed", + "3-1 Rw Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cr": "Shapesanity Stitched Mixed", + "3-1 Rw Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cu": "Shapesanity Stitched Mixed", + "3-1 Rw Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cw": "Shapesanity Stitched Mixed", + "3-1 Rw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cy": "Shapesanity Stitched Mixed", + "3-1 Rw Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rb": "Shapesanity Stitched Mixed", + "3-1 Rw Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rc": "Shapesanity Stitched Mixed", + "3-1 Rw Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rg": "Shapesanity Stitched Mixed", + "3-1 Rw Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rp": "Shapesanity Stitched Mixed", + "3-1 Rw Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rr": "Shapesanity Stitched Mixed", + "3-1 Rw Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Ru": "Shapesanity Stitched Mixed", + "3-1 Rw Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rw Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rw Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rw Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Ry": "Shapesanity Stitched Mixed", + "3-1 Rw Sb": "Shapesanity Stitched Mixed", + "Half-Half Rw Sb": "Shapesanity Half-Half Mixed", + "Checkered Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sb": "Shapesanity Stitched Mixed", + "3-1 Rw Sc": "Shapesanity Stitched Mixed", + "Half-Half Rw Sc": "Shapesanity Half-Half Mixed", + "Checkered Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sc": "Shapesanity Stitched Mixed", + "3-1 Rw Sg": "Shapesanity Stitched Mixed", + "Half-Half Rw Sg": "Shapesanity Half-Half Mixed", + "Checkered Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sg": "Shapesanity Stitched Mixed", + "3-1 Rw Sp": "Shapesanity Stitched Mixed", + "Half-Half Rw Sp": "Shapesanity Half-Half Mixed", + "Checkered Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sp": "Shapesanity Stitched Mixed", + "3-1 Rw Sr": "Shapesanity Stitched Mixed", + "Half-Half Rw Sr": "Shapesanity Half-Half Mixed", + "Checkered Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sr": "Shapesanity Stitched Mixed", + "3-1 Rw Su": "Shapesanity Stitched Mixed", + "Half-Half Rw Su": "Shapesanity Half-Half Mixed", + "Checkered Rw Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Su": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Su": "Shapesanity Stitched Mixed", + "3-1 Rw Sw": "Shapesanity Stitched Mixed", + "Half-Half Rw Sw": "Shapesanity Half-Half Mixed", + "Checkered Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sw": "Shapesanity Stitched Mixed", + "3-1 Rw Sy": "Shapesanity Stitched Mixed", + "Half-Half Rw Sy": "Shapesanity Half-Half Mixed", + "Checkered Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sy": "Shapesanity Stitched Mixed", + "3-1 Rw Wb": "Shapesanity Stitched Mixed", + "Half-Half Rw Wb": "Shapesanity Half-Half Mixed", + "Checkered Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wb": "Shapesanity Stitched Mixed", + "3-1 Rw Wc": "Shapesanity Stitched Mixed", + "Half-Half Rw Wc": "Shapesanity Half-Half Mixed", + "Checkered Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wc": "Shapesanity Stitched Mixed", + "3-1 Rw Wg": "Shapesanity Stitched Mixed", + "Half-Half Rw Wg": "Shapesanity Half-Half Mixed", + "Checkered Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wg": "Shapesanity Stitched Mixed", + "3-1 Rw Wp": "Shapesanity Stitched Mixed", + "Half-Half Rw Wp": "Shapesanity Half-Half Mixed", + "Checkered Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wp": "Shapesanity Stitched Mixed", + "3-1 Rw Wr": "Shapesanity Stitched Mixed", + "Half-Half Rw Wr": "Shapesanity Half-Half Mixed", + "Checkered Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wr": "Shapesanity Stitched Mixed", + "3-1 Rw Wu": "Shapesanity Stitched Mixed", + "Half-Half Rw Wu": "Shapesanity Half-Half Mixed", + "Checkered Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wu": "Shapesanity Stitched Mixed", + "3-1 Rw Ww": "Shapesanity Stitched Mixed", + "Half-Half Rw Ww": "Shapesanity Half-Half Mixed", + "Checkered Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Ww": "Shapesanity Stitched Mixed", + "3-1 Rw Wy": "Shapesanity Stitched Mixed", + "Half-Half Rw Wy": "Shapesanity Half-Half Mixed", + "Checkered Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wy": "Shapesanity Stitched Mixed", + "3-1 Ry Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cb": "Shapesanity Stitched Mixed", + "3-1 Ry Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cc": "Shapesanity Stitched Mixed", + "3-1 Ry Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cg": "Shapesanity Stitched Mixed", + "3-1 Ry Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cp": "Shapesanity Stitched Mixed", + "3-1 Ry Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cr": "Shapesanity Stitched Mixed", + "3-1 Ry Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cu": "Shapesanity Stitched Mixed", + "3-1 Ry Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cw": "Shapesanity Stitched Mixed", + "3-1 Ry Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cy": "Shapesanity Stitched Mixed", + "3-1 Ry Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rb": "Shapesanity Stitched Mixed", + "3-1 Ry Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rc": "Shapesanity Stitched Mixed", + "3-1 Ry Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rg": "Shapesanity Stitched Mixed", + "3-1 Ry Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rp": "Shapesanity Stitched Mixed", + "3-1 Ry Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rr": "Shapesanity Stitched Mixed", + "3-1 Ry Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Ru": "Shapesanity Stitched Mixed", + "3-1 Ry Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rw": "Shapesanity Stitched Mixed", + "3-1 Ry Sb": "Shapesanity Stitched Mixed", + "Half-Half Ry Sb": "Shapesanity Half-Half Mixed", + "Checkered Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sb": "Shapesanity Stitched Mixed", + "3-1 Ry Sc": "Shapesanity Stitched Mixed", + "Half-Half Ry Sc": "Shapesanity Half-Half Mixed", + "Checkered Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sc": "Shapesanity Stitched Mixed", + "3-1 Ry Sg": "Shapesanity Stitched Mixed", + "Half-Half Ry Sg": "Shapesanity Half-Half Mixed", + "Checkered Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sg": "Shapesanity Stitched Mixed", + "3-1 Ry Sp": "Shapesanity Stitched Mixed", + "Half-Half Ry Sp": "Shapesanity Half-Half Mixed", + "Checkered Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sp": "Shapesanity Stitched Mixed", + "3-1 Ry Sr": "Shapesanity Stitched Mixed", + "Half-Half Ry Sr": "Shapesanity Half-Half Mixed", + "Checkered Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sr": "Shapesanity Stitched Mixed", + "3-1 Ry Su": "Shapesanity Stitched Mixed", + "Half-Half Ry Su": "Shapesanity Half-Half Mixed", + "Checkered Ry Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Su": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Su": "Shapesanity Stitched Mixed", + "3-1 Ry Sw": "Shapesanity Stitched Mixed", + "Half-Half Ry Sw": "Shapesanity Half-Half Mixed", + "Checkered Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sw": "Shapesanity Stitched Mixed", + "3-1 Ry Sy": "Shapesanity Stitched Mixed", + "Half-Half Ry Sy": "Shapesanity Half-Half Mixed", + "Checkered Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sy": "Shapesanity Stitched Mixed", + "3-1 Ry Wb": "Shapesanity Stitched Mixed", + "Half-Half Ry Wb": "Shapesanity Half-Half Mixed", + "Checkered Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wb": "Shapesanity Stitched Mixed", + "3-1 Ry Wc": "Shapesanity Stitched Mixed", + "Half-Half Ry Wc": "Shapesanity Half-Half Mixed", + "Checkered Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wc": "Shapesanity Stitched Mixed", + "3-1 Ry Wg": "Shapesanity Stitched Mixed", + "Half-Half Ry Wg": "Shapesanity Half-Half Mixed", + "Checkered Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wg": "Shapesanity Stitched Mixed", + "3-1 Ry Wp": "Shapesanity Stitched Mixed", + "Half-Half Ry Wp": "Shapesanity Half-Half Mixed", + "Checkered Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wp": "Shapesanity Stitched Mixed", + "3-1 Ry Wr": "Shapesanity Stitched Mixed", + "Half-Half Ry Wr": "Shapesanity Half-Half Mixed", + "Checkered Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wr": "Shapesanity Stitched Mixed", + "3-1 Ry Wu": "Shapesanity Stitched Mixed", + "Half-Half Ry Wu": "Shapesanity Half-Half Mixed", + "Checkered Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wu": "Shapesanity Stitched Mixed", + "3-1 Ry Ww": "Shapesanity Stitched Mixed", + "Half-Half Ry Ww": "Shapesanity Half-Half Mixed", + "Checkered Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Ww": "Shapesanity Stitched Mixed", + "3-1 Ry Wy": "Shapesanity Stitched Mixed", + "Half-Half Ry Wy": "Shapesanity Half-Half Mixed", + "Checkered Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wy": "Shapesanity Stitched Mixed", + "3-1 Sb Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cb": "Shapesanity Stitched Painted", + "3-1 Sb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cc": "Shapesanity Stitched Mixed", + "3-1 Sb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cg": "Shapesanity Stitched Painted", + "3-1 Sb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cp": "Shapesanity Stitched Mixed", + "3-1 Sb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cr": "Shapesanity Stitched Painted", + "3-1 Sb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cu": "Shapesanity Stitched Painted", + "3-1 Sb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cw": "Shapesanity Stitched Mixed", + "3-1 Sb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cy": "Shapesanity Stitched Mixed", + "3-1 Sb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Rb": "Shapesanity Stitched Painted", + "3-1 Sb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Rc": "Shapesanity Stitched Mixed", + "3-1 Sb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Rg": "Shapesanity Stitched Painted", + "3-1 Sb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Rp": "Shapesanity Stitched Mixed", + "3-1 Sb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Rr": "Shapesanity Stitched Painted", + "3-1 Sb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Ru": "Shapesanity Stitched Painted", + "3-1 Sb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Rw": "Shapesanity Stitched Mixed", + "3-1 Sb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Ry": "Shapesanity Stitched Mixed", + "3-1 Sb Sc": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sc": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sc": "Shapesanity Stitched Mixed", + "3-1 Sb Sg": "Shapesanity Colorful Full Painted", + "Half-Half Sb Sg": "Shapesanity Colorful Full Painted", + "Checkered Sb Sg": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sb Sg": "Shapesanity Colorful Half Painted", + "Cornered Singles Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Sg": "Shapesanity Stitched Painted", + "3-1 Sb Sp": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sp": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sp": "Shapesanity Stitched Mixed", + "3-1 Sb Sr": "Shapesanity Colorful Full Painted", + "Half-Half Sb Sr": "Shapesanity Colorful Full Painted", + "Checkered Sb Sr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sb Sr": "Shapesanity Colorful Half Painted", + "Cornered Singles Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Sr": "Shapesanity Stitched Painted", + "3-1 Sb Su": "Shapesanity Colorful Full Painted", + "Half-Half Sb Su": "Shapesanity Colorful Full Painted", + "Checkered Sb Su": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sb Su": "Shapesanity Colorful Half Painted", + "Cornered Singles Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Su": "Shapesanity Stitched Painted", + "3-1 Sb Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sw": "Shapesanity Stitched Mixed", + "3-1 Sb Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sy": "Shapesanity Stitched Mixed", + "3-1 Sb Wb": "Shapesanity Stitched Painted", + "Half-Half Sb Wb": "Shapesanity Half-Half Painted", + "Checkered Sb Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wb": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wb": "Shapesanity Stitched Painted", + "3-1 Sb Wc": "Shapesanity Stitched Mixed", + "Half-Half Sb Wc": "Shapesanity Half-Half Mixed", + "Checkered Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Wc": "Shapesanity Stitched Mixed", + "3-1 Sb Wg": "Shapesanity Stitched Painted", + "Half-Half Sb Wg": "Shapesanity Half-Half Painted", + "Checkered Sb Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wg": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wg": "Shapesanity Stitched Painted", + "3-1 Sb Wp": "Shapesanity Stitched Mixed", + "Half-Half Sb Wp": "Shapesanity Half-Half Mixed", + "Checkered Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Wp": "Shapesanity Stitched Mixed", + "3-1 Sb Wr": "Shapesanity Stitched Painted", + "Half-Half Sb Wr": "Shapesanity Half-Half Painted", + "Checkered Sb Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wr": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wr": "Shapesanity Stitched Painted", + "3-1 Sb Wu": "Shapesanity Stitched Painted", + "Half-Half Sb Wu": "Shapesanity Half-Half Painted", + "Checkered Sb Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wu": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wu": "Shapesanity Stitched Painted", + "3-1 Sb Ww": "Shapesanity Stitched Mixed", + "Half-Half Sb Ww": "Shapesanity Half-Half Mixed", + "Checkered Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Ww": "Shapesanity Stitched Mixed", + "3-1 Sb Wy": "Shapesanity Stitched Mixed", + "Half-Half Sb Wy": "Shapesanity Half-Half Mixed", + "Checkered Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Wy": "Shapesanity Stitched Mixed", + "3-1 Sc Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cb": "Shapesanity Stitched Mixed", + "3-1 Sc Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cc": "Shapesanity Stitched Mixed", + "3-1 Sc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cg": "Shapesanity Stitched Mixed", + "3-1 Sc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cp": "Shapesanity Stitched Mixed", + "3-1 Sc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cr": "Shapesanity Stitched Mixed", + "3-1 Sc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cu": "Shapesanity Stitched Mixed", + "3-1 Sc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cw": "Shapesanity Stitched Mixed", + "3-1 Sc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cy": "Shapesanity Stitched Mixed", + "3-1 Sc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rb": "Shapesanity Stitched Mixed", + "3-1 Sc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rc": "Shapesanity Stitched Mixed", + "3-1 Sc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rg": "Shapesanity Stitched Mixed", + "3-1 Sc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rp": "Shapesanity Stitched Mixed", + "3-1 Sc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rr": "Shapesanity Stitched Mixed", + "3-1 Sc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Ru": "Shapesanity Stitched Mixed", + "3-1 Sc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rw": "Shapesanity Stitched Mixed", + "3-1 Sc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Ry": "Shapesanity Stitched Mixed", + "3-1 Sc Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sb": "Shapesanity Stitched Mixed", + "3-1 Sc Sg": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sg": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sg": "Shapesanity Stitched Mixed", + "3-1 Sc Sp": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sp": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sp": "Shapesanity Stitched Mixed", + "3-1 Sc Sr": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sr": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sr": "Shapesanity Stitched Mixed", + "3-1 Sc Su": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Su": "Shapesanity Colorful Full Mixed", + "Checkered Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Su": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Su": "Shapesanity Stitched Mixed", + "3-1 Sc Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sw": "Shapesanity Stitched Mixed", + "3-1 Sc Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sy": "Shapesanity Stitched Mixed", + "3-1 Sc Wb": "Shapesanity Stitched Mixed", + "Half-Half Sc Wb": "Shapesanity Half-Half Mixed", + "Checkered Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wb": "Shapesanity Stitched Mixed", + "3-1 Sc Wc": "Shapesanity Stitched Mixed", + "Half-Half Sc Wc": "Shapesanity Half-Half Mixed", + "Checkered Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wc": "Shapesanity Stitched Mixed", + "3-1 Sc Wg": "Shapesanity Stitched Mixed", + "Half-Half Sc Wg": "Shapesanity Half-Half Mixed", + "Checkered Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wg": "Shapesanity Stitched Mixed", + "3-1 Sc Wp": "Shapesanity Stitched Mixed", + "Half-Half Sc Wp": "Shapesanity Half-Half Mixed", + "Checkered Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wp": "Shapesanity Stitched Mixed", + "3-1 Sc Wr": "Shapesanity Stitched Mixed", + "Half-Half Sc Wr": "Shapesanity Half-Half Mixed", + "Checkered Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wr": "Shapesanity Stitched Mixed", + "3-1 Sc Wu": "Shapesanity Stitched Mixed", + "Half-Half Sc Wu": "Shapesanity Half-Half Mixed", + "Checkered Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wu": "Shapesanity Stitched Mixed", + "3-1 Sc Ww": "Shapesanity Stitched Mixed", + "Half-Half Sc Ww": "Shapesanity Half-Half Mixed", + "Checkered Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Ww": "Shapesanity Stitched Mixed", + "3-1 Sc Wy": "Shapesanity Stitched Mixed", + "Half-Half Sc Wy": "Shapesanity Half-Half Mixed", + "Checkered Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wy": "Shapesanity Stitched Mixed", + "3-1 Sg Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cb": "Shapesanity Stitched Painted", + "3-1 Sg Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cc": "Shapesanity Stitched Mixed", + "3-1 Sg Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cg": "Shapesanity Stitched Painted", + "3-1 Sg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cp": "Shapesanity Stitched Mixed", + "3-1 Sg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cr": "Shapesanity Stitched Painted", + "3-1 Sg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cu": "Shapesanity Stitched Painted", + "3-1 Sg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cw": "Shapesanity Stitched Mixed", + "3-1 Sg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cy": "Shapesanity Stitched Mixed", + "3-1 Sg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Rb": "Shapesanity Stitched Painted", + "3-1 Sg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Rc": "Shapesanity Stitched Mixed", + "3-1 Sg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Rg": "Shapesanity Stitched Painted", + "3-1 Sg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Rp": "Shapesanity Stitched Mixed", + "3-1 Sg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Rr": "Shapesanity Stitched Painted", + "3-1 Sg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Ru": "Shapesanity Stitched Painted", + "3-1 Sg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Rw": "Shapesanity Stitched Mixed", + "3-1 Sg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Ry": "Shapesanity Stitched Mixed", + "3-1 Sg Sb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Sg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Sb": "Shapesanity Stitched Painted", + "3-1 Sg Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sc": "Shapesanity Stitched Mixed", + "3-1 Sg Sp": "Shapesanity Colorful Full Mixed", + "Half-Half Sg Sp": "Shapesanity Colorful Full Mixed", + "Checkered Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sg Sp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sp": "Shapesanity Stitched Mixed", + "3-1 Sg Sr": "Shapesanity Colorful Full Painted", + "Half-Half Sg Sr": "Shapesanity Colorful Full Painted", + "Checkered Sg Sr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sg Sr": "Shapesanity Colorful Half Painted", + "Cornered Singles Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Sr": "Shapesanity Stitched Painted", + "3-1 Sg Su": "Shapesanity Colorful Full Painted", + "Half-Half Sg Su": "Shapesanity Colorful Full Painted", + "Checkered Sg Su": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sg Su": "Shapesanity Colorful Half Painted", + "Cornered Singles Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Su": "Shapesanity Stitched Painted", + "3-1 Sg Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sg Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sg Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sw": "Shapesanity Stitched Mixed", + "3-1 Sg Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sg Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sg Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sy": "Shapesanity Stitched Mixed", + "3-1 Sg Wb": "Shapesanity Stitched Painted", + "Half-Half Sg Wb": "Shapesanity Half-Half Painted", + "Checkered Sg Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wb": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wb": "Shapesanity Stitched Painted", + "3-1 Sg Wc": "Shapesanity Stitched Mixed", + "Half-Half Sg Wc": "Shapesanity Half-Half Mixed", + "Checkered Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Wc": "Shapesanity Stitched Mixed", + "3-1 Sg Wg": "Shapesanity Stitched Painted", + "Half-Half Sg Wg": "Shapesanity Half-Half Painted", + "Checkered Sg Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wg": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wg": "Shapesanity Stitched Painted", + "3-1 Sg Wp": "Shapesanity Stitched Mixed", + "Half-Half Sg Wp": "Shapesanity Half-Half Mixed", + "Checkered Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Wp": "Shapesanity Stitched Mixed", + "3-1 Sg Wr": "Shapesanity Stitched Painted", + "Half-Half Sg Wr": "Shapesanity Half-Half Painted", + "Checkered Sg Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wr": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wr": "Shapesanity Stitched Painted", + "3-1 Sg Wu": "Shapesanity Stitched Painted", + "Half-Half Sg Wu": "Shapesanity Half-Half Painted", + "Checkered Sg Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wu": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wu": "Shapesanity Stitched Painted", + "3-1 Sg Ww": "Shapesanity Stitched Mixed", + "Half-Half Sg Ww": "Shapesanity Half-Half Mixed", + "Checkered Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Ww": "Shapesanity Stitched Mixed", + "3-1 Sg Wy": "Shapesanity Stitched Mixed", + "Half-Half Sg Wy": "Shapesanity Half-Half Mixed", + "Checkered Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Wy": "Shapesanity Stitched Mixed", + "3-1 Sp Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cb": "Shapesanity Stitched Mixed", + "3-1 Sp Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cc": "Shapesanity Stitched Mixed", + "3-1 Sp Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cg": "Shapesanity Stitched Mixed", + "3-1 Sp Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cp": "Shapesanity Stitched Mixed", + "3-1 Sp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cr": "Shapesanity Stitched Mixed", + "3-1 Sp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cu": "Shapesanity Stitched Mixed", + "3-1 Sp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cw": "Shapesanity Stitched Mixed", + "3-1 Sp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cy": "Shapesanity Stitched Mixed", + "3-1 Sp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rb": "Shapesanity Stitched Mixed", + "3-1 Sp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rc": "Shapesanity Stitched Mixed", + "3-1 Sp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rg": "Shapesanity Stitched Mixed", + "3-1 Sp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rp": "Shapesanity Stitched Mixed", + "3-1 Sp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rr": "Shapesanity Stitched Mixed", + "3-1 Sp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Ru": "Shapesanity Stitched Mixed", + "3-1 Sp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rw": "Shapesanity Stitched Mixed", + "3-1 Sp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Ry": "Shapesanity Stitched Mixed", + "3-1 Sp Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sb": "Shapesanity Stitched Mixed", + "3-1 Sp Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sc": "Shapesanity Stitched Mixed", + "3-1 Sp Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sg": "Shapesanity Stitched Mixed", + "3-1 Sp Sr": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Sr": "Shapesanity Colorful Full Mixed", + "Checkered Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Sr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sr": "Shapesanity Stitched Mixed", + "3-1 Sp Su": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Su": "Shapesanity Colorful Full Mixed", + "Checkered Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Su": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Su": "Shapesanity Stitched Mixed", + "3-1 Sp Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sw": "Shapesanity Stitched Mixed", + "3-1 Sp Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sy": "Shapesanity Stitched Mixed", + "3-1 Sp Wb": "Shapesanity Stitched Mixed", + "Half-Half Sp Wb": "Shapesanity Half-Half Mixed", + "Checkered Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wb": "Shapesanity Stitched Mixed", + "3-1 Sp Wc": "Shapesanity Stitched Mixed", + "Half-Half Sp Wc": "Shapesanity Half-Half Mixed", + "Checkered Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wc": "Shapesanity Stitched Mixed", + "3-1 Sp Wg": "Shapesanity Stitched Mixed", + "Half-Half Sp Wg": "Shapesanity Half-Half Mixed", + "Checkered Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wg": "Shapesanity Stitched Mixed", + "3-1 Sp Wp": "Shapesanity Stitched Mixed", + "Half-Half Sp Wp": "Shapesanity Half-Half Mixed", + "Checkered Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wp": "Shapesanity Stitched Mixed", + "3-1 Sp Wr": "Shapesanity Stitched Mixed", + "Half-Half Sp Wr": "Shapesanity Half-Half Mixed", + "Checkered Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wr": "Shapesanity Stitched Mixed", + "3-1 Sp Wu": "Shapesanity Stitched Mixed", + "Half-Half Sp Wu": "Shapesanity Half-Half Mixed", + "Checkered Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wu": "Shapesanity Stitched Mixed", + "3-1 Sp Ww": "Shapesanity Stitched Mixed", + "Half-Half Sp Ww": "Shapesanity Half-Half Mixed", + "Checkered Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Ww": "Shapesanity Stitched Mixed", + "3-1 Sp Wy": "Shapesanity Stitched Mixed", + "Half-Half Sp Wy": "Shapesanity Half-Half Mixed", + "Checkered Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wy": "Shapesanity Stitched Mixed", + "3-1 Sr Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cb": "Shapesanity Stitched Painted", + "3-1 Sr Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cc": "Shapesanity Stitched Mixed", + "3-1 Sr Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cg": "Shapesanity Stitched Painted", + "3-1 Sr Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cp": "Shapesanity Stitched Mixed", + "3-1 Sr Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cr": "Shapesanity Stitched Painted", + "3-1 Sr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cu": "Shapesanity Stitched Painted", + "3-1 Sr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cw": "Shapesanity Stitched Mixed", + "3-1 Sr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cy": "Shapesanity Stitched Mixed", + "3-1 Sr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Rb": "Shapesanity Stitched Painted", + "3-1 Sr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Rc": "Shapesanity Stitched Mixed", + "3-1 Sr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Rg": "Shapesanity Stitched Painted", + "3-1 Sr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Rp": "Shapesanity Stitched Mixed", + "3-1 Sr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Rr": "Shapesanity Stitched Painted", + "3-1 Sr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Ru": "Shapesanity Stitched Painted", + "3-1 Sr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Rw": "Shapesanity Stitched Mixed", + "3-1 Sr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Ry": "Shapesanity Stitched Mixed", + "3-1 Sr Sb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Sr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Sb": "Shapesanity Stitched Painted", + "3-1 Sr Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sc": "Shapesanity Stitched Mixed", + "3-1 Sr Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Sr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Sg": "Shapesanity Stitched Painted", + "3-1 Sr Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sp": "Shapesanity Stitched Mixed", + "3-1 Sr Su": "Shapesanity Colorful Full Painted", + "Half-Half Sr Su": "Shapesanity Colorful Full Painted", + "Checkered Sr Su": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sr Su": "Shapesanity Colorful Half Painted", + "Cornered Singles Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Su": "Shapesanity Stitched Painted", + "3-1 Sr Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sr Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sr Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sw": "Shapesanity Stitched Mixed", + "3-1 Sr Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sr Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sr Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sr Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sy": "Shapesanity Stitched Mixed", + "3-1 Sr Wb": "Shapesanity Stitched Painted", + "Half-Half Sr Wb": "Shapesanity Half-Half Painted", + "Checkered Sr Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wb": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wb": "Shapesanity Stitched Painted", + "3-1 Sr Wc": "Shapesanity Stitched Mixed", + "Half-Half Sr Wc": "Shapesanity Half-Half Mixed", + "Checkered Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Wc": "Shapesanity Stitched Mixed", + "3-1 Sr Wg": "Shapesanity Stitched Painted", + "Half-Half Sr Wg": "Shapesanity Half-Half Painted", + "Checkered Sr Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wg": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wg": "Shapesanity Stitched Painted", + "3-1 Sr Wp": "Shapesanity Stitched Mixed", + "Half-Half Sr Wp": "Shapesanity Half-Half Mixed", + "Checkered Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Wp": "Shapesanity Stitched Mixed", + "3-1 Sr Wr": "Shapesanity Stitched Painted", + "Half-Half Sr Wr": "Shapesanity Half-Half Painted", + "Checkered Sr Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wr": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wr": "Shapesanity Stitched Painted", + "3-1 Sr Wu": "Shapesanity Stitched Painted", + "Half-Half Sr Wu": "Shapesanity Half-Half Painted", + "Checkered Sr Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wu": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wu": "Shapesanity Stitched Painted", + "3-1 Sr Ww": "Shapesanity Stitched Mixed", + "Half-Half Sr Ww": "Shapesanity Half-Half Mixed", + "Checkered Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Ww": "Shapesanity Stitched Mixed", + "3-1 Sr Wy": "Shapesanity Stitched Mixed", + "Half-Half Sr Wy": "Shapesanity Half-Half Mixed", + "Checkered Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Wy": "Shapesanity Stitched Mixed", + "3-1 Su Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Cb": "Shapesanity Stitched Painted", + "3-1 Su Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cc": "Shapesanity Stitched Mixed", + "3-1 Su Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Cg": "Shapesanity Stitched Painted", + "3-1 Su Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cp": "Shapesanity Stitched Mixed", + "3-1 Su Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Cr": "Shapesanity Stitched Painted", + "3-1 Su Cu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Su Cu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Su Cu": "Shapesanity Stitched Uncolored", + "3-1 Su Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cw": "Shapesanity Stitched Mixed", + "3-1 Su Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cy": "Shapesanity Stitched Mixed", + "3-1 Su Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Rb": "Shapesanity Stitched Painted", + "3-1 Su Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Rc": "Shapesanity Stitched Mixed", + "3-1 Su Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Rg": "Shapesanity Stitched Painted", + "3-1 Su Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Rp": "Shapesanity Stitched Mixed", + "3-1 Su Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Rr": "Shapesanity Stitched Painted", + "3-1 Su Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Su Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Su Ru": "Shapesanity Stitched Uncolored", + "3-1 Su Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Rw": "Shapesanity Stitched Mixed", + "3-1 Su Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Ry": "Shapesanity Stitched Mixed", + "3-1 Su Sb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Su Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Sb": "Shapesanity Stitched Painted", + "3-1 Su Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Su Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sc": "Shapesanity Stitched Mixed", + "3-1 Su Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Su Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Sg": "Shapesanity Stitched Painted", + "3-1 Su Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Su Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sp": "Shapesanity Stitched Mixed", + "3-1 Su Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Su Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Sr": "Shapesanity Stitched Painted", + "3-1 Su Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Su Sw": "Shapesanity Colorful Full Mixed", + "Checkered Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Su Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sw": "Shapesanity Stitched Mixed", + "3-1 Su Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Su Sy": "Shapesanity Colorful Full Mixed", + "Checkered Su Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Su Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sy": "Shapesanity Stitched Mixed", + "3-1 Su Wb": "Shapesanity Stitched Painted", + "Half-Half Su Wb": "Shapesanity Half-Half Painted", + "Checkered Su Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Su Wb": "Shapesanity Stitched Painted", + "Cornered Singles Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Wb": "Shapesanity Stitched Painted", + "3-1 Su Wc": "Shapesanity Stitched Mixed", + "Half-Half Su Wc": "Shapesanity Half-Half Mixed", + "Checkered Su Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Wc": "Shapesanity Stitched Mixed", + "3-1 Su Wg": "Shapesanity Stitched Painted", + "Half-Half Su Wg": "Shapesanity Half-Half Painted", + "Checkered Su Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Su Wg": "Shapesanity Stitched Painted", + "Cornered Singles Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Wg": "Shapesanity Stitched Painted", + "3-1 Su Wp": "Shapesanity Stitched Mixed", + "Half-Half Su Wp": "Shapesanity Half-Half Mixed", + "Checkered Su Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Wp": "Shapesanity Stitched Mixed", + "3-1 Su Wr": "Shapesanity Stitched Painted", + "Half-Half Su Wr": "Shapesanity Half-Half Painted", + "Checkered Su Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Su Wr": "Shapesanity Stitched Painted", + "Cornered Singles Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Wr": "Shapesanity Stitched Painted", + "3-1 Su Wu": "Shapesanity Stitched Uncolored", + "Half-Half Su Wu": "Shapesanity Half-Half Uncolored", + "Checkered Su Wu": "Shapesanity Stitched Uncolored", + "Adjacent Singles Su Wu": "Shapesanity Stitched Uncolored", + "Cornered Singles Su Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Su Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Su Wu": "Shapesanity Stitched Uncolored", + "3-1 Su Ww": "Shapesanity Stitched Mixed", + "Half-Half Su Ww": "Shapesanity Half-Half Mixed", + "Checkered Su Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Ww": "Shapesanity Stitched Mixed", + "3-1 Su Wy": "Shapesanity Stitched Mixed", + "Half-Half Su Wy": "Shapesanity Half-Half Mixed", + "Checkered Su Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Wy": "Shapesanity Stitched Mixed", + "3-1 Sw Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cb": "Shapesanity Stitched Mixed", + "3-1 Sw Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cc": "Shapesanity Stitched Mixed", + "3-1 Sw Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cg": "Shapesanity Stitched Mixed", + "3-1 Sw Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cp": "Shapesanity Stitched Mixed", + "3-1 Sw Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cr": "Shapesanity Stitched Mixed", + "3-1 Sw Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cu": "Shapesanity Stitched Mixed", + "3-1 Sw Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cw": "Shapesanity Stitched Mixed", + "3-1 Sw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cy": "Shapesanity Stitched Mixed", + "3-1 Sw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rb": "Shapesanity Stitched Mixed", + "3-1 Sw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rc": "Shapesanity Stitched Mixed", + "3-1 Sw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rg": "Shapesanity Stitched Mixed", + "3-1 Sw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rp": "Shapesanity Stitched Mixed", + "3-1 Sw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rr": "Shapesanity Stitched Mixed", + "3-1 Sw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Ru": "Shapesanity Stitched Mixed", + "3-1 Sw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rw": "Shapesanity Stitched Mixed", + "3-1 Sw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Ry": "Shapesanity Stitched Mixed", + "3-1 Sw Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sb": "Shapesanity Stitched Mixed", + "3-1 Sw Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sc": "Shapesanity Stitched Mixed", + "3-1 Sw Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sg": "Shapesanity Stitched Mixed", + "3-1 Sw Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sp": "Shapesanity Stitched Mixed", + "3-1 Sw Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sr": "Shapesanity Stitched Mixed", + "3-1 Sw Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Su": "Shapesanity Stitched Mixed", + "3-1 Sw Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sw Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sw Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sw Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sy": "Shapesanity Stitched Mixed", + "3-1 Sw Wb": "Shapesanity Stitched Mixed", + "Half-Half Sw Wb": "Shapesanity Half-Half Mixed", + "Checkered Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wb": "Shapesanity Stitched Mixed", + "3-1 Sw Wc": "Shapesanity Stitched Mixed", + "Half-Half Sw Wc": "Shapesanity Half-Half Mixed", + "Checkered Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wc": "Shapesanity Stitched Mixed", + "3-1 Sw Wg": "Shapesanity Stitched Mixed", + "Half-Half Sw Wg": "Shapesanity Half-Half Mixed", + "Checkered Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wg": "Shapesanity Stitched Mixed", + "3-1 Sw Wp": "Shapesanity Stitched Mixed", + "Half-Half Sw Wp": "Shapesanity Half-Half Mixed", + "Checkered Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wp": "Shapesanity Stitched Mixed", + "3-1 Sw Wr": "Shapesanity Stitched Mixed", + "Half-Half Sw Wr": "Shapesanity Half-Half Mixed", + "Checkered Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wr": "Shapesanity Stitched Mixed", + "3-1 Sw Wu": "Shapesanity Stitched Mixed", + "Half-Half Sw Wu": "Shapesanity Half-Half Mixed", + "Checkered Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wu": "Shapesanity Stitched Mixed", + "3-1 Sw Ww": "Shapesanity Stitched Mixed", + "Half-Half Sw Ww": "Shapesanity Half-Half Mixed", + "Checkered Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Ww": "Shapesanity Stitched Mixed", + "3-1 Sw Wy": "Shapesanity Stitched Mixed", + "Half-Half Sw Wy": "Shapesanity Half-Half Mixed", + "Checkered Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wy": "Shapesanity Stitched Mixed", + "3-1 Sy Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cb": "Shapesanity Stitched Mixed", + "3-1 Sy Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cc": "Shapesanity Stitched Mixed", + "3-1 Sy Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cg": "Shapesanity Stitched Mixed", + "3-1 Sy Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cp": "Shapesanity Stitched Mixed", + "3-1 Sy Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cr": "Shapesanity Stitched Mixed", + "3-1 Sy Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cu": "Shapesanity Stitched Mixed", + "3-1 Sy Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cw": "Shapesanity Stitched Mixed", + "3-1 Sy Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cy": "Shapesanity Stitched Mixed", + "3-1 Sy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rb": "Shapesanity Stitched Mixed", + "3-1 Sy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rc": "Shapesanity Stitched Mixed", + "3-1 Sy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rg": "Shapesanity Stitched Mixed", + "3-1 Sy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rp": "Shapesanity Stitched Mixed", + "3-1 Sy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rr": "Shapesanity Stitched Mixed", + "3-1 Sy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Ru": "Shapesanity Stitched Mixed", + "3-1 Sy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rw": "Shapesanity Stitched Mixed", + "3-1 Sy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Ry": "Shapesanity Stitched Mixed", + "3-1 Sy Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sb": "Shapesanity Stitched Mixed", + "3-1 Sy Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sc": "Shapesanity Stitched Mixed", + "3-1 Sy Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sg": "Shapesanity Stitched Mixed", + "3-1 Sy Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sp": "Shapesanity Stitched Mixed", + "3-1 Sy Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sr": "Shapesanity Stitched Mixed", + "3-1 Sy Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Su": "Shapesanity Stitched Mixed", + "3-1 Sy Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sw": "Shapesanity Stitched Mixed", + "3-1 Sy Wb": "Shapesanity Stitched Mixed", + "Half-Half Sy Wb": "Shapesanity Half-Half Mixed", + "Checkered Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wb": "Shapesanity Stitched Mixed", + "3-1 Sy Wc": "Shapesanity Stitched Mixed", + "Half-Half Sy Wc": "Shapesanity Half-Half Mixed", + "Checkered Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wc": "Shapesanity Stitched Mixed", + "3-1 Sy Wg": "Shapesanity Stitched Mixed", + "Half-Half Sy Wg": "Shapesanity Half-Half Mixed", + "Checkered Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wg": "Shapesanity Stitched Mixed", + "3-1 Sy Wp": "Shapesanity Stitched Mixed", + "Half-Half Sy Wp": "Shapesanity Half-Half Mixed", + "Checkered Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wp": "Shapesanity Stitched Mixed", + "3-1 Sy Wr": "Shapesanity Stitched Mixed", + "Half-Half Sy Wr": "Shapesanity Half-Half Mixed", + "Checkered Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wr": "Shapesanity Stitched Mixed", + "3-1 Sy Wu": "Shapesanity Stitched Mixed", + "Half-Half Sy Wu": "Shapesanity Half-Half Mixed", + "Checkered Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wu": "Shapesanity Stitched Mixed", + "3-1 Sy Ww": "Shapesanity Stitched Mixed", + "Half-Half Sy Ww": "Shapesanity Half-Half Mixed", + "Checkered Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Ww": "Shapesanity Stitched Mixed", + "3-1 Sy Wy": "Shapesanity Stitched Mixed", + "Half-Half Sy Wy": "Shapesanity Half-Half Mixed", + "Checkered Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wy": "Shapesanity Stitched Mixed", + "3-1 Wb Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cb": "Shapesanity Stitched Painted", + "3-1 Wb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cc": "Shapesanity Stitched Mixed", + "3-1 Wb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cg": "Shapesanity Stitched Painted", + "3-1 Wb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cp": "Shapesanity Stitched Mixed", + "3-1 Wb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cr": "Shapesanity Stitched Painted", + "3-1 Wb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cu": "Shapesanity Stitched Painted", + "3-1 Wb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cw": "Shapesanity Stitched Mixed", + "3-1 Wb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cy": "Shapesanity Stitched Mixed", + "3-1 Wb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Rb": "Shapesanity Stitched Painted", + "3-1 Wb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Rc": "Shapesanity Stitched Mixed", + "3-1 Wb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Rg": "Shapesanity Stitched Painted", + "3-1 Wb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Rp": "Shapesanity Stitched Mixed", + "3-1 Wb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Rr": "Shapesanity Stitched Painted", + "3-1 Wb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Ru": "Shapesanity Stitched Painted", + "3-1 Wb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Rw": "Shapesanity Stitched Mixed", + "3-1 Wb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Ry": "Shapesanity Stitched Mixed", + "3-1 Wb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Sb": "Shapesanity Stitched Painted", + "3-1 Wb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sc": "Shapesanity Stitched Mixed", + "3-1 Wb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Sg": "Shapesanity Stitched Painted", + "3-1 Wb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sp": "Shapesanity Stitched Mixed", + "3-1 Wb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Sr": "Shapesanity Stitched Painted", + "3-1 Wb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Su": "Shapesanity Stitched Painted", + "3-1 Wb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sw": "Shapesanity Stitched Mixed", + "3-1 Wb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sy": "Shapesanity Stitched Mixed", + "3-1 Wb Wc": "Shapesanity East Windmill Mixed", + "Half-Half Wb Wc": "Shapesanity East Windmill Mixed", + "Checkered Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Wc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Wc": "Shapesanity Stitched Mixed", + "3-1 Wb Wg": "Shapesanity East Windmill Painted", + "Half-Half Wb Wg": "Shapesanity East Windmill Painted", + "Checkered Wb Wg": "Shapesanity East Windmill Painted", + "Adjacent Singles Wb Wg": "Shapesanity Colorful Half Painted", + "Cornered Singles Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Wg": "Shapesanity Stitched Painted", + "3-1 Wb Wp": "Shapesanity East Windmill Mixed", + "Half-Half Wb Wp": "Shapesanity East Windmill Mixed", + "Checkered Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Wp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Wp": "Shapesanity Stitched Mixed", + "3-1 Wb Wr": "Shapesanity East Windmill Painted", + "Half-Half Wb Wr": "Shapesanity East Windmill Painted", + "Checkered Wb Wr": "Shapesanity East Windmill Painted", + "Adjacent Singles Wb Wr": "Shapesanity Colorful Half Painted", + "Cornered Singles Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Wr": "Shapesanity Stitched Painted", + "3-1 Wb Wu": "Shapesanity East Windmill Painted", + "Half-Half Wb Wu": "Shapesanity East Windmill Painted", + "Checkered Wb Wu": "Shapesanity East Windmill Painted", + "Adjacent Singles Wb Wu": "Shapesanity Colorful Half Painted", + "Cornered Singles Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Wu": "Shapesanity Stitched Painted", + "3-1 Wb Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wb Ww": "Shapesanity East Windmill Mixed", + "Checkered Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Ww": "Shapesanity Stitched Mixed", + "3-1 Wb Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wb Wy": "Shapesanity East Windmill Mixed", + "Checkered Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Wy": "Shapesanity Stitched Mixed", + "3-1 Wc Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cb": "Shapesanity Stitched Mixed", + "3-1 Wc Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cc": "Shapesanity Stitched Mixed", + "3-1 Wc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cg": "Shapesanity Stitched Mixed", + "3-1 Wc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cp": "Shapesanity Stitched Mixed", + "3-1 Wc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cr": "Shapesanity Stitched Mixed", + "3-1 Wc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cu": "Shapesanity Stitched Mixed", + "3-1 Wc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cw": "Shapesanity Stitched Mixed", + "3-1 Wc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cy": "Shapesanity Stitched Mixed", + "3-1 Wc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rb": "Shapesanity Stitched Mixed", + "3-1 Wc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rc": "Shapesanity Stitched Mixed", + "3-1 Wc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rg": "Shapesanity Stitched Mixed", + "3-1 Wc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rp": "Shapesanity Stitched Mixed", + "3-1 Wc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rr": "Shapesanity Stitched Mixed", + "3-1 Wc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Ru": "Shapesanity Stitched Mixed", + "3-1 Wc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rw": "Shapesanity Stitched Mixed", + "3-1 Wc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Ry": "Shapesanity Stitched Mixed", + "3-1 Wc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sb": "Shapesanity Stitched Mixed", + "3-1 Wc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sc": "Shapesanity Stitched Mixed", + "3-1 Wc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sg": "Shapesanity Stitched Mixed", + "3-1 Wc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sp": "Shapesanity Stitched Mixed", + "3-1 Wc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sr": "Shapesanity Stitched Mixed", + "3-1 Wc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Su": "Shapesanity Stitched Mixed", + "3-1 Wc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sw": "Shapesanity Stitched Mixed", + "3-1 Wc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sy": "Shapesanity Stitched Mixed", + "3-1 Wc Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wb": "Shapesanity Stitched Mixed", + "3-1 Wc Wg": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wg": "Shapesanity East Windmill Mixed", + "Checkered Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wg": "Shapesanity Stitched Mixed", + "3-1 Wc Wp": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wp": "Shapesanity East Windmill Mixed", + "Checkered Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wp": "Shapesanity Stitched Mixed", + "3-1 Wc Wr": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wr": "Shapesanity East Windmill Mixed", + "Checkered Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wr": "Shapesanity Stitched Mixed", + "3-1 Wc Wu": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wu": "Shapesanity East Windmill Mixed", + "Checkered Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wu": "Shapesanity Stitched Mixed", + "3-1 Wc Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wc Ww": "Shapesanity East Windmill Mixed", + "Checkered Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Ww": "Shapesanity Stitched Mixed", + "3-1 Wc Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wy": "Shapesanity East Windmill Mixed", + "Checkered Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wy": "Shapesanity Stitched Mixed", + "3-1 Wg Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cb": "Shapesanity Stitched Painted", + "3-1 Wg Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cc": "Shapesanity Stitched Mixed", + "3-1 Wg Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cg": "Shapesanity Stitched Painted", + "3-1 Wg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cp": "Shapesanity Stitched Mixed", + "3-1 Wg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cr": "Shapesanity Stitched Painted", + "3-1 Wg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cu": "Shapesanity Stitched Painted", + "3-1 Wg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cw": "Shapesanity Stitched Mixed", + "3-1 Wg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cy": "Shapesanity Stitched Mixed", + "3-1 Wg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Rb": "Shapesanity Stitched Painted", + "3-1 Wg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Rc": "Shapesanity Stitched Mixed", + "3-1 Wg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Rg": "Shapesanity Stitched Painted", + "3-1 Wg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Rp": "Shapesanity Stitched Mixed", + "3-1 Wg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Rr": "Shapesanity Stitched Painted", + "3-1 Wg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Ru": "Shapesanity Stitched Painted", + "3-1 Wg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Rw": "Shapesanity Stitched Mixed", + "3-1 Wg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Ry": "Shapesanity Stitched Mixed", + "3-1 Wg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Sb": "Shapesanity Stitched Painted", + "3-1 Wg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sc": "Shapesanity Stitched Mixed", + "3-1 Wg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Sg": "Shapesanity Stitched Painted", + "3-1 Wg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sp": "Shapesanity Stitched Mixed", + "3-1 Wg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Sr": "Shapesanity Stitched Painted", + "3-1 Wg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Su": "Shapesanity Stitched Painted", + "3-1 Wg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sw": "Shapesanity Stitched Mixed", + "3-1 Wg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sy": "Shapesanity Stitched Mixed", + "3-1 Wg Wb": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Wb": "Shapesanity Stitched Painted", + "3-1 Wg Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Wc": "Shapesanity Stitched Mixed", + "3-1 Wg Wp": "Shapesanity East Windmill Mixed", + "Half-Half Wg Wp": "Shapesanity East Windmill Mixed", + "Checkered Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wg Wp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Wp": "Shapesanity Stitched Mixed", + "3-1 Wg Wr": "Shapesanity East Windmill Painted", + "Half-Half Wg Wr": "Shapesanity East Windmill Painted", + "Checkered Wg Wr": "Shapesanity East Windmill Painted", + "Adjacent Singles Wg Wr": "Shapesanity Colorful Half Painted", + "Cornered Singles Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Wr": "Shapesanity Stitched Painted", + "3-1 Wg Wu": "Shapesanity East Windmill Painted", + "Half-Half Wg Wu": "Shapesanity East Windmill Painted", + "Checkered Wg Wu": "Shapesanity East Windmill Painted", + "Adjacent Singles Wg Wu": "Shapesanity Colorful Half Painted", + "Cornered Singles Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Wu": "Shapesanity Stitched Painted", + "3-1 Wg Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wg Ww": "Shapesanity East Windmill Mixed", + "Checkered Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wg Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Ww": "Shapesanity Stitched Mixed", + "3-1 Wg Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wg Wy": "Shapesanity East Windmill Mixed", + "Checkered Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wg Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Wy": "Shapesanity Stitched Mixed", + "3-1 Wp Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cb": "Shapesanity Stitched Mixed", + "3-1 Wp Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cc": "Shapesanity Stitched Mixed", + "3-1 Wp Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cg": "Shapesanity Stitched Mixed", + "3-1 Wp Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cp": "Shapesanity Stitched Mixed", + "3-1 Wp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cr": "Shapesanity Stitched Mixed", + "3-1 Wp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cu": "Shapesanity Stitched Mixed", + "3-1 Wp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cw": "Shapesanity Stitched Mixed", + "3-1 Wp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cy": "Shapesanity Stitched Mixed", + "3-1 Wp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rb": "Shapesanity Stitched Mixed", + "3-1 Wp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rc": "Shapesanity Stitched Mixed", + "3-1 Wp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rg": "Shapesanity Stitched Mixed", + "3-1 Wp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rp": "Shapesanity Stitched Mixed", + "3-1 Wp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rr": "Shapesanity Stitched Mixed", + "3-1 Wp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Ru": "Shapesanity Stitched Mixed", + "3-1 Wp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rw": "Shapesanity Stitched Mixed", + "3-1 Wp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Ry": "Shapesanity Stitched Mixed", + "3-1 Wp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sb": "Shapesanity Stitched Mixed", + "3-1 Wp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sc": "Shapesanity Stitched Mixed", + "3-1 Wp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sg": "Shapesanity Stitched Mixed", + "3-1 Wp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sp": "Shapesanity Stitched Mixed", + "3-1 Wp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sr": "Shapesanity Stitched Mixed", + "3-1 Wp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Su": "Shapesanity Stitched Mixed", + "3-1 Wp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sw": "Shapesanity Stitched Mixed", + "3-1 Wp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sy": "Shapesanity Stitched Mixed", + "3-1 Wp Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wb": "Shapesanity Stitched Mixed", + "3-1 Wp Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wc": "Shapesanity Stitched Mixed", + "3-1 Wp Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wg": "Shapesanity Stitched Mixed", + "3-1 Wp Wr": "Shapesanity East Windmill Mixed", + "Half-Half Wp Wr": "Shapesanity East Windmill Mixed", + "Checkered Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Wr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wr": "Shapesanity Stitched Mixed", + "3-1 Wp Wu": "Shapesanity East Windmill Mixed", + "Half-Half Wp Wu": "Shapesanity East Windmill Mixed", + "Checkered Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Wu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wu": "Shapesanity Stitched Mixed", + "3-1 Wp Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wp Ww": "Shapesanity East Windmill Mixed", + "Checkered Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Ww": "Shapesanity Stitched Mixed", + "3-1 Wp Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wp Wy": "Shapesanity East Windmill Mixed", + "Checkered Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wy": "Shapesanity Stitched Mixed", + "3-1 Wr Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cb": "Shapesanity Stitched Painted", + "3-1 Wr Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cc": "Shapesanity Stitched Mixed", + "3-1 Wr Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cg": "Shapesanity Stitched Painted", + "3-1 Wr Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cp": "Shapesanity Stitched Mixed", + "3-1 Wr Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cr": "Shapesanity Stitched Painted", + "3-1 Wr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cu": "Shapesanity Stitched Painted", + "3-1 Wr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cw": "Shapesanity Stitched Mixed", + "3-1 Wr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cy": "Shapesanity Stitched Mixed", + "3-1 Wr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Rb": "Shapesanity Stitched Painted", + "3-1 Wr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Rc": "Shapesanity Stitched Mixed", + "3-1 Wr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Rg": "Shapesanity Stitched Painted", + "3-1 Wr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Rp": "Shapesanity Stitched Mixed", + "3-1 Wr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Rr": "Shapesanity Stitched Painted", + "3-1 Wr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Ru": "Shapesanity Stitched Painted", + "3-1 Wr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Rw": "Shapesanity Stitched Mixed", + "3-1 Wr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Ry": "Shapesanity Stitched Mixed", + "3-1 Wr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Sb": "Shapesanity Stitched Painted", + "3-1 Wr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sc": "Shapesanity Stitched Mixed", + "3-1 Wr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Sg": "Shapesanity Stitched Painted", + "3-1 Wr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sp": "Shapesanity Stitched Mixed", + "3-1 Wr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Sr": "Shapesanity Stitched Painted", + "3-1 Wr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Su": "Shapesanity Stitched Painted", + "3-1 Wr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sw": "Shapesanity Stitched Mixed", + "3-1 Wr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sy": "Shapesanity Stitched Mixed", + "3-1 Wr Wb": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Wb": "Shapesanity Stitched Painted", + "3-1 Wr Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Wc": "Shapesanity Stitched Mixed", + "3-1 Wr Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Wg": "Shapesanity Stitched Painted", + "3-1 Wr Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Wp": "Shapesanity Stitched Mixed", + "3-1 Wr Wu": "Shapesanity East Windmill Painted", + "Half-Half Wr Wu": "Shapesanity East Windmill Painted", + "Checkered Wr Wu": "Shapesanity East Windmill Painted", + "Adjacent Singles Wr Wu": "Shapesanity Colorful Half Painted", + "Cornered Singles Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Wu": "Shapesanity Stitched Painted", + "3-1 Wr Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wr Ww": "Shapesanity East Windmill Mixed", + "Checkered Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wr Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Ww": "Shapesanity Stitched Mixed", + "3-1 Wr Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wr Wy": "Shapesanity East Windmill Mixed", + "Checkered Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wr Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Wy": "Shapesanity Stitched Mixed", + "3-1 Wu Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Cb": "Shapesanity Stitched Painted", + "3-1 Wu Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cc": "Shapesanity Stitched Mixed", + "3-1 Wu Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Cg": "Shapesanity Stitched Painted", + "3-1 Wu Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cp": "Shapesanity Stitched Mixed", + "3-1 Wu Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Cr": "Shapesanity Stitched Painted", + "3-1 Wu Cu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Wu Cu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Wu Cu": "Shapesanity Stitched Uncolored", + "3-1 Wu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cw": "Shapesanity Stitched Mixed", + "3-1 Wu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cy": "Shapesanity Stitched Mixed", + "3-1 Wu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Rb": "Shapesanity Stitched Painted", + "3-1 Wu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Rc": "Shapesanity Stitched Mixed", + "3-1 Wu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Rg": "Shapesanity Stitched Painted", + "3-1 Wu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Rp": "Shapesanity Stitched Mixed", + "3-1 Wu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Rr": "Shapesanity Stitched Painted", + "3-1 Wu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Wu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Wu Ru": "Shapesanity Stitched Uncolored", + "3-1 Wu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Rw": "Shapesanity Stitched Mixed", + "3-1 Wu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Ry": "Shapesanity Stitched Mixed", + "3-1 Wu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Sb": "Shapesanity Stitched Painted", + "3-1 Wu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sc": "Shapesanity Stitched Mixed", + "3-1 Wu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Sg": "Shapesanity Stitched Painted", + "3-1 Wu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sp": "Shapesanity Stitched Mixed", + "3-1 Wu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Sr": "Shapesanity Stitched Painted", + "3-1 Wu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Wu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Wu Su": "Shapesanity Stitched Uncolored", + "3-1 Wu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sw": "Shapesanity Stitched Mixed", + "3-1 Wu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sy": "Shapesanity Stitched Mixed", + "3-1 Wu Wb": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Wb": "Shapesanity Stitched Painted", + "3-1 Wu Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Wc": "Shapesanity Stitched Mixed", + "3-1 Wu Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Wg": "Shapesanity Stitched Painted", + "3-1 Wu Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Wp": "Shapesanity Stitched Mixed", + "3-1 Wu Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Wr": "Shapesanity Stitched Painted", + "3-1 Wu Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wu Ww": "Shapesanity East Windmill Mixed", + "Checkered Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wu Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Ww": "Shapesanity Stitched Mixed", + "3-1 Wu Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wu Wy": "Shapesanity East Windmill Mixed", + "Checkered Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wu Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Wy": "Shapesanity Stitched Mixed", + "3-1 Ww Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cb": "Shapesanity Stitched Mixed", + "3-1 Ww Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cc": "Shapesanity Stitched Mixed", + "3-1 Ww Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cg": "Shapesanity Stitched Mixed", + "3-1 Ww Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cp": "Shapesanity Stitched Mixed", + "3-1 Ww Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cr": "Shapesanity Stitched Mixed", + "3-1 Ww Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cu": "Shapesanity Stitched Mixed", + "3-1 Ww Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cw": "Shapesanity Stitched Mixed", + "3-1 Ww Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cy": "Shapesanity Stitched Mixed", + "3-1 Ww Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rb": "Shapesanity Stitched Mixed", + "3-1 Ww Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rc": "Shapesanity Stitched Mixed", + "3-1 Ww Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rg": "Shapesanity Stitched Mixed", + "3-1 Ww Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rp": "Shapesanity Stitched Mixed", + "3-1 Ww Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rr": "Shapesanity Stitched Mixed", + "3-1 Ww Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Ru": "Shapesanity Stitched Mixed", + "3-1 Ww Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rw": "Shapesanity Stitched Mixed", + "3-1 Ww Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Ry": "Shapesanity Stitched Mixed", + "3-1 Ww Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sb": "Shapesanity Stitched Mixed", + "3-1 Ww Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sc": "Shapesanity Stitched Mixed", + "3-1 Ww Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sg": "Shapesanity Stitched Mixed", + "3-1 Ww Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sp": "Shapesanity Stitched Mixed", + "3-1 Ww Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sr": "Shapesanity Stitched Mixed", + "3-1 Ww Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Su": "Shapesanity Stitched Mixed", + "3-1 Ww Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sw": "Shapesanity Stitched Mixed", + "3-1 Ww Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sy": "Shapesanity Stitched Mixed", + "3-1 Ww Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wb": "Shapesanity Stitched Mixed", + "3-1 Ww Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wc": "Shapesanity Stitched Mixed", + "3-1 Ww Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wg": "Shapesanity Stitched Mixed", + "3-1 Ww Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wp": "Shapesanity Stitched Mixed", + "3-1 Ww Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wr": "Shapesanity Stitched Mixed", + "3-1 Ww Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wu": "Shapesanity Stitched Mixed", + "3-1 Ww Wy": "Shapesanity East Windmill Mixed", + "Half-Half Ww Wy": "Shapesanity East Windmill Mixed", + "Checkered Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Ww Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wy": "Shapesanity Stitched Mixed", + "3-1 Wy Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cb": "Shapesanity Stitched Mixed", + "3-1 Wy Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cc": "Shapesanity Stitched Mixed", + "3-1 Wy Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cg": "Shapesanity Stitched Mixed", + "3-1 Wy Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cp": "Shapesanity Stitched Mixed", + "3-1 Wy Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cr": "Shapesanity Stitched Mixed", + "3-1 Wy Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cu": "Shapesanity Stitched Mixed", + "3-1 Wy Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cw": "Shapesanity Stitched Mixed", + "3-1 Wy Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cy": "Shapesanity Stitched Mixed", + "3-1 Wy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rb": "Shapesanity Stitched Mixed", + "3-1 Wy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rc": "Shapesanity Stitched Mixed", + "3-1 Wy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rg": "Shapesanity Stitched Mixed", + "3-1 Wy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rp": "Shapesanity Stitched Mixed", + "3-1 Wy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rr": "Shapesanity Stitched Mixed", + "3-1 Wy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Ru": "Shapesanity Stitched Mixed", + "3-1 Wy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rw": "Shapesanity Stitched Mixed", + "3-1 Wy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Ry": "Shapesanity Stitched Mixed", + "3-1 Wy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sb": "Shapesanity Stitched Mixed", + "3-1 Wy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sc": "Shapesanity Stitched Mixed", + "3-1 Wy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sg": "Shapesanity Stitched Mixed", + "3-1 Wy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sp": "Shapesanity Stitched Mixed", + "3-1 Wy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sr": "Shapesanity Stitched Mixed", + "3-1 Wy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Su": "Shapesanity Stitched Mixed", + "3-1 Wy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sw": "Shapesanity Stitched Mixed", + "3-1 Wy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sy": "Shapesanity Stitched Mixed", + "3-1 Wy Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wb": "Shapesanity Stitched Mixed", + "3-1 Wy Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wc": "Shapesanity Stitched Mixed", + "3-1 Wy Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wg": "Shapesanity Stitched Mixed", + "3-1 Wy Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wp": "Shapesanity Stitched Mixed", + "3-1 Wy Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wr": "Shapesanity Stitched Mixed", + "3-1 Wy Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wu": "Shapesanity Stitched Mixed", + "3-1 Wy Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Ww": "Shapesanity Stitched Mixed", +} + +shapesanity_three_parts = { + "Adjacent 2-1-1 Cb Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cg Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cb Cg Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cb Cg Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cb Cg Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cb Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cg Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Rb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Rg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Rr": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Ru": "Shapesanity Stitched Painted", + "Singles Cb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cb Cr Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cb Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Rb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Rg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Rr": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Ru": "Shapesanity Stitched Painted", + "Singles Cb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Rb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Rg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Rr": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Ru": "Shapesanity Stitched Painted", + "Singles Cb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rb Rg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rb Rr": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rb Ru": "Shapesanity Stitched Painted", + "Singles Cb Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cb Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cb Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cg Cb Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cg Cb Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cg Cb Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cg Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cg Cr Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cg Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Rb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Rg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Rr": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Ru": "Shapesanity Stitched Painted", + "Singles Cg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Rb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Rg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Rr": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Ru": "Shapesanity Stitched Painted", + "Singles Cg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rb Rg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rb Rr": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rb Ru": "Shapesanity Stitched Painted", + "Singles Cg Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rg Rr": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rg Ru": "Shapesanity Stitched Painted", + "Singles Cg Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cg Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Cg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cr Cb Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cr Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cr Cb Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cr Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cg Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cr Cg Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cr Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Rb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Rg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Rr": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Ru": "Shapesanity Stitched Painted", + "Singles Cr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rb Rg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rb Rr": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rb Ru": "Shapesanity Stitched Painted", + "Singles Cr Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rg Rr": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rg Ru": "Shapesanity Stitched Painted", + "Singles Cr Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Sb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rr Ru": "Shapesanity Stitched Painted", + "Singles Cr Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Cg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cu Cb Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cu Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cu Cb Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cu Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cg Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cu Cg Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cu Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cr Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cu Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rb Rg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rb Rr": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rb Ru": "Shapesanity Stitched Painted", + "Singles Cu Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rg Rr": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rg Ru": "Shapesanity Stitched Painted", + "Singles Cu Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rr Ru": "Shapesanity Stitched Painted", + "Singles Cu Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Cu Ru Su": "Shapesanity Stitched Uncolored", + "Singles Cu Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Cu Ru Wu": "Shapesanity Stitched Uncolored", + "Singles Cu Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Cu Su Wu": "Shapesanity Stitched Uncolored", + "Singles Cu Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cr Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cu Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rg Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rb Rg Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rb Rg Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rb Rg Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rb Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rg Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Rb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Rb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rb Rr Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rb Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Rb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Rb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Rb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Rb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Rb Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Rb Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Rb Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rb Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Rb Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Rb Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rg Rb Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rg Rb Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rg Rb Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rg Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rg Rr Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rg Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Rg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Rg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Rg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Rg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Rg Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Rg Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Rg Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Rg Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Rg Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Rg Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Rg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rr Rb Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rr Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rr Rb Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rr Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rg Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rr Rg Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rr Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Rr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Rr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Rr Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Rr Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Rr Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Rr Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Rr Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Rr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Rr Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Ru Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Ru Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Ru Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Ru Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Rg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Ru Rb Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Ru Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Ru Rb Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Ru Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rg Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Ru Rg Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Ru Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rr Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Ru Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Ru Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Ru Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Ru Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Ru Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Ru Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Ru Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Ru Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Ru Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Ru Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Ru Su Wu": "Shapesanity Stitched Uncolored", + "Singles Ru Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rr Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Ru Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sg Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sb Sg Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sb Sg Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sb Sg Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sb Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sg Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Sb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Sb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Sb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Sb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sb Sr Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sb Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Sb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Sb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Sb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Sb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Sb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Sb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Sb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Sb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Sb Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Sb Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Sb Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sb Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sb Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sb Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sg Sb Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sg Sb Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sg Sb Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sg Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sg Sr Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sg Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Sg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Sg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Sg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Sg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Sg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Sg Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Sg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Sg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Sg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Sg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Sg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Sg Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Sg Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Sg Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Sg Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Sg Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sg Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sp Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Sg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sr Sb Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sr Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sr Sb Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sr Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sg Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sr Sg Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sr Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Sr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Sr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sr Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Sr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Sr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Sr Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Sr Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Sr Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Sr Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Sr Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Sr Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Su Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Su Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Su Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Su Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Su Ru Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Su Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Sg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Su Sb Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Su Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Su Sb Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Su Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sg Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Su Sg Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Su Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sr Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Su Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Su Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Su Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Su Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Su Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Su Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Su Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Su Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Su Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Su Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Su Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Su Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Su Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Su Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Su Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Su Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Su Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Su Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Su Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Su Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Su Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Su Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Su Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Su Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Su Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sr Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Su Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wy": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sw Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wg Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wb Wg Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wb Wg Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wb Wg Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wb Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wr Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wb Wr Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wb Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wb Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wg Wb Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wg Wb Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wg Wb Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wg Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wr Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wg Wr Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wg Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wb Wg": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wr Wb Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wr Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wb Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wr Wb Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wr Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wg Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wr Wg Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wr Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Wu Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Wu Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Wu Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Wu Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Wu Ru Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Wu Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wb Wg": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wu Wb Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wu Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wb Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wu Wb Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wu Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wg Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wu Wg Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wu Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wu Ww": "Shapesanity East Windmill Mixed", +} + +shapesanity_four_parts = { + "Singles Cb Cc Cg Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Rb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Rg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Rr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Ru": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Rb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Rg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Rr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Ru": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Cu Rb": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Rg": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Rr": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Ru": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Cu Rb": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Rg": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Rr": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Ru": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sb Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sb Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sb Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sb Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sg Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sg Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sg Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sg Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sr Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sr Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sr Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sr Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sr Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Su Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Su Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Su Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Su Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Su Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wu Ww Wy": "Shapesanity Stitched Mixed", +} diff --git a/worlds/shapez/data/strings.py b/worlds/shapez/data/strings.py new file mode 100644 index 000000000000..261ca5317e14 --- /dev/null +++ b/worlds/shapez/data/strings.py @@ -0,0 +1,337 @@ + +class OTHER: + game_name = "shapez" + + +class SLOTDATA: + goal = "goal" + maxlevel = "maxlevel" + finaltier = "finaltier" + req_shapes_mult = "required_shapes_multiplier" + allow_float_layers = "allow_floating_layers" + rand_level_req = "randomize_level_requirements" + rand_upgrade_req = "randomize_upgrade_requirements" + rand_level_logic = "randomize_level_logic" + rand_upgrade_logic = "randomize_upgrade_logic" + throughput_levels_ratio = "throughput_levels_ratio" + comp_growth_gradient = "complexity_growth_gradient" + same_late = "same_late_upgrade_requirements" + toolbar_shuffling = "toolbar_shuffling" + seed = "seed" + shapesanity = "shapesanity" + + @staticmethod + def level_building(number: int) -> str: + return f"Level building {number}" + + @staticmethod + def upgrade_building(number: int) -> str: + return f"Upgrade building {number}" + + @staticmethod + def phase_length(number: int) -> str: + return f"Phase {number} length" + + @staticmethod + def cat_buildings_amount(category: str) -> str: + return f"{category} category buildings amount" + + +class GOALS: + vanilla = "vanilla" + mam = "mam" + even_fasterer = "even_fasterer" + efficiency_iii = "efficiency_iii" + + +class CATEGORY: + belt = "Belt" + miner = "Miner" + processors = "Processors" + painting = "Painting" + random = "Random" + belt_low = "belt" + miner_low = "miner" + processors_low = "processors" + painting_low = "painting" + big = "Big" + small = "Small" + gigantic = "Gigantic" + rising = "Rising" + demonic = "Demonic" + + +class OPTIONS: + logic_vanilla = "vanilla" + logic_stretched = "stretched" + logic_quick = "quick" + logic_random_steps = "random_steps" + logic_hardcore = "hardcore" + logic_dopamine = "dopamine" + logic_dopamine_overflow = "dopamine_overflow" + logic_vanilla_like = "vanilla_like" + logic_linear = "linear" + logic_category = "category" + logic_category_random = "category_random" + logic_shuffled = "shuffled" + sphere_1 = "sphere_1" + buildings_3 = "3_buildings" + buildings_5 = "5_buildings" + + +class REGIONS: + menu = "Menu" + belt = "Shape transportation" + extract = "Shape extraction" + main = "Main" + levels_1 = "Levels with 1 building" + levels_2 = "Levels with 2 buildings" + levels_3 = "Levels with 3 buildings" + levels_4 = "Levels with 4 buildings" + levels_5 = "Levels with 5 buildings" + upgrades_1 = "Upgrades with 1 building" + upgrades_2 = "Upgrades with 2 buildings" + upgrades_3 = "Upgrades with 3 buildings" + upgrades_4 = "Upgrades with 4 buildings" + upgrades_5 = "Upgrades with 5 buildings" + paint_not_quad = "Achievements with (double) painter" + cut_not_quad = "Achievements with half cutter" + rotate_cw = "Achievements with clockwise rotator" + stack_shape = "Achievements with stacker" + store_shape = "Achievements with storage" + trash_shape = "Achievements with trash" + blueprint = "Achievements with blueprints" + wiring = "Achievements with wires" + mam = "Achievements needing a MAM" + any_building = "Achievements with any placeable building" + all_buildings = "Achievements with all main buildings" + all_buildings_x1_6_belt = "Achievements with x1.6 belt speed" + full = "Full" + half = "Half" + piece = "Piece" + stitched = "Stitched" + east_wind = "East Windmill" + half_half = "Half-Half" + col_east_wind = "Colorful East Windmill" + col_half_half = "Colorful Half-Half" + col_full = "Colorful Full" + col_half = "Colorful Half" + uncol = "Uncolored" + painted = "Painted" + mixed = "Mixed" + + @staticmethod + def sanity(processing: str, coloring: str): + return f"Shapesanity {processing} {coloring}" + + +class LOCATIONS: + my_eyes = "My eyes no longer hurt" + painter = "Painter" + cutter = "Cutter" + rotater = "Rotater" + wait_they_stack = "Wait, they stack?" + wires = "Wires" + storage = "Storage" + freedom = "Freedom" + the_logo = "The logo!" + to_the_moon = "To the moon" + its_piling_up = "It's piling up" + use_it_later = "I'll use it later" + efficiency_1 = "Efficiency 1" + preparing_to_launch = "Preparing to launch" + spacey = "SpaceY" + stack_overflow = "Stack overflow" + its_a_mess = "It's a mess" + faster = "Faster" + even_faster = "Even faster" + get_rid_of_them = "Get rid of them" + a_long_time = "It's been a long time" + addicted = "Addicted" + cant_stop = "Can't stop" + is_this_the_end = "Is this the end?" + getting_into_it = "Getting into it" + now_its_easy = "Now it's easy" + computer_guy = "Computer Guy" + speedrun_master = "Speedrun Master" + speedrun_novice = "Speedrun Novice" + not_idle_game = "Not an idle game" + efficiency_2 = "Efficiency 2" + branding_1 = "Branding specialist 1" + branding_2 = "Branding specialist 2" + king_of_inefficiency = "King of Inefficiency" + its_so_slow = "It's so slow" + mam = "MAM (Make Anything Machine)" + perfectionist = "Perfectionist" + next_dimension = "The next dimension" + oops = "Oops" + copy_pasta = "Copy-Pasta" + ive_seen_that_before = "I've seen that before ..." + memories = "Memories from the past" + i_need_trains = "I need trains" + a_bit_early = "A bit early?" + gps = "GPS" + goal = "Goal" + + @staticmethod + def level(number: int, additional: int = 0) -> str: + if not additional: + return f"Level {number}" + elif additional == 1: + return f"Level {number} Additional" + else: + return f"Level {number} Additional {additional}" + + @staticmethod + def upgrade(category: str, tier: str) -> str: + return f"{category} Upgrade Tier {tier}" + + @staticmethod + def shapesanity(number: int) -> str: + return f"Shapesanity {number}" + + +class ITEMS: + cutter = "Cutter" + cutter_quad = "Quad Cutter" + rotator = "Rotator" + rotator_ccw = "Rotator (CCW)" + rotator_180 = "Rotator (180°)" + stacker = "Stacker" + painter = "Painter" + painter_double = "Double Painter" + painter_quad = "Quad Painter" + color_mixer = "Color Mixer" + + belt = "Belt" + extractor = "Extractor" + extractor_chain = "Chaining Extractor" + balancer = "Balancer" + comp_merger = "Compact Merger" + comp_splitter = "Compact Splitter" + tunnel = "Tunnel" + tunnel_tier_ii = "Tunnel Tier II" + trash = "Trash" + + belt_reader = "Belt Reader" + storage = "Storage" + switch = "Switch" + item_filter = "Item Filter" + display = "Display" + wires = "Wires" + const_signal = "Constant Signal" + logic_gates = "Logic Gates" + virtual_proc = "Virtual Processing" + blueprints = "Blueprints" + + upgrade_big_belt = "Big Belt Upgrade" + upgrade_big_miner = "Big Miner Upgrade" + upgrade_big_proc = "Big Processors Upgrade" + upgrade_big_paint = "Big Painting Upgrade" + upgrade_small_belt = "Small Belt Upgrade" + upgrade_small_miner = "Small Miner Upgrade" + upgrade_small_proc = "Small Processors Upgrade" + upgrade_small_paint = "Small Painting Upgrade" + upgrade_gigantic_belt = "Gigantic Belt Upgrade" + upgrade_gigantic_miner = "Gigantic Miner Upgrade" + upgrade_gigantic_proc = "Gigantic Processors Upgrade" + upgrade_gigantic_paint = "Gigantic Painting Upgrade" + upgrade_rising_belt = "Rising Belt Upgrade" + upgrade_rising_miner = "Rising Miner Upgrade" + upgrade_rising_proc = "Rising Processors Upgrade" + upgrade_rising_paint = "Rising Painting Upgrade" + trap_upgrade_belt = "Belt Upgrade Trap" + trap_upgrade_miner = "Miner Upgrade Trap" + trap_upgrade_proc = "Processors Upgrade Trap" + trap_upgrade_paint = "Painting Upgrade Trap" + trap_upgrade_demonic_belt = "Demonic Belt Upgrade Trap" + trap_upgrade_demonic_miner = "Demonic Miner Upgrade Trap" + trap_upgrade_demonic_proc = "Demonic Processors Upgrade Trap" + trap_upgrade_demonic_paint = "Demonic Painting Upgrade Trap" + upgrade_big_random = "Big Random Upgrade" + upgrade_small_random = "Small Random Upgrade" + + @staticmethod + def upgrade(size: str, category: str) -> str: + return f"{size} {category} Upgrade" + + @staticmethod + def trap_upgrade(category: str, size: str = "") -> str: + return f"{size} {category} Upgrade Trap".strip() + + bundle_blueprint = "Blueprint Shapes Bundle" + bundle_level = "Level Shapes Bundle" + bundle_upgrade = "Upgrade Shapes Bundle" + + trap_locked = "Locked Building Trap" + trap_throttled = "Throttled Building Trap" + trap_malfunction = "Malfunctioning Trap" + trap_inflation = "Inflation Trap" + trap_draining_inv = "Inventory Draining Trap" + trap_draining_blueprint = "Blueprint Shapes Draining Trap" + trap_draining_level = "Level Shapes Draining Trap" + trap_draining_upgrade = "Upgrade Shapes Draining Trap" + trap_clear_belts = "Belts Clearing Trap" + + goal = "Goal" + + +class SHAPESANITY: + circle = "Circle" + square = "Square" + star = "Star" + windmill = "Windmill" + red = "Red" + blue = "Blue" + green = "Green" + yellow = "Yellow" + purple = "Purple" + cyan = "Cyan" + white = "White" + uncolored = "Uncolored" + adjacent_pos = "Adjacent" + cornered_pos = "Cornered" + + @staticmethod + def full(color: str, subshape: str): + return f"{color} {subshape}" + + @staticmethod + def half(color: str, subshape: str): + return f"Half {color} {subshape}" + + @staticmethod + def piece(color: str, subshape: str): + return f"{color} {subshape} Piece" + + @staticmethod + def cutout(color: str, subshape: str): + return f"Cut Out {color} {subshape}" + + @staticmethod + def cornered(color: str, subshape: str): + return f"Cornered {color} {subshape}" + + @staticmethod + def three_one(first: str, second: str): + return f"3-1 {first} {second}" + + @staticmethod + def halfhalf(combo: str): + return f"Half-Half {combo}" + + @staticmethod + def checkered(combo: str): + return f"Checkered {combo}" + + @staticmethod + def singles(combo: str, position: str = ""): + return f"{position} Singles {combo}".strip() + + @staticmethod + def two_one(first: str, second: str, position: str): + return f"{position} 2-1 {first} {second}" + + @staticmethod + def two_one_one(first: str, second: str, position: str): + return f"{position} 2-1-1 {first} {second}" diff --git a/worlds/shapez/docs/datapackage_settings_de.md b/worlds/shapez/docs/datapackage_settings_de.md new file mode 100644 index 000000000000..ae375f3e3c66 --- /dev/null +++ b/worlds/shapez/docs/datapackage_settings_de.md @@ -0,0 +1,35 @@ +# Anleitung zum Ändern der maximalen Anzahl an Locations in shapez + +## Wo finde ich die Einstellungen zum Erhöhen/Verringern der maximalen Anzahl an Locations? + +Die Maximalwerte von `goal_amount` und `shapesanity_amount` sind fest eingebaute Einstellungen, die das Datenpaket des +Spiels beeinflussen. Sie sind in einer Datei names `options.json` innerhalb der APWorld festgelegt. Durch das Ändern +dieser Werte erschaffst du eine custom APWorld, die nur auf deinem PC existiert. + +## Wie du die Datenpaket-Einstellungen änderst + +Diese Anleitung ist für erfahrene Nutzer und kann in nicht richtig funktionierender Software resultieren, wenn sie nicht +ordnungsgemäß befolgt wird. Anwendung auf eigene Gefahr. + +1. Navigiere zu `/lib/worlds`. +2. Benenne `shapez.apworld` zu `shapez.zip` um. +3. Öffne die Zip-Datei und navigiere zu `shapez/data/options.json`. +4. Ändere die Werte in dieser Datei nach Belieben und speichere die Datei. + - `max_shapesanity` kann nicht weniger als `4` sein, da dies die benötigte Mindestanzahl zum Verhindern von + FillErrors ist. + - `max_shapesanity` kann auch nicht mehr als `75800` sein, da dies die maximale Anzahl an möglichen Shapesanity-Namen + ist. Ansonsten könnte die Generierung der Multiworld fehlschlagen. + - `max_levels_and_upgrades` kann nicht weniger als `27` sein, da dies die Mindestanzahl für das `mam`-Ziel ist. +5. Schließe die Zip-Datei und benenne sie zurück zu `shapez.apworld`. + +## Warum muss ich das ganze selbst machen? + +Alle Spiele in Archipelago müssen eine Liste aller möglichen Locations **unabhängig der Spieler-Optionen** +bereitstellen. Diese Listen aller in einer Multiworld inkludierten Spiele werden in den Daten der Multiworld gespeichert +und an alle verbundenen Clients gesendet. Je mehr mögliche Locations, desto größer das Datenpaket. Und mit ~80000 +möglichen Locations hatte shapez zu einem gewissen Zeitpunkt ein (von der Datenmenge her) größeres Datenpaket als alle +supporteten Spiele zusammen. Um also diese Datenmenge zu reduzieren wurden die ausgeschriebenen +Shapesanity-Locations-Namen (`Shapesanity Uncolored Circle`, `Shapesanity Blue Rectangle`, ...) durch standardisierte +Namen (`Shapesanity 1`, `Shapesanity 2`, ...) ersetzt. Durch das Ändern dieser Maximalwerte, und damit das Erstellen +einer custom APWorld, kannst du die Anzahl der möglichen Locations erhöhen, wirst aber auch gleichzeitig das Datenpaket +vergrößern. diff --git a/worlds/shapez/docs/datapackage_settings_en.md b/worlds/shapez/docs/datapackage_settings_en.md new file mode 100644 index 000000000000..fd0ed1673d9e --- /dev/null +++ b/worlds/shapez/docs/datapackage_settings_en.md @@ -0,0 +1,33 @@ +# Guide to change maximum locations in shapez + +## Where do I find the settings to increase/decrease the amount of possible locations? + +The maximum values of the `goal_amount` and `shapesanity_amount` are hardcoded settings that affect the datapackage. +They are stored in a file called `options.json` inside the apworld. By changing them, you will create a custom apworld +on your local machine. + +## How to change datapackage options + +This tutorial is for advanced users and can result in the software not working properly, if not read carefully. +Proceed at your own risk. + +1. Go to `/lib/worlds`. +2. Rename `shapez.apworld` to `shapez.zip`. +3. Open the zip file and go to `shapez/data/options.json`. +4. Edit the values in this file to your desire and save the file. + - `max_shapesanity` cannot be lower than `4`, as this is the minimum amount to prevent FillErrors. + - `max_shapesanity` also cannot be higher than `75800`, as this is the maximum amount of possible shapesanity names. + Else the multiworld generation might fail. + - `max_levels_and_upgrades` cannot be lower than `27`, as this is the minimum amount for the `mam` goal to properly + work. +5. Close the zip and rename it back to `shapez.apworld`. + +## Why do I have to do this manually? + +For every game in Archipelago, there must be a list of all possible locations, **regardless of player options**. When +generating a multiworld, a list of all locations of all included games will be saved in the multiworld data and sent to +all clients. The higher the amount of possible locations, the bigger the datapackage. And having ~80000 possible +locations at one point made the datapackage for shapez bigger than all other supported games combined. So to reduce the +datapackage of shapez, the locations for shapesanity are named `Shapesanity 1`, `Shapesanity 2` etc. instead of their +actual names. By creating a custom apworld, you can increase the amount of possible locations, but you will also +increase the size of the datapackage at the same time. diff --git a/worlds/shapez/docs/de_shapez.md b/worlds/shapez/docs/de_shapez.md new file mode 100644 index 000000000000..5ef8f13f7963 --- /dev/null +++ b/worlds/shapez/docs/de_shapez.md @@ -0,0 +1,71 @@ +# shapez + +## Was für ein Spiel ist das? + +shapez ist ein Automatisierungsspiel, in dem du Formen aus zufällig generierten Vorkommen in einer endlosen Welt +extrahierst, zerschneidest, rotierst, stapelst, anmalst und schließlich zum Zentrum beförderst, um Level abzuschließen +und Upgrades zu kaufen. Das Tutorial beinhaltet 26 Level, in denen du (fast) immer ein neues Gebäude oder eine neue +Spielmechanik freischaltest. Danach folgen endlos weitere Level mit zufällig generierten Vorgaben. Um das Spiel bzw. +deine Gebäude schneller zu machen, kannst du bis zu 1000 Upgrades (pro Kategorie) kaufen. + +## Wo ist die Optionen-Seite? + +Die [Spieler-Optionen-Seite für dieses Spiel](../player-options) enthält alle Optionen zum Erstellen und exportieren +einer YAML-Datei. +Zusätzlich gibt es zu diesem Spiel "Datenpaket-Einstellungen", die du nach +[dieser Anleitung](/tutorial/shapez/datapackage_settings/de) einstellen kannst. + +## Inwiefern wird das Spiel randomisiert? + +Alle Belohnungen aus den Tutorial-Level (das Freischalten von Gebäuden und Spielmechaniken) und Verbesserungen durch +Upgrades werden dem Itempool der Multiworld hinzugefügt. Außerdem werden, wenn so in den Spieler-Optionen festgelegt, +die Bedingungen zum Abschließen eines Levels und zum Kaufen der Upgrades randomisiert. + +## Was ist das Ziel von shapez in Archipelago? + +Da das Spiel eigentlich kein konkretes Ziel (nach dem Tutorial) hat, kann man sich zwischen (momentan) 4 verschiedenen +Zielen entscheiden: +1. Vanilla: Schließe Level 26 ab (eigentlich das Ende des Tutorials). +2. MAM: Schließe ein bestimmtes Level nach Level 26 ab, das zuvor in den Spieler-Optionen festgelegt wurde. Es ist +empfohlen, eine Maschine zu bauen, die alles automatisch herstellt ("Make-Anything-Machine", kurz MAM). +3. Even Fasterer: Kaufe alle Upgrades bis zu einer in den Spieler-Optionen festgelegten Stufe (nach Stufe 8). +4. Efficiency III: Liefere 256 Blaupausen-Formen pro Sekunde ins Zentrum. + +## Welche Items können in den Welten anderer Spieler erscheinen? + +- Freischalten verschiedener Gebäude +- Blaupausen freischalten +- Große Upgrades (addiert 1 zum Geschwindigkeitsmultiplikator) +- Kleine Upgrades (addiert 0.1 zum Geschwindigkeitsmultiplikator) +- Andere ungewöhnliche Upgrades (optional) +- Verschiedene Bündel, die bestimmte Formen enthalten +- Fallen, die bestimmte Formen aus dem Zentrum dränieren (ja, das Wort gibt es) +- Fallen, die zufällige Gebäude oder andere Spielmechaniken betreffen + +## Was ist eine Location / ein Check? + +- Level (minimum 1-25, bis zu 499 je nach Spieler-Optionen, mit zusätzlichen Checks für Level 1 und 20) +- Upgrades (minimum Stufen II-VIII (2-8), bis zu D (500) je nach Spieler-Optionen) +- Bestimmte Formen mindestens einmal ins Zentrum liefern ("Shapesanity", bis zu 1000 zufällig gewählte Definitionen) +- Errungenschaften (bis zu 45) + +## Was passiert, wenn der Spieler ein Item erhält? + +Ein Pop-Up erscheint, das das/die erhaltene(n) Item(s) und eventuell weitere Informationen auflistet. + +## Was bedeuten die Namen dieser ganzen Shapesanity Dinger? + +Hier ist ein Spicker für die Englischarbeit (bloß nicht dem Lehrer zeigen): + +![image](https://raw.githubusercontent.com/BlastSlimey/Archipelago/refs/heads/main/worlds/shapez/docs/shapesanity_full.png) + +## Kann ich auch weitere Mods neben dem AP Client installieren? + +Zurzeit wird Kompatibilität mit anderen Mods nicht unterstützt, aber niemand kann dich davon abhalten, es trotzdem zu +versuchen. Mods, die das Gameplay verändern, werden wahrscheinlich nicht funktionieren, indem sie das Laden der +jeweiligen Mods verhindern oder das Spiel zum Abstürzen bringen, während einfache QoL-Mods vielleicht problemlos +funktionieren könnten. Wenn du es versuchst, dann also auf eigene Gefahr. + +## Hast du wirklich eine deutschsprachige Infoseite geschrieben, obwohl man sie aktuell nur über Umwege erreichen kann und du eigentlich an dem Praktikumsportfolio arbeiten solltest? + +Ja diff --git a/worlds/shapez/docs/en_shapez.md b/worlds/shapez/docs/en_shapez.md new file mode 100644 index 000000000000..4af398c5f17e --- /dev/null +++ b/worlds/shapez/docs/en_shapez.md @@ -0,0 +1,65 @@ +# shapez + +## What is this game? + +shapez is an automation game about cutting, rotating, stacking, and painting shapes, that you extract from randomly +generated patches on an infinite canvas, and sending them to the hub to complete levels. The "tutorial", where you +unlock a new building or game mechanic (almost) each level, lasts until level 26, where you unlock freeplay with +infinitely more levels, that require a new, randomly generated shape. Alongside the levels, you can unlock upgrades, +that make your buildings work faster. + +## Where is the options page? + +The [player options page for this game](../player-options) contains all the options you need to configure +and export a config file. +There are also some advanced "datapackage settings" that can be changed by following +[this guide](/tutorial/shapez/datapackage_settings/en). + +## What does randomization do to this game? + +Buildings and gameplay mechanics, that you normally unlock by completing a level, and upgrade improvements are put +into the item pool of the multiworld. Also, if enabled, the requirements for completing a level or buying an upgrade are +randomized. + +## What is the goal of shapez in Archipelago? + +As the game has no actual goal where the game ends, there are (currently) 4 different goals you can choose from in the +player options: +1. Vanilla: Complete level 26 (the end of the tutorial). +2. MAM: Complete a player-specified level after level 26. It's recommended to build a Make-Anything-Machine (MAM). +3. Even Fasterer: Upgrade everything to a player-specified tier after tier 8. +4. Efficiency III: Deliver 256 blueprint shapes per second to the hub. + +## Which items can be in another player's world? + +- Unlock different buildings +- Unlock blueprints +- Big upgrade improvements (adds 1 to the multiplier) +- Small upgrade improvements (adds .1 to the multiplier) +- Other unusual upgrade improvements (optional) +- Different shapes bundles +- Inventory draining traps +- Different traps afflicting random buildings and game mechanics + +## What is considered a location check? + +- Levels (minimum 1-25, up to 499 depending on player options, with additional checks for levels 1 and 20) +- Upgrades (minimum tiers II-VIII (2-8), up to D (500) depending on player options) +- Delivering certain shapes at least once to the hub ("shapesanity", up to 1000 from a 75800 names pool) +- Achievements (up to 45) + +## When the player receives an item, what happens? + +A pop-up will show, which item(s) were received, with additional information on some of them. + +## What do the names of all these shapesanity locations mean? + +Here's a cheat sheet: + +![image](https://raw.githubusercontent.com/BlastSlimey/Archipelago/refs/heads/main/worlds/shapez/docs/shapesanity_full.png) + +## Can I use other mods alongside the AP client? + +At the moment, compatibility with other mods is not supported, but not forbidden. Gameplay altering mods will most +likely crash the game or disable loading the afflicted mods, while QoL mods might work without problems. Try at your own +risk. diff --git a/worlds/shapez/docs/setup_de.md b/worlds/shapez/docs/setup_de.md new file mode 100644 index 000000000000..1b927f379056 --- /dev/null +++ b/worlds/shapez/docs/setup_de.md @@ -0,0 +1,62 @@ +# Setup-Anleitung für shapez: Archipelago + +## Schnelle Links + +- Info-Seite zum Spiel + * [English](/games/shapez/info/en) + * [Deutsch](/games/shapez/info/de) +- [Spieler-Optionen-Seite](/games/shapez/player-options) + +## Benötigte Software + +- Eine installierbare und aktuelle PC-Version von shapez ([Steam](https://store.steampowered.com/app/1318690/shapez/)). +- Die shapezipelago Mod von der [mod.io-Seite](https://mod.io/g/shapez/m/shapezipelago). + +## Optionale Software + +- Archipelago von der [Archipelago-Release-Seite](https://github.com/ArchipelagoMW/Archipelago/releases) + * (Für den Text-Client) + * (Alternativ kannst du auch die eingebaute Konsole (nur lesbar) nutzen, indem du beim Starten des Spiels den + `-dev`-Parameter verwendest) +- Universal Tracker (schau im `#future-game-design`-Thread für UT auf dem Discord-Server nach der aktuellen Anleitung) + +## Installation + +Da das Spiel einen eingebauten Mod-Loader hat, musst du nur die "shapezipelago@X.X.X.js"-Datei in den dafür vorgesehenen +Ordner kopieren. Wenn du nicht weißt, wo dieser ist, dann öffne das Spiel, drücke auf "MODS" und schließlich auf +"MODORDNER ÖFFNEN". + +Du solltest (egal ob vor oder nach der Installation) die Einstellungen des Spiels öffnen und `HINWEISE & TUTORIALS` im +Reiter `BENUTZEROBERFLÄCHE` ausschalten, da sie sonst den Upgrade-Shop verstecken wird, bis du ein paar Level +abgeschlossen hast. + +## Erstellen deiner YAML-Datei + +### Was ist eine YAML-Datei und wofür brauche ich die? + +Deine persönliche YAML-Datei beinhaltet eine Reihe von Optionen, die der Zufallsgenerator zum Erstellen von deinem +Spiel benötigt. Jeder Spieler einer Multiworld stellt seine eigene YAML-Datei zur Verfügung. Dadurch kann jeder Spieler +sein Spiel nach seinem eigenen Geschmack gestalten, während andere Spieler unabhängig davon ihre eigenen Optionen +wählen können! + +### Wo bekomme ich so eine YAML-Datei her? + +Du kannst auf der [shapez-Spieler-Optionen-Seite](/games/shapez/player-options) eine YAML-Datei generieren oder ein +Template herunterladen. + +## Einer MultiWorld beitreten + +1. Öffne das Spiel. +2. Gib im Hauptmenü den Slot-Namen, die Adresse, den Port und das Passwort (optional) in die dafür vorgesehene Box ein. +3. Drücke auf "Connect". + - Erneutes Drücken trennt die Verbindung zum Server. + - Ob du verbunden bist, steht direkt daneben. +4. Starte ein neues Spiel. + +Nachdem der Speicherstand erstellt wurde und du zum Hauptmenü zurückkehrst, wird das erneute Öffnen des Speicherstandes +erneut verbinden. + +### Der Port/Die Adresse der MultiWorld hat sich geändert, wie trete ich mit meinem existierenden Speicherstand bei? + +Wiederhole die Schritte 1-3 und öffne den existierenden Speicherstand. Dies wird außerdem die gespeicherten Login-Daten +überschreiben, sodass du dies nur einmal machen musst. \ No newline at end of file diff --git a/worlds/shapez/docs/setup_en.md b/worlds/shapez/docs/setup_en.md new file mode 100644 index 000000000000..4c91c16a0b5b --- /dev/null +++ b/worlds/shapez/docs/setup_en.md @@ -0,0 +1,58 @@ +# Setup Guide for shapez: Archipelago + +## Quick Links + +- Game Info Page + * [English](/games/shapez/info/en) + * [Deutsch](/games/shapez/info/de) +- [Player Options Page](/games/shapez/player-options) + +## Required Software + +- An installable, up-to-date PC version of shapez ([Steam](https://store.steampowered.com/app/1318690/shapez/)). +- The shapezipelago mod from the [mod.io page](https://mod.io/g/shapez/m/shapezipelago). + +## Optional Software + +- Archipelago from the [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) + * (Only for the TextClient) + * (If you want, you can use the built-in console as a read-only text client by launching the game + with the `-dev` parameter) +- Universal Tracker (check UT's `#future-game-design` thread in the discord server for instructions) + +## Installation + +As the game has a built-in mod loader, all you need to do is copy the `shapezipelago@X.X.X.js` mod file into the mods +folder. If you don't know where that is, open the game, click on `MODS`, and then `OPEN MODS FOLDER`. + +It is recommended to go into the settings of the game and disable `HINTS & TUTORIALS` in the `USER INTERFACE` tab, as +this setting will disable the upgrade shop until you complete a few levels. + +## Configuring your YAML file + +### What is a YAML file and why do I need one? + +Your YAML file contains a set of configuration options which provide the generator with information about how it should +generate your game. Each player of a multiworld will provide their own YAML file. This setup allows each player to enjoy +an experience customized for their taste, and different players in the same multiworld can all have different options. + +### Where do I get a YAML file? + +You can generate a yaml or download a template by visiting the +[shapez Player Options Page](/games/shapez/player-options) + +## Joining a MultiWorld Game + +1. Open the game. +2. In the main menu, type the slot name, address, port, and password (optional) into the input box. +3. Click "Connect". + - To disconnect, just press this button again. + - The status of your connection is shown right next to the button. +4. Create a new game. + +After creating the save file and returning to the main menu, opening the save file again will automatically reconnect. + +### The MultiWorld changed its port/address, how do I reconnect correctly with my existing save file? + +Repeat steps 1-3 and open the existing save file. This will also overwrite the saved connection details, so you will +only have to do this once. diff --git a/worlds/shapez/docs/shapesanity_full.png b/worlds/shapez/docs/shapesanity_full.png new file mode 100644 index 0000000000000000000000000000000000000000..494065d51454bded26be04c191e080028a17eef5 GIT binary patch literal 127240 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%0D8uo? zS0Tw+&K>fSy|=C*dqGH!c?7FsNXjen*YZAGeb*OB0`Yg9FijE4g1+%tYX_LS=b(P6 znFJazY)}7PCD+TMmR|vN)oW`iIP4&#xK6%c8X{yAS+rnctClta^QI)&z|;Hkik)QJ zsNq{w24IxBcqIKg7a_za#K*688L0rqSV&h5noJm6|4>8Z$v&fZ{SJ9+DJeQ|csMvX zfL(S9FW3*T?(olm^hCJ4kDvfX9Kj5~wCI&TqE)!@#l4G<4IBAY2D5I1+7R)~cfRij zFCApTG`+qx5yf9w!}??4!`x=z?`Ex~N4iKynR$7qr*G<_7PO)7@cCOFf~-!`?z_5n05b*PcuG8azmp@f zBX|Hoe&eCY?6Cwe=%x=!iC%-mr-QqNxIkPCz#*i))-!k(EdaGfr7o8%r9Lg}+GZ+J zhHqOQm}+8CX}?8civMDjWtNo8t`_wI7sSt>btYXmYL%o@L*XML(A@+I_5av{@~r`v zk|Hd8!PJy&``^D`hv+oE9=HP`n-cOJLNstQMwQ}0lrse`|>z$fWAuAcSNA5`^ zD>tT$opdbpE3${Du<+kdEX<2HlX-H@bz0j|2ONp2-2N>56Hn{ipYlFE-M2~ejjoT3 zj8uQb*!%DDhs>U23%=3{C^x2%0@O0?UVCbvLK;ZbkD79tis^p&E@cRKtp9Xvs5+5v z7oSro8C{sj+if$XeoC1k9IJi6KtQPdqqRf@W1E^p#6efFs+b$@e)_C;65=vpn-9^2 z2s)Ey2dvxcCp5WS7gpQ$HFX zZ1+wN59MxOUjnitAPS=!B9s*$kVY%Q=1)94?2oBsfL4@$sHPfseLc zLHKrjd|9MP1;+6J7UMM!jHs+A`QVyM^bhy?OSS*7Uu@RzSUIl@6`s`zYn0Y&91*eV z!tB26?q!lI7smgP;&1K{kiLhcE*zWbVo>bJSsg+M+iU0FlNwu_Lc31~hFxL^8h>hZ|AQQ}QLd<7P;*(l@vc{h zO!)EVhuM``ckW%*B>w~J$FR7jyUmvdkdw3T9}?@Ol?rt?*QI|WCpO3bg_(Bt9us-& z97({FJVzN0g`U_iF(4x}s%O+*eLSxXN^y9qP+kd!7aqlq$5Fi|G0S^176ngf{C_H3 z?1dMHb{5-|mi?ql0H$JD))e~KO?-lw2e&shv?xbmxct8E-?f2e5zS$(Il9Bg+3 zs~r6fVpH7gOfv^(0WJH@)wcAEjb^Iq+~zbmCS{-v=QiLI)_7pK^ZMIEZ>hS_srg`k zJ%D=Sr@Q4aKe^Hu$p!p3A>>Mn`F|&b^k^M&l{#g7S*&FvzGuyN!kU_z2j_=2v^(>D zEx8njuY}EQ@MQX5{QCg=qY4ApVU(|bDg@KI5xFLxOODliY{Fv7r}n4C=3U#dGsdh5SYm$snv{2yZu4vq$@H(Yys zu7V`MVdv-J3A2Cv<$R$Chd9GzTZv(#SL0D%MEp>{wcd^sFp?pt=iqZeFw^f&;S4)= zts&tL;U7Jy%fq$2ynw~6;LpCMbD(i&}u%T`Tc(tC-5-WvfU1n;v4op?(xwZe4->vx$Oa_rw@}d_{~T% zq_5CbE77*pBz0xhwIWivz*Tby=|-Jyq;9V$`LMmMv6JL8YiCUvMxcK*v6d@MYgd26 z+1-4;*-m|(B@Xlx2J`X?Z@U@l$!R;3>ExvXNZ!_X4;UCug#f?3uXS%VVM1kQ`eN@k3u&faMdpQD7=A_$?s=)Bw5>;y*D*<|e(M)S zq=3q&8VyQn8k#FL_QzLNAW^i-<+>7vf~>ouvRJd4N#uY`D_KQ@;d8sw{|0pX);8l? zyIA7(Qoq+U zqDgUs9=D;_cdCFHy7217Hllu(-ts>i?EbQo(xXMmF0uBjZs|FQ75*=(%u zWQ#u5pP10zz_=2fsSU_ixSGE8_rZ&WZiRz|rC0Ljr?HU{`RmGT8b**Aj)`OO(evTA z;gdd^U5(ZMDAjRgZgM$?paQc!f{O+kCO^O!iedB3Tg64(9e;Cbi)nY~nxg7?aQXRekHf3y=QW=Jh&2)U$M39>4dypH7AG7htSR+*lgcG#6HOu<|0 z&$+LKi;HqMlFc1;{m+89Ak8=A1ATpc{tqBLn>j8+ts7W_GBz{Pv)9Xjg(Xk=<_MX? zr<6}#g**bvErM5=nGwO!Yr`~{e>FK(glp9%VNDwE4QZ+DNC?^EM<5562((Hr-r?zQ*3 zc__KKLS>}?ljp~b0iIA2ZL;B1#`_t(`Y-M{vli-{c}u`HLcYo#%%lJ-eQGozh(YJ% zfS590)XHpbe1XPo9x(M~%CrWSA|z9KBXbADKAm?PV$d{2&AzBEK`i|s5C~BxpduRe zBMk)iZc)AYblb2Y{g^z^uk3Qw(s#^@k?C3pg*Xsm zLNI+x$e%ao8=rm&yu?bO4ymdN|4R@}SpLJe-{EHO(h!x_5(J<9IosLXc_~GXfV}m~ zK0I;?IeLPsan+af2cA?0A8wPWwHJpa9@{RuSYZaP8l{D<3BJ3^ha^Er{wG1tUX62U zGKmcc>&)_5{&U#Qn5_vwUQ2dkgy+%KmjUp9>P^ivPo3P&g?k&9lYC3rGX6d{F`Ls| ze<3QXswDeF;VsgQGIl)<6U_$qlILXASDQzi9Mm7rwy%I3A6iYgc%omP!gIt#I7=`c zegMUmf+52KCl^;#(7d-CXbGZIfn`g5`Qn9$MO_&LUhWul^rBHV)} zN~46cguoGEw2akFxK(tqWR|5dD6uyJWU8!(DJ&hv-Xh0Za`0I}#F6o#pNDd?(TAI> z%Hz9C&Dr*Eaw-UY>4bqeI{BE3(EApn+&VKW_4DnlUsJ|i0fOR#xaH3Dl;j%S>hOpn z9z}6g0ICUJ&c|&Y`zvIcfkGx;olBh*Kk)aeuD>G4hd;uzfngee$Qd`jo4Lm;Pi+ds z;AobFT_d9;5@>>D7ioyx2K_ZO|1_eTw646Hxa6GK^r8%>*3EaKozo5bdVJwT;o#)7 zaWo$`OKdRtNYM!h2*9Uw2oL|Dy?lPO95@*~YR$i#;~PhAb$!jxwOH%pW~pak;tSac zfyXEYQ-_EKtg&AZCn*MbrEkN|$h)4;^9b%3e&ogP&w9RQ+%r4N8vBC(iOu8u6XX3A z!M$I;1muU9%I_LKO>zUTg*!F{naJbD!8Ur3;v4zW#}-Na z6})9ifJ$qABln2w|J3*d+f!KzlYTgI-=$=)>n>0iAY#wzWP(8&V#K$%wpwA<1QFmL zsIM^ReeIW)68kSJI{+4JkR9-Lrj7f6Te$lIVplF&RQ;O-?5aV3S=4$yA5Fm#-K(#T z%hvlS2RsDkQUA_<`~xZl2V2Jo|4j`{t^ohN0Qp*DKe!%87{bhY>*ia=fG zdx*`~)7`B~PnG#ND+?il5GM?b!QHsl&vbPdn()0vjaXEq+6Wyw@3aW{f`ArW10#X= z1aORlX|Q^YZkfP{K0IC2k%@-W_o2KA<&?QRzGC)BX-26ciw{3vInGIJ?x)Lj1r6P( zXOVnfa1-O>V5@WX<5MA>A{9UBJIXn7_0zng#k*vGoh!Mw*dO{Q4srb`y?^KnZJMEu z=SfI!#A`~e1vVxo*B~Z0F;wLHlsm#qdk1r8hM{3UCu!(cV$a>X_Byh%vf#a2kfA4z zWxsi*-HLZC&{&o#BaJ_T_bWRTEzKS(_8Fkpm)e>1H7GW}TzNeuJ)*rbOxEup#6>YF ztr{=h1Z|;g=aX)y$g2_hb5?`|_pHGYVEv23NN#(M6@%$eTOr(IU8;_p=7V{{`c8UY zFlKnS2PzkwsbBqRbl^c!Zs(f82 zd{}x8Nwp9Gikn&GIwrVUrDr&MM|Od zn^ZU%m$*n%%7`wS*5IEdp%czheh>~@OCfI7{Sd+NyjKkafU>f%a1<}Fv9qTcFhdFt zngE_r(0~^onw%N1(U*co3KM#=#-Gwqq zZ_Xm>(;DM)6WC?b_<_r$VYBx!OD>6J3Rk<4tTgO^@=I*ZvyXipH!RN{5e2!2f77WMU(Xdq)`4?WFU%;d~z>AL_$IF15nhi#bM=t z$v1kwfog1RZEZ;qD&ewV86VndndG*@JSV=_x^2P42LOWLMDg(PaR)E+$7syH-`r{C zVxeKgiStxR!l!_hMGiF+%xYq~9rxqD0;7>jW*(nXjXUqNb-Eja@X60 zts0R`^d1chE9ZS09jUvOo{Iidm z-u`7}kJZ`T9k9w*+Z*C|e~_pzd$_#i7TNX{qu0PvQJ=D{Kz2Ldx|i4|DLDm&EawpN zh|<=i+W2Z0*qC})0itT@!9>2NU3_==+47?`d9=s~X%9cbafL9!y{5PckELO%|M7nL2w(iaaJPuvC(z z#~;HHA*|Lz6*y9Ijk@jt%VDGzR7^1w+oCa{|s9PSrYL zw}c=$<+PD;HLTk5r1;+;n zUN5l6u3A@o;$htTLe@kH=3(7fHNTL^ZfG$^NFfEgvK|huP56n%l{pj6-oIDFPBBzG zEPVhS$YxOwYsIFUmB>U_pa$Xmox_~K1|=2p`(UcdlQ)rp2VO&4nWWC8dgCEE>+5ie z{-_(GG3+xu=&R5(-@JaES=N(f@l`F;OM(akW?)%?R(UOEEX2Wql@bg)GIvXT(p245 z8IgU6rjyO`w~JFLr83ikM~Ox*o;Bm@go>}g%9ntYA>uRw`BL|p=6jzNm6B)^xgvWP zExLLR9LOBR+#v}J$8a0~>g!{9Ls{@M%2GmFIS3_)j%AB!T# z>`=qG7^8?OqBzLzebwc7*-^Ud^IGjkjx&0g)KN^UY|oysf6&NgGN}-DisL<~0Gb%u zNLlA0mR?mO9-2%3Uojrm9Rpvg)sIn;ZG(mth@)VE?%ymqcOWXJprOqm<0%)(ceLN~ z-Z#+=2e!Z+57?m<_iA)e%VLvZ~6{Mdnp~BKP%DkmyFauTf92o1smC<_x zrY&GqX;!Z6w0wgkvkc0qp#s>W5PN&Od3K6tM-;${4RG95?8JPsoZ4YhDO-t#epX<&H}*XJ1xxS+D=;Gx3%6F-g#-Xr$i8{H01V4F(z-ZR@iq zxLvZRR2v%`>yK2&7TB6X{)qO!fH@M{;TT0FpG7<-h8g?b`(1SJtj)|Af|u6^+5v0F z&HW1Yz%&P7jz@U{hWdqcg}4tr*>0*!gUcGRtNwpCt#>y7PPLU!G)m=!uY=d5@E2Cj z&ZX_4=im8mvOHj+|0H*}iu(POe9-F}F1t6D??h=hq1d5PaTJA4|FDl#hEQx_wa|qW zju?=TBk(sbX&L<0{0*%OaOI7xbPp4|SP4U2~^Qt5rBcl(fhd?3BEBWQs1(;5xi*&i(+;xPe?+?Ru z&A_kf-f!G{(!Z_SEvC`gq z5)WI{D3B%owG3|9_)@6#Y`k)cU0jGnoxt(VouX(TNbFozX1Y^$0u*GiNdd3AmKOK- zzB{)XzrplHOrwFd5U&%p8CkB9Q83Lx%P$>+l?@>QUxA*~i$aKTbL0MLeEO9BO*|ed zdiptwcCcYM@JWjw z*+0T6=rIv&q@j3p#eZGS{dl)}si*h_J;L9KE^+Mhn7Q%^9iBA%I|kBNnb(5nv~Ii< zQl2aki)d z7hSGo$Lemf>m=YOD5HBGR8$$oy^QGK6dhM{(jq2rm|INF^gdxuQO;@r8vb_tC31BfB6YC78naw5(&fw8Q6F;6$Wg*70-4Ad{+y z!ke>_KPEFCWu`w~CXX&eGR8x|o2Bz$R%AI+U(U7-t1D6+%awLmjs@j@I8kgSub^gF z*4pdp{{kI=v@6SHcj1J!EP)B@f%%1b!) zI*ZZGMA;O>P_&WpyF`BzvzCx~XCqO1M^JXr3H*TwRlG9eNS7D$DQ5LdUuw+8v^lZ6 zIiG0jQ!_NPjXX$5xCIJ1Uq9a(zZxh$tSqdzZ(Fstw1&A&9E~{ozEa_ozjDRg+men| z?ZREpSt#YkgfalcqUMo-Vq4jV0lC4#1DXpZZi&pu|sH(y{@N|Xw)LYHh ze=a&RF=CiL(`q!We5uJFgpUB%{6N2{(GQ~3;AFD|Y}MD(b9?>E<_-cBL81^FUb)s! zAKP0E2vN}>pL^U6rXEAh0?>d+__j+&L40w_EW+`5q4NPc2zo@r| zen`!GBMZ#^K$bXJguH+iAYx@`CzS5*^K2i%1qemo^2$CT`XoI)9VV*ZkbXJR#f77N z41RL)u112Hm^|^Jl!SzKGHTEPkbX%Ou%Nx%$RE1D+y`@1k`(Fywr^2a3d|mtMG+Sk zjrf~Y^5X?ntkCy5Wio1hCA@W~raw!`+ddYy$Je=D)NFo5`Xc*6!}A&VonRNOrQaf| zvs%rmfu6WR@6;3#j4#1s{ie)f|0Fa|Vdc(0v+MF^&-p7Djrec4G0+mr)!8NY+2(O8 zsjAySEr49-F;F}I%>L!1KH_5BFx#>8)oh8MhPA?+##QyYxgLip{}*cs(T8nIzMO=6 ze^{>JWxhtf$J!7P_8=@bSlDYs<7mIkEVssuM62xYm5w~~HmB2;<4IrrDL4EV_wlu> z25LxcMDWd%aKtm3mPaO{9;;{+l1p3Ce1PG@#aNNP2pz$zSxaA{L$pyc zB@-{dOH-E)uCetb3Ph*#O?20^*&pkj)2gzG5o6!2tF2v`oO(swZ}{N#_icF=T1h+_ z+3jGOckiplUZk+-Ib$2Rxy9X3A?F~G)6>Wd%Y%Dpif1o}Smnu-%hxwkKWXlMN|UC) zN*l`ypM=#qMm|>hnP3_6^mNi+QL9LguucvyMOP#NbnB~lf`|1lYo;F!|!o3l1T&S0;c)tctm`L8XQ>DQxP@iK| ze_LBAYSz})z!pk`&MAakckOw_1(I}8n-7ZalVZ=w-Yg)V-uav(eqjay^stft2F~iQ z&)S9g(J{bguc_v2SHPpt}_|0FRu7-zx~yJ zhgK0WAd&`BL;R>8s~VvZv>O^!(UCS06cadNc^r*xBDbg)D`b?RvjPSv$+KtI zE5Jd+O7st$bG^te{MVEpp&48KeFD-e5VF+1diQSkKdJbmdn_3uhX?QGu)JID|Gop9 z*}+G19vWf{mU!9BMb_x;{VqO5qNX!5LD!`(_GKfLd8~11$_%!#+~n=JOZD!0r!ekd zGGMF$MRGeo-eVzOgIm)gTbm>AKj{J|=Ch^%V&jRiA-oV*9~A57I(@BPX$ z6XxCSjf1h{c9SoD92S+!g}!*a*s?qqf#*ykxVU8F(o)h=KjZTAKKj`~nSuO-@v<%| zy54f_EpoZ^>C>n0-UZs(ab984TY&2pW;L#pmtGn&Y;xYV@ckeB`z!k>VrD#73-c>+ zVZJ$8x}HR~u%hDm`N?mW4#-gkD;igdoV1oFBK-V8yYs5xxR;;*1AdnT5^~V7GwI-u zLocDa+m7`LPXzxqf}%TThZyxeyC&%78Y1$Ex2^9bU+r_g3agxT(Q~LO;Gt8z(ZtXRNXK zcv4W$O`{J*i9!?^V*i0b0*yvGO1pB)KLuYDYblJI6*HW*JIo3MT&rNx=91T!+d>>U z?e^n?QXR)KYt93(Zqxuha4j6YBF^F7-UtV{Y8iiAg0>t?c}+hYFD5;;4&Hz(4#+5P z5XFTX8I1yb4_JM4u^vH}Wc#;oen8*AGH_p(xC7Yzc)GcfbONjn2_u2vPqd#}W596^ zu8W|y1|KW2o5JWaxaa)(4C@T3pmKo}9bk0@haOS}QLDy+u*g(3s8pxG{dm(j8 z&9_n%jaG2@F$&gqbHOCtI!29C5qb})FkO|3Ka)+z?^#f}&==|<>AIaQ#Fo8{vP&53k4<9w>wLI$`c!9c*i zNi7~n4gq9D%K}`($C3_uQcSru>fH{}r$`39S{Y7RN+2KOjkHR>6&8V!a;LkM&4tICIz|8oCg)R?4 z8mbqG4g=*5q^HEmMUzL+a$N>2GB}A}xyOxh@-7FrEBc`vtBG%KXJ<5nf5gMiOWq>( zvDnu*R&}sXNcwOR`X;YOW!2K>aEN%v_+JHL&7hQ4AznVAg&Yh|V(83GBO6uI`d55A zW!YS3$_mq>Z?FW`>kSE0akUX^vAF)S2^OtZ6>y=?iNO4vqGbfYLUJ}w5>rJ{aWPLb zIq6#QUuFVgjQcH<_ou?ENLya5N<8&_j2acYwX4QDISX<00^3J86C}$fGC%7gO%VoU z!^yGs7(?7F=3e^s*RZW3JAoA&XTp*?xZvBK0Idq~xVvn$-vW*ZEfN_q0@|yQB5E&! z#m&vvVYDQZB)ZAuU7rBk#Ar%3o0n>|uU%^b(J+8i@dw#59ytpg1Eh*jDKOLyJZS&| zVL0r~D(4)1Yx>TwoFMhlmFz!hbdG#9w1T_;8!}+q!bD)fu}peO3g$I>Um;gRMV5La z`F)IG@SklZzttODLYS5hKr0X!QRipSrvPF1T+RoF;K73j2DjSamFd-Yb2$1n6|^o+ z7ah4P5nZ(TrI@gWyj8fz(@0N~U!VsiE&~NlSOw0}2*U)(t2;X#=G!7MD>@5T_E4s( zNd*fNq7xAVm|!(hR76*|N<7b{q^FScM~U!}#WxNLBsI!8yo45jjA9TC0}ch5HG|^U zm)6$6klF}>?n@9F828f7L(!5@J-zvXR!iCCPXfi{C9$3z|EnTl*&7307$0~GZlYU9 z@J?3O*R!5JCA^<97=yWhGo;BEsGtY2uReytDTk-rI|mXKj{Lr+4EjX)6=ghU7!-Kn zEeyl$F)nUppzc;sVJs}svrc|)Z-iMt0s-^2$Gq}#a=Sr_{3zRbZO$@C$$0jR`5^zE zI`BuQp;y_{i2i>5SEnK*#tWsUE}~`%q=T>_3Sd%sSlW$|Y9^dBn&;mJ9t2v^p{>C1 zWvbeN&_4d+FTmUVO)=SbM+(|4y;=_|9|FXdd3gJAjdwu6)>!#kANn1NuY1D?DLTWE1(#l zi37s<1N2##RSG~MjLnqQUonDSsR&%H8eI_`nzVeTxmFbV_LRZBpeY|wj7sl zMBZb$8IpK$eQsY(=!ZUuyw0G7^7Om+UBr_+-V6UQuOr|=GYKSnxOJ*`zoa>yh*?XU z;_-~hQTnLOPpfrFrc%+XoBjJr%S(8vdrmmYUR`(!0;7zv`oTdx0m{PIrZ(8w0wx4C zAzukG0e3!t`)v^o>}d>JRa_OI8|01iUMzq60eoj6%4j&_! zsp5~%w7)g~fPU`Jc-YR|tWxe@_=(=RP2BwPDY-MMa}H)07JdfG7)1Oym;gevQnNG5 zNlwn>O2f-SISPw?qqh(p0b_6q8sx8|gNou45>$UbYMOF0pYca(4oY~=$Za(*cXWUY zRw(?wgNVpO(Au{l2$O{~TBl+dESm3CdM2Up7?azCuGGV!r>3ZrNG4D*;?#a>y#Ox5 zoX>1kL+>nn?1YYJ1-wekku8n;hhM6UH6+ZLUTjeoe4(YH!nwla^&|XDL^wYAJ6Z$& zoqTgCC0YUUA(|ojq+1O1r$^#;c#~(15@j9QjlSP_T&Y~7ThCu}oH&J_WtEW|%dx6Y zsoXE9Pq;_FHi11Q6?W=>M8LRRR>m(kays1{c==!vjwffWt!gdx*Ax#DfdmU$95UsaEQWHT-{Hq&m@tLRoD_TQKv@F&y;8EFU$vd}KbP^6{aom2e;y=uL1 z+CiSjY3KAm5sN$e`EttUtTX*qBqmk*8cMEvIb^ut>FK*`VMV0{?5jp@{CH=A7u_XfyxhNC zT^A+RFLHBFQiFknDpp+=ZF9d-gy=UYD1G=|cGyyTIz)+ufWZ@0`5Dd`yyvn?p>8a6 zbOatK)t4k z{QYx;-tdQhsidWfZ){AA*tjVPm2W{r>0}SJg(#?(hzE>sAfGE6XhW$isFdp zW9@B(zOobA@igfEiTzb-s&0M&Y6|0(R+MCURon4Pk%lm3!Gv`(m0|RvU3ww!p;FQ% zCNeX46#&yWm%PHj|;*TA_IC9sCplDg5x3YES9paCO$T3H_q#RQ=E(`z95peJwSr zp4ec_r$wO7h-qD;e%4f>&54K#>R<%U?NE6P3y2T05Y}Hmf1ZJ73SB5E2 zt5dx9%WTMtbO;dkj}QLA*&lF}Sg(cUC$IpIBq`^i9khlOBY<2wIy<5Bc$S$7KA|wy zyoW&!B%H&boSLS|o_Zf3lsX8Kb*NoiJ3C$;9%O%@jKH49KCm$qj1qVoB`;sXVw?(p z;MO$l9N<|C7w}JKdGZ;@S+h^v$ISNNFjTD{Sp4-{Jv+0%j}NHr5BFV@!>SSLcSn9Y zL~-0`U)nnbiu*f^Um-_R&O5WsPtj;B-A+0(QB%qs@^~?Rqp~-D=0bJ=j$NsEiLDR> zJC4vqHo*%5;68K<;O53ecX0IGi<=pwogh4MS1P5rdW>ZbYhi>^T#KC&F!;M@-S*#7 zC_3C6`~LRq10UqWBY6b;l<8D7=YRd%AGi$O!%(%hPJXXt>Rh7NR5U4g?stBi5FIzJ ztZgMUQqj)NvfB~QA!;B{AdsYmJru5^L+o5rrG4wxNAHCWD7A;I3j|%=-3tkk_b9pM z(|u3&S0F=HG#SpjSUUdzkU1RRHu1QO)p(V239AxKo&YUG_+bV_VU5Mi?X=+ELaYLw;@}9 zCr`quADa3C4sa4Z1Pkk;WOM^M@NLU}qADM84W0w+w}UUT|KHPqq1U)NH-P~6Ywt|3 zC18JJ%bxF~#k>t~+xph=N)qM~aC-&oL(kYgO%)6KEoaM|w4t#8%%JT?SAKcOr4r#S zM&c4?(dW#se<`jb?RUTyy{M}4dwSW+V==(B3*AM}yShL@9(37eE~=oWnL!mSmEYj~ zElvC)gP@@J=)dvk2CoBUVyC*DudjrIs$JNYs(r(D6^0}9#lSI zcn@H>*grgcF75WDvQk7CCh><|k*9aT2-)%_B5?~AlkHe-LA)pjV+0Fny+w)?-;J!c z6LucEX^IJ(dLnCa5q43o$Gr0X$T}I_{*th+|t<+QUzP)X2NlN3w0rG)c0Q z6&(a5&xHZu3#RQfgsv2EPAmPHaPvvFAiW9HoC@u6adGwaRWF!Gvmy$FJ&yeh45*~` z0MZOu?oD6I3n8b|w)=%6uuf=YKhZk~O^G*8I!&FNkvpgZ8gzAaL5RVcWb)Vw-ce{O zb4xo4XpphM^2gNJRN1zZTy7bG4Jr6zHJq8p-Kre=$7V=&_7K_Apl2q556O*WJWD8( zM0N=YTRbc@I1!YMWtSqy)8D;&2RsiOPUD_kdv|jA^z3Xau$fMwRMWO~$v%X`@N5;g z8Ej}UHrBKxsLMFZGpuqlY&2g9l7fs>~|L@{3yM} z&PxNh)$XX_t!fvnQ=(zdqsp&eLChWTGUi~W(Z>Op$%1lFnzj8iD6ta7_@`ezUFVjS zm0ezjlQI_S=MM&_jtml>&~$2N*FNcjx7gjoPG$qJvLhR-Yipwi z0W(%Le){A|Pwd8fV;(A^H38y&l9iO(DmyhhCm4m4FSyGb!rm;D&uDyUe)2 z-QeNo;P4GF47j$~75ovOY<`@XJ+9JEW>?1Zz`b*s*-8*BG2|vHifQ7i!MzPxU$L|X z{J4C`k#J)2BZ<55ZeGxJ1AS{#?@B8w61GPDctdW!QG)YTc6u3&9Hp~=8}<$q>X9dE zS4!$k-w~+KrqtA@{-P?WsTJZHn2)7Yjc?1=!G0>9gNG{I1@HkzlH+d7GL%53j!!Kt zpS^{yxjT{8rM6Jt;+`S4NFNEkD9Ci5h@hY3<|c!AEw6>k4IeJmMxV1PPi?8P-4;|0 zt+22vvTG@7PlMB9cQ7)C83#ctnKuEY(@s;#WkizjfZb>w10KQ3j3!&*VgG}wODQJC+G!5My-)aUh4=VqW0)Kl5(o6SFd6;c>d5KmiCWJoy*ff z0`wqu`X_eMI9E*`DktUT$G5IVJ|(HG+C4nfxYTt&F{&o_N+5X@11eW?V{-t?tj&ke zlkZ+1V^v~eTU8&T>@O$nk?g>1IQ8ps&ZpsF3O=T8$Ek7-7Y3D|06_gH%gd%yz2@^5 zK$R*)Ct^7l6)F4UsQ=#`l)dKsooU9h>zUjz`Z zuC1xXt|elbZ{W-kf$sdfXIM}3st6CTo6V<`-1*f+t;uA+0J}E#=0= zJ$v@dOn9!!4wnZXH!2gJ@c8&Ru+RY0ce zmxVEKXLhPD6sSg{vEz5JaS7HJ$E8~R3&=HZTkeU+%B^y1Cc`kOQHjaUflK|x%a=8h zNq*w+=D@mv8dShWdSh=q;>Za5K8oeU!tV@nJKmN{g!SghoUV{yo>>d=LaZJ;_cdmMWS5mknr z{7+A9tl4$!H2`q*0rTQynZIFbz!;=!$`GR|@;c~6ts?Gq`Oy`5gV;VO)z6M1k}C!$ z2xf~w5T*c|2HKK$>MMjuLUBxKF6nzv4#hzdHiBaEfOusZwdG3E2c7CU+{g8x^oA)t z)5Ow!uH{6D6#&%k%g$qmuTjjZ?_nfI+~a2!RUvdlrp{#u7#5H#AJ5~m7)PHBP0oVg z0;ID^Oq4jm9Wg}l1b<_4o`nrjWy-$ZJwFc}S0xeoxx5^cSk-m4feEV=S8HP_O_`jO zG&vln2Q3kl{}Hff zU|4ADq~GIo;n3y4qa;fUGJ_e#Su6@EUKq103<&xp@H9}TLEB4#5K#Q|z1}Tu6mEbx zS2ppzs)xsFQZ9zIuysZsIMbg}Etma72*Bpl-0dpP88feTMFH zg-nkk!hkWDSM{%}-aPy@ni`n0pGWE)=EppNj`(&Uyp`oK-kwgFMVWGJtsiee8g}27EMy~b! z+c)Yt;5U{y=CQbF#+3WJ6O;Y^g3bCu5G-4lX(H_TajkHBuYo2nl_yp5`jaw*+-m|p z1YPzGI%?`@OR7M;Z5>?wcy1euf4LfV3zgsh`1$RG{JfLB-uIc7MV?dVn%9q44qo(6 z_b=a6R6-Nh#kRDzPBApv*o*VO&@S@s9!f0a#xuLCJ|WDoB3 z7|cWI&Quzu%J>7$X&6Tp&_6^=n)NJ>RY79$;{HmdhsEp$Rf&Bx$zwLNJbCAU!}ngz z_Z(2D;F{lNqF{9-2bw#ct2s)$np#@Ly79l0WT<{tX+6fG$5L^ahmYgZR45Q7gp8ul zr98I=a0?b=+=YEzT{mINkrNxkepeME_| zDP|Cq^_nzQG3F`EqhPuELg7upT_8ZG>tVI$N7z{&ft&2)BJ|RQ2udSW4Ko%%E8UsF zDCE(jB9n5s-hDP5?Co{j{=yP3g(-roDuLH~p2{~cP|F9F{bT1tWk`u`#KRBM0*n4UwqT_IWZCpm32D<%;n@)n8qv63N+)3awn}DSc8~9LjFkT^>Xn{g{b89!Iy12bzVx&A zb3dwBJk_kI96B&wk+{NVTKpya-v_zg8@~I|C0!*M8IGfjzD+G7MI%#F-BW#xk9uK0 zk^&{_Dqc}}3H@+YW_%awHMBD;ial+gKeuWO&^=ecmxTs1$j&ZOG()@2*j*P@R5j#a zrH?qq_Z_$*=kepVkh~)HgFJ3XAcSI8XhJ1x@ZVS+5VEr#<^6 z0kK54CQHCg1+XmH{)ww7H8ro9#xH2W#>E*L3gubsRv~?>1f$+4<>prn+8J zTw_rchYl^dmYUt;mW~-=T_zq05=_$4j%++(%CDWhWbO*zx~cC(Pnm>`EkZ!fw7l~p7yghjj(_1vi_ViiN0=c1-t6=! zJwTH#RnT(lKCY8<} zV%yqO;4WBScd66R2T_bV&^i!lCI#f0uHFZJbuI|WfICP1)z;QlwH>^`MuJY+ui&&} zN=*z5(95~JxQSvyLZ58=XcZlA<;q?BzEuv2j5m7xcyx3kmFk@p9(>>8)V{PBtOQ44X2IAM2X(Gh3f?N$YYyEtXLTIRZnUy1>UT3DWK~q25?F_XwYo zbldxYXE^*HFL^7=9g)tJ3@5Qoh5Jh0{+XmtEEEvJxDiTww@LaQUn0rsCXAuL=4pk7D$XEppd;WdM%oF} zxM&SMk+^p>b3&4cC{I0_^)dE)8E0lWJ=0G*5wwa=(6D;rQsk`a9Oreogq#_pd)1zJ z)3@O~C+6(kFE%L$=}#7YiY7wK<;qMJIt*UmPY*HD59rc4YSETFQFP=DzW)B|Uk)6I z7kW$@p8`($=AImyCdaY+Y{Tv0Vreu7qUba$RDT^sl2qZYrV-D#^XSqKkEs@-t$+j- zF(domt;GYV5I(saM5WFk^>TrsUYw>OAK@E|#os+{4Oew-TVUXPY7-j%Yf_&sPT$NW z{rTf!JtNO4mS)f~Xn|+ovo2=$wV)!5? zLOxvv%S?a?0KbR=iO?u*L)3qR+LU!)C;DT4f_+Dd&f4Td?Js3^ zTgjfU9TH&4+4t{*uFj3+4*%ule!+Sy9#x}6%@ihlJj_h406F27mTE72uvZoqmn+f* z4KgX@lqnb}mlu~iPJ~EHtf7IJ6Y-J17XI&OyJfn#}MQT@tX`ZVgYDsJpE5%mHfi|=r#JS3Ya?=(}W&Cm9M2n z%+>g1aR+$6+2s3`+Z^b5GE0B+`IU~ay~Wr}<2cdi!ELN> z6rY(MyR4V!BhAc?YT2Z_JtNIHFiU9{XDb^UcdfFvIXG~0<2Y{MGJEko9pEIBH@ts* zEMq(|+?*Sx`BKz3tb>F*3K=PxNxpm=GEr8C^FPA!%K6P4DWXK=bOwniYb5zl@pUc1 z%o_T3WQI3?UA}4XXfK!^SFKOnXlnpGYb5>X=x7iH?YOL1A-_@in0(Xpr7jFm8Mfu+ zwi{FFC2-!~F0XAgt5F(jV3~hX%ba|lU>hPxZNe`S{(U86?9E*9$(!c5d^vxGPp+}n zOxT1@P*gCrnq%p!)#!y&b6OY9Pwv=KtJ;-iy-^IsDP-!jRSbVLCsx0C_eZMdV;NE$gWMjGly z!;QWr#^TJhj5GuEopU8n6pugXXXQHxS2H>aaRqAb6FGGviXU|meGD{P`GXV2Th^Bg zcO?n=(uhA^7JW)ktSJ+Gmx|?`r-u7vRURWF7${E*(AP(57N;v2ImpOB)}%{_ROfPB zR`<;H~Gu`31@7zqL! z6qohp&6{)5wyo9GC(oa!=<&p7U~?hL|U0H}r>g(^}#JInQ`+Ny9qP_J)g zf5%j~({OC;>%K#X^Hbs$iBywvQGQyKn_C*Cnw;T=_TNxpViG^E8J)%lKl-Mc^ox6} zB0P<3DntK?m_GS5QG7&xRH~-t6gw4Oq{25q9LCXZdn7LTB(l8fL#B$qRsb0xD8Z6G zS2(IXyWYiX^(BYEbnJfOt-x3m%E18yVh%mYcL73qK3lv(zz89aziDuF2Edg6^FVh| z9%?E3@}7wMWRG;2^O=kXP7*T8B3l?!`Nov8@eP7(V( z^~oiM`!URA`3eDo&JrPzS8#IqPfF4?YQA`dh*!bHPBmO_g#+FHQIPp4UR~2+-86<} zfGH`4zjY3A4c_i&ZbBbTvBn-*S$`u7PI);FvUHAvwTi`geL% z?w~IXsUcUfV=N>ee1sbvAanwFZ3lLWgm8hZ1P22UP`_6982umB!RgtVnxbke8H-#M zkh}1jxC?2UU3|Bb$}gbbODZ`(Kd<79;V8ikhlP;&?d?=K?JB_E5#0|*DnK;n3Yb6! z*Y!v-V!dTK-Rn<;7tS@oi6VUO@G!P!?Ho@vBj(ycHmdM%%%=9PXr358r~vby-w@KLTfHHX~@a$fa9Ngr>#e6~($hR~e8No#?CU+va& z#dh<6Er-oP?&Rw*zQUxPedqOkos7U>P;vm2lpl691%O2|i+l}u`~ofGSOoSP4I-8e z%U(`*??QKa0z3$(giQOxihpSdsG|jkuD$(zCUN^N;4d-CnqSl74Xbo<4^Xg$t>C*H zpV0H3Mb3L3MzB#`ZKRU}m44P!8}$djz}WgvQ{0Q)yKdjEYF4uRVoqhp{{%+h07Pd| zsuV4z{T@Z&x4dEtzM(W5v%q=adYLG4X{0dP{g+~KmoTMz=HAiKL;i!^k?@ABAQn|i z%1W(h({nKE?OF7&xazKU5!0|Zzwr3U6O(k~#Dg?}hHqc}nRDvl4Ra#ZwsmxJT3N{y z`&iXQl{p#A7thBCnD@H!MbZF>k^y1s5TEWbaX&T5ar=S1hU*~`VEgat9lOzGiJ_pL z%ti%UvKz8?2al3z%n%Zil5pb;W&1k_oiL?y2;vJm80}^j&76K`f%JArOA7;9_h5i- z+#?)pXrQ9N?(rM5>LSp4Lp^{{o45l2HG^ZGrmhnEzJvl4OpyP zDTp+QEO6qvGj+hN&>P4k(H=Dz1%R=1cXo!AM5QhwQc@t)MCe~Sz=+e^36O8I(*Pap z6sK#~0jX?uXDBye1ibj#$si1a=(1=DP=K%DGSuz|)#RER>?E9HqriYxi3>y`up7}1 z1`~aKL>lYRokMJ7((cE9e<>)Bw!V!cF!nNMfJQz%136K=qH9J2dn5 zRdoVWd%CZxYCAX)9|JS(BkuqFelJGx0hAu-YP?Et87B(W2yJX^Vov`Xag+S`zPf zE`@*1LVbN}tVBNs?&QhPMsfHflIQN{Wj-%9wPi|KjsEikOxS~mrtekgu3Tk%pl!Wt zXr0>oMSS-u7umS4{u;g2v#VO%rpc^V-Z*Pt9&)u?So~$SxXWGKsf^QovY#|eO||`w z{tt`L^Uv8jod5s8(9In>z}K0-SZdg^KEvj_@g>XR#92$ zBkz-!n4X`1i`!gR9sd?^H9cx?;irJ-VNX|92fh=Nz-YZs`Mm#7FpBqKI59anpxO-2 zl%kIz9~XjnVyx*22neh{h697U4Fu}M&MEwS0PG(D-8xZeN$BP7?hYdijP@=rE*PMP zCHqE?<09y4KpjIm05Ds@90wlMo|M)q7h50~^n5YWDRn;Qua&W{^!TS6#%^-ql^KH6 z%^#Erfb+`a9Rf#Z-soKjBOLtZocwmGF9>codi}WS7|<4h{eJ8JF!kQ?T=wn%c%jJN zGP06{l$Duyn~AbRvbTm2p^%j=D$2|(M3)g!vR9Io3aQLU3XxRO_jz8|=kxpguE+h) zb>H2U^E_Y2>o}h45ZAiKOMuRW1qJ15d9)(OZ@z0U9K6#f5dAoInY(l2z}B|TPIac1 z0e!1?z9nLb{T-tfPuF&M|LMrTbuXubU0nQknFUV#)?l;Hbm=qZaiCPvVSgH>jpq7s8iZ zd@@2+G^Hi%ET)r-y#)^aIck?Ri#l!f?4aRTjb+S_b8P{5fsgxU3ms&9aS@iZ>GMyO30!pVQYOA zWUZdr^bHeaC*pd})TR{T634uNS#&8INwAITQSOvWOP^ldzlE%C=z?b7Ffr$4F`Uet zWYLEQ1KK!n>tu9_aP8v-(rJaKv?}=x(Z6}!s`8+fPpwVlEIW-FBQ1~|L1RvHIa8n9 zXQ{dSwz;i1uWM$=?*B3nb;ZLu9czYCsYXX+rQcCJW^4ri((_zI?h=Ke1HxR!9{ae= zZjy5!I!kC;2DxXsnrtIA549B34&=~*aE^-;-MReSSr9vWEl-`Q8n|@X77ijDu#X#x zqQjaTTwJ42&_jf}->P;Ax)#*pGjq9W?}e@l9>^co$(=lF3v|fvPzQTtx?qc#!q2V2 z+^^U3{*LbGN*&F(b0DVsYm+qlb`K5p2(@^w{z4BqiaqzI7E8_*CI4fzDHA!?Y?51S zRV4De&-T=Yg5_iTw+rH5K3_WgFhbT&82(md8cg15)xITs@AB^Qw*Qsoq>XIBWmD@(O!1)=<=h2*Y8eem(*HgJLRm>W!8V|I8xA3B=354({ zc^qA_w3HM-HN-KHKHEyvUeKXu)_8TWQbeYoM=!b7+>-RpWbN7>6Ia8c-)6xxo8@Ub zKelvt2bw$?(mQLnbPzP?%x52K>Ge~OrDgbN{w9JwIq*GBYy;)URTSc0mFxsvT@Kvs#vxJuX$9tpG3;Qq03$UcA1?mEoIqp z#WsTDOgEB$y3X} zcRb_o92|J{eZZZD76QIQAJZomrVWx8=T4@2-zq33_3`cZaWK1CyPcY%89Mo4iZJxK z5SqLl7)ah0DwSF=QunuMaQY^9tF|hYHz1kLj_R?xpa)OhE`^TS3+@SN#T!7ys`24|w5W$o9aKC~H zA{3%LVf^vp)J_3Er8wV|sCO?mtQ^YjV*VhI_v=eq#iR(IRqBV41nr;o0b{3zbSscx ziEnTqzjJN!@V>Ekx+!KIq(Y;6F3N$eEgE)m&ytvGG%cU8<%WG`E!l5kJMP0h@I*t zgp60OUWIpsL6^z)KBS1Ci#XH9>I0;w`B&*~?%}oQ*FrO}imYat8YQ3B+B{FV-jMz! z#Tbbp1ECwUaU_i^Ng(&F91Hv`cJL5~4w=ITHnzDg4gdY{ck>6*8$SP@#!t4z>k#}$ zf0`ZhmeBqY0{t}2KG3Htc*4cY z5zeIR*O}R{5$XFs@;Toy)+E}vYJ`u7rjRkXSZx7X?MhqzK!5J|g64-8M;RlMJ6Y#D z$)v~LJrwJ`@57SzsH4dtGJ)0Z*n4T(Z_a}Jb?(mEm&5k_pPNjg#Jr#*S|>{YAt4`FwRh#^yILVjFThLOPW!3W1}x5QIaAkf-MD5YNG$f(0Gd^-_h2lI%dn_D!wLQTckQi5@8s2tN6j( z>`;L56~FL+J`-88&Je!Oq@<+O{in=ynaEI##@+>LQhAavm-hpKnHM2lxyL8*262{8 zsgZjlyN?t$?%?>--t(`VYfeyEPOnJi>Sekn_9vYy@AU8Ka;5|wGUYU`zq6nF9V<1MV0F7k~hA6%s8LO zCF_o^SweB#Nvq-30I+wBmz@*~Vw-3|<;FZ|cPX;cf7FzDr)9~QFrsi|neqIXt$sQW z_ByldB618vak~^7jQ@*-F$#Jb9t(Zf+n*n33IM_r ze-cJ%_*g;OYioBRQUs%ffHN#~j9;Lb0GI&A_zpe+$mb42>HQ~a00=ad?FL8IVAnYo|6+hyTjiql=9DzB>%UhT~~ck##%Bu{IYOXe$+o$e;RlkM~v_ zRy^qF^tlCH>hryL>4`x&(F|3rUmT1jHynoNX08P_T>MSYz%-^hAag|YC|6!>9x7I} zO`(wmMr`vORWlzh+65B?bQbl7-r(T__UW5;QL9*2ESyTSiQXq zgN0(jrkoc|isf#%4`H#zu128Q8y3PzC9*%89!Uf;x?iolmocQ9s!N_yvDHfT)6(8_ zNV7t#<~0On2Y0A#lDPQ~9ZL1FFb8vX+vn54r1-$w>5eCv3Ir(ftaX_?+DAtp*WLNB z6iP0f$W8o6`yX9P3e`%ybBACc(}uzqXsDqgA*Ac z4m4G_Z+=!BpF3j9Uv;pwEbg+zyP@G>lOlU*38xcs#VO*4@9Nz?7z+8Q%;isow{9mN zl*{?TzZEjx-Uipf#*mPQDQjl#Z^pw%pDXq+`d9 zR?PJ4#TtmnO!8LAxMki~*3CE<*28}+bM|QD2M;QGJ{5>*dIDmq@$cBRpB! z=0FM#-b6o)K5c6#kej}%vMhK6Gxp4euKSbA*A(;hxzCF6B-TIokokFy-S3bhNP@(; zIJChI9f?y643!mS1E$uTM#TeuzdXLq-uG5{Tp<5ITzoeFL7~2!q`fn*O}}mb0WGTH zHxJ#6|JX+ng;7#&3L@=axZ@!ia*H_wYB6lMgtfZ1moNJW`ZXY`lOboo;f0BC--sqr zNxjWeJkvA0jFvJomd9e)h$i8vifZsgOC-!F42enDsdebPoz|84=DW@xc1c6W62IQ7 zsKr)cvG(Vrg|y#vnZDVrgUpGBlNVSV^XcoUrcTIg-7s|!?Si(T5r?Wqp?)JY1|XFR z$?naG!=dgG(FOa2ukH39Qth6it#KU)>)6Ijp=QFfJLKbW1|$8xuIUruh}UgNw>jA= zu(lvhm+c}TqJ7P5Uiu=^L|_XpCgr*g6)kVbeVFvXcF!kVyaq+u`2(=1aZF6SDfyZ9 zWWb?AYpfntf8RgX&*+zuDIWXvh~1ZI2dzzl-Tm`b)(0MnINn(g7xwe=o4z=fPG%hP z@xiYP=%=awnKafy(Sl&n6FV(XCp_=&<^J3qa&mv;YTp>ss{-nO`A;joLN*FAnoF1V z%?=FYs&@jeY|X6=IrL-UVx)WicMgR0eFtoIMG#(?w9RhX20_+1jp{8B)sNlWGvRAxFf@!6ifKW@PX!9UE!C$y{zasSFZ9n zW%}lhS??3#L(_!^FQx1g7sr~QJ^(jackV3C&B=d$HL}6GFI3g`{Q1rR-VlR_SQw|q z)q7h(>|i-vfwi^W*L^>~{&i}!J2-jJe2}k^iAiq7v2ME<1rwViUbjqp1o3C)9X!i- zJ!|N7&i#eDSuKVTcZ%tB(La7`xsPTBD67w>-`9X#3$$wR?=N!LxcK$!X2-@OXt(+z zKY5lvVxj(QxtH^y?dR8_|Mc9p(CV}k^J2_6=l$z~$lH?F1NzEEJY%V{$Dvv{ZDnQl zkF~zBo}NAcl<6;T(ZRi~b(6*wa_hZ34$2VwT`ptdy*fHN7r)YMPz?Dp`s&E*e{MW; z^rXqUe1lf6vGuD{y1 z1+@5#Z>Obkvip6t^q0@8Xzr{vsEBKNU53nw?mtC4YV1GA(o<3OU)vcI7k3OxrG|>I z7=XKKXXL`d0@4R`3ylDe8q;nlg=&bWK4-i9{nNw*6Duq2 zp5&W1&CQc?qZv%wvcye3TE-TpGHc(Zf0Z`S-A3cTMkqwireNm)zDiuie|~-b2i#DR z4k{0{dVhzanYR1T3Q!gro$58dkH8eEefys2@^>G&*MET zxNf2U=gAYmxN4^#`>F3qPEQYWmp8tVUN%r7Q;TpFBXXNR_ugkIGDMtoa`{$r!81E= zJZuNu;h@#^9Ths$l*Q;iz;gBWN*q4?$87p+a!Lw-+z?Msq#$A++ok%`8!~?b)Yshk34g7f)J+NjC*#8nv>Bp&0=KxpGbZwDeuMXcge|* zwUvhhtA_V9k0tQb%n0o z4Fiw3^jR*)KReL9Hl)fqvs#Fs?_XI??m$tWImEXVW|-VZT8cUZRaAl@t#|FF=aMNp zQ*0?)l5}={AK(bqp(GKCei4fi1zo2dhbg@(DqLE7t?E4ml$0{0Q^?XkVVDMzzDv>X zrVef6+q+p7_Iu0PKXtVKB!uhl>z@VihN&ACx2oU}pK*IyIiO#fZ27rl7`p&l6%8(e z5efUt=?ZaOd9SfmBq(IULh=6ndxK+_OP**?=X+P)1-KYw6`cpbz6&lQWkv%vP9}o?w@gU5n;lkW^G0eg2#{UV_PU=v!TL z5t=2qPoqO1tW?8snocP;CdSLhr!^Q!p72m=LM0eITKG{zVE4(Zv!2gxjGq`foIhe?qfApr7aJB;ogbdHZ**CU(v)=kfu6*H z*%hG_k{}a@P0)5FQe?#L@X=`LwC(?m@Y9$C`?Zp!fO-7)j5d5;egu!-+pN}p-aJLu z_t1h>mGdS`$F&)~J%%+Rt3R-k_WTDx?MSg6Fz@c}MoO}p;*k4ypyo_;^K^YYfS|*H z#i*_1Qq|flMT9XGPo%xXqrx?TSVWrx)D<7luD5k`RLV^y1rg~C^z>I%+jv2)&@4wO zJpk*{f3v@Pm}&I!Fo)oi$Ji=0$|fbFpzsrN6@&Z0lI6>zuf9NaJofKXYM*wXreloL z^xr5pai3%BU1dD2eJjY}{96d1FgHf{sxn+8r$ah)x8+BWzkP6gnj9=bcgd9 zLWh;1t*MEZzJ>&KY*YcH1(3=0v1(E?mEqjSk85a)NHnBWm>4EGN|@Xk+Ajn0A(2Q) zEf}wnTJz|UoTH!-q8nO2PGE8K*Rjyrh@F^A&$_#d`o(JB$j{$BnPZR?gwFEp>(Vqm z;U}IGWJZVwxtC10z{EXyh5wR{5OnIXEWb(V22p_Fp)iCy75`%EAP~V;CXoXnkM2Y|k)HjKOzRWovmQrHM5J;Y@5O z+iGBL+jQSj_8KWEb9=E^tLPOrB0RL_pJJr=6Duqdmb35D+CoeXOIsc?kycl6;Jazpq~Hxwq~sM=rqSYC}gw%wFTCN(v+rsmKCiQW$8 zTh-fyq+$*FOvP@Tg_O0ldmoJ;KbN2b%Nf_32ktUzyy|*`BJGPm2s*l6%dJTH0MnG` zV4u?}e}j-|B>l6P-*@XI-@_d9TLoJAp~A-ZU)f7ODpFe87D=hUy*bLDNQV7J^-B{` zwo?*Op;Tu$#fy$QH@8wU4ZpQ(I{!{Ucp;F+2#3R0RdtIv6^XjMDG@W^z6jwsEr@O6 zhSEhGb%gAx)aSS_T~hLhDOjk!yL>Qmdl>r#zrl0%d#lT&J&f~R&lu#yRoyssm}6tI z9DAO^FowLMY!2(%n2+Lj=e>CGqH8S_YXom8DJdD4X3E4R2Lb0}Uo*es>)*LQed2ul zqet}rpy_DQrU;IzgYDZB+S|=WpE!Wh}X~K*>^3 zbw#SY{BYf4dG#Ooa1<4XeXe&|Q!5E2-;Xn6R!~xyZ@6xB>q9E(ORg|;T(!;Fnu>}J zg3r()B^~60L>y_#OP|rec~5r%SSAU3+s%Y}D9XzhUDP>I^q>ny?W{}LcM-j{m$ z>xlgAloU2NS0gF++`>ACv!W@w&$CNxz;$m3Is*lA9Kp$g)i>qlO=3lmYyd7Te3?|$ z$OsbpIzQjtw7uwkc@lq(Q!7t0e-VV$&kM=?uI(icBHz^!AiDj+iIH8lR0#=jPq=;M4okCGbL`#A zXLF|`fh*-c6(^u#0->0<&tp8L##93p2-pDsQs{Pxdkk6S-&R+l(&|z299NxF{NVp3Qh82W0qZeSH%Bp(v_w5e@3nz0BP9K3!7L^@vNcy+3&=;tdj;)PNQy zl^MiF$2&%n1mdZT?!W4f8z#WGr10n~Z54K!MJ<9#_ ztE;0xe+c}%U!qosanwW`7%XtY4hxTnf01REZ1{fq(K9@sldHoM1Kr;f;9qK4J+Haz zeEo6+63RsoKk-$0$oih@87Saq-^0Zc^iteDKuh zqw^s!F#-)i%X=2V4Vl#<04qP>#e+bH+%cMfDoEATWVH9%zJ>`6t`^M3Mlm zDE!|np;`oiQM={kZuU3rkA0 z`}PfeZX+ho-1@F9Mz(6u4Wdvogwd+}RcE|=MFZ0Zg&{q(3YZ-l8$j?Nygo^qtuVe% z4gk+3#OA+|j?R?_^Y5O>jWLD=rgU87&cY2iHw2XH zru_WCt5?-{o8ae6L`?y!Yw(U?^I|Ws`?Rb@XGjbuK=O!e287`sgs$yS7y$~OxP@+T zj~SOkjg_Cmx9W1^R^rpXm{`7j? zU4HrJHzMEV)A4NOI>9M2!XkCKFj4&xU{Sn0?h-@6#A8iT4(8~HU zOB6ky{?VgMmX?I&%1*|=%8W%a}i}xQhLJt#&cmZF2JpOubv@OtXY~N1iTN7Gj3%ZAUBQH3a7#%ArruEwqvdSsLG3zeTMm z94bo&&Svo|Z>=dyHVE_>V**qwMde3XQ=2(#E?0#7-9+oJ2URj+OOQEcrP}U4n{^S{ zF?Ryzi%}LXLF%US1?8iB>he>_whT@ads=#J8-pQwA_ok9}; z(^!^rL5QQZXq+@!=W`EYqm*(ih5)7Sxi#e;u8Kb8l^)n8DKDz3HlYZ5rs3cpiOZP{ zXHXeNk%5LLEj>N9)f>ugl+fnH&qUC16glNzWG0eR(hq6wr7~9gpduW72NZ|&1lg5_mBtbp z#7>HAbf2oG;G+KoYY(gC1Ql4X&h}TYu#p&FUOy;pz{8b=3>z79=UW zik|<1Pb`VP=vhvtIge}Qpd}5ive0q_|Lkj*Wqu#`yopYs z7R7@~+aC|({e#m=wRX^YllCoTYM9wA3>Du{m}^m7(qswa?_mr?7o|~HQC%I$3Y`$L zAQ~`;1?Ohwm~7!_#p2=XIC&&0(qqhm@Gs+LG@tekNT-+2u}Jd{Gg?I^hkm}gB4{nN2*4cx5arIx?DiQbrr%vQN^Bjb76 zg{DitdN@Iaxrpwf(vHy}`*RUK(`b@^GE0RyEzK$q55DoKyl=J&@E|x{%M5ii5n)Y_ ziYwy}g2f%J;_%zI(oleDybC8T?v(9=x+1J#aUC5UiHW-r&LIf0tULq!0|I2vP6o}) zzk2s%4bX#H@K*WprvuF{#F_)$y9E}Xi?dl&%@1K9C%D5G*RuE^qF*00)wW#=xI zl@DuQfbjnh>u2hCCNJfjUHZ+NtU9U-TvGI@Xan0jJNF6;A3_&Ux#D9gYI^RR#3i+O z+S@_|5npfD{j)O=XFCS{YN{f1P$={!fH~1(!{q~hqs+!0gSX|y# zIvsO$Eix)bm!;rciEf2W%nT})uLx+6$-y7`n68XS6)O?{tZbHIv-3n@_{vR+K}_tQFDfYHrzP=#kk&_Uk(&~xkcS{~i_qBlBUAbHnxID_I zIIa)$_8u=fRnNGOzoDv1S|is=q7M-X{lr>&*gC}qBQ3~H0E5cLYiZ}w`#(Q-12c;1 zXI5sdE3fyJuBg(Q`q|Y>z1}BOa+K}3_SsNTtuoEGoL13CvIdx$kN#-(5EI)NO6D-r zP0=kjm^@iH$bP%(o9Yen88)^4IL-B$QVP4{gpc`O_iPNQs%1k{;9)Z9LBG3DVabBx zb}SP;D$agXXtJ|HiH@0(w`c|)nY?yZV!(xjb05#IBzjsB*Fb^{%Ks9P5sAO zZRwj%jTFgKhSAj9sP`SQv9>>HF`~+(+h)(r?U6jUJf|5x{o=;V)UB11JE-hW71ISP z98nt*g~@d{(M!2AOS486>7rR(`Br_0Vp`8sQ;2!w=-Hltej%ar0QGWS5NQgQB1DRceF~!4I-GUr%()VoA2v&u*Z>E!Gz(( z>#!wsZfff7gVVp)b}8x<8ufOoi?b`p51$$|amq_YkF|3vp_06DJBBbDrCBJnM=`j| zq(j>kk#*PyJ|IzA3GobUEkkU<^_AN@pNf>?duRJ4zHA#o#je96UUpihvVim|Kj36i zyIONI`F2{-hUq5;A{V?bFjBj*+2yhS|NfA05t9-V3yTp3jz1wc;(Pa&dwcA0;}LZ4KgwV8(n5S%GU}VeW<<})FMk#>XH`{J^4b^{ z-7`qr+jvnU_)?VckzLkUpvPhDUtu8~!rskjX{o57GabHaA} z@i5;a+4Ryba&tNeTn_e&l~z~<^9?DQ8krB#iQjf||__Iny8V(W$rJLqE;8K3m7Y|CR# zwUCt9CcEc4Tt7ZevIB;D8Fd#PH|$xPr~iTJj-*~qed@&V2R#=KBx8y%D<~+y`$u0? zj^rPZ6Y5uKCt7;0!c?J~Yrua8s)Z!e&3M~Wy{3}FC$fq7_Fm(gSO$C2CWtK&ss)d^ z{@fl{4bco!kP`n+!hAX`;g8Zf6M3D2A`BvG&e}XIN`CbnGof{`%B=lqI_kKyUayhjEh$R2U=1wui-QFzdOs0he_5AW^@41t)#yt7Bco%vX__#3sd z2Po7IY6u!S9nm};#INrdaP8~r`g-koju7$~VfUS9-UI||vgR5(^Ig0AD-B4&D<9tn zT`q;sx&0wp897QkVR8<=m)$tfP{j=@lcW)Jgfcq z=*);z@P@y+!4y9?V)^md&LIX}-19s{CvtKZF^!2|~?@4mUOk=-M2b z+N2gV5>V@k7>eVm-NUzli|G^uDjA2yRHKOw{Ehr3MvcfT00U&i!M`KtNA07Rg>|jx z)--}=d|8SJN~Bj5D}MeXs$#Y7?zW2N!$AM~gmz)`;;$O^U` zkC#;lNj*q*2$LDV>_1e7KWAo+SYG0Mf8_62mvgF)Qg3OR3hD4@&(d`9zJuM`nPPFO zXAXQ><>FcP@jOdI_Pcs%WQMgD7p>Xbh?R4>&rlq6bf|)JTX9uG zVIU~NO`%r1Fk1Z_;{{fH3NzU|wtUf_5C5HOoH`7YGEZUZK;(Dy+QV?t!o8jsks?^u)pRzZa1 z4862Xh5a@jDBD56xgcVzFH7kMWLeE*?K?ij2dQNsT81WdQu`w;J_qWTT42QiTT8Yt z;M??3M}|%cO?9)8E#0GG|AwAMdv`tW>w6Kj%DmE(_A;c@hBE3jx_*_aHuJ-gxJCf! zUhwsjGIS9rX@9s%n{fA_u<%`Bu(6ds&)K~8qNP&#x$1-XjCjOxoaAuuOT-822ooF; z3AaLG!iuD(fq`YDn1TSe)q2lfMAIOPuNO#!wSo(d5-u0K@Qy+^(!p9SXm<| z@WmeEDa7X+(nC*YxzWYHg1~wC&FC$4wEGFz&3;jykhyTbEw2F*OCYN}-&Xiu92jtw z`F-K3Zr;`AYS}kC1Clb%m^6@bOX~(A+RNP(dP)39>QwRhCF3%f`iQY^Qn`a)PVUwb zmGj8egs(FlCu_(Q&`;YB$Vi3}h*dNZA5Sa7-3E%?K0{S0@Y1EvHC5O~s$~@O`1~or z_}o(Tqi|-&eczDO)uYQZ_#1PiOSfQ46m)gQ5j|aer-~^j&!f@|Gnv=>S7c>DHNyAM z0ksGZ=41!0lSmcJypnPh4*&t^cGt%v(MPpH;J!f`@^i?Tv=-=P)q8`2s3ktyXn-wL#|J_thxhBO!^-iu2te@unj?HQkwqI6Txvwd z;4n_W>iG&f4IzKPR04w65Oj|HUe0Rim-nAqOO{ms-yc#$RJ)}&yZxV(Q};(t=W?Yy zj=6ed-_7cM)S(4OZ8kbO+xL9>)wi?bg(+MN|5(+vj2V!UJb-xq1X{a$_im_t8R`)4 zNGrJt#CS#fQ_9t>tkbwdpwxbWYZ~`T1xJ2h(kMzhtN0loydEbtI)P5Lv9i3ErZyD!3Y`_VNLAAMOHV=(EK$?UMk+9 zOB}?2=0i9KbLvG%BidK5A*L2wj#rKWW3LG}F{A^?C*@u`&>>lZP2l%T=^^2||fVL+Zf@$(z zf(6-XE<24>8IQ>BguS9-0#ZyuqAQ||8gn`^u;db8n9w#XT zUyqg0F8AtmIyp!F`_b`bwZnW8GlvgwelJg zbf(=}SQPCOoJR&x>Q<>h$e6HWTG^%K)PJ9gu4b8plulfNH;bZ|&t4CX>W+1?b0pOZ_EJTW&#qQomj@1@saS+6iq>N+dmdnSD&tw{R7?qs$`FXHzTAzB z9I>zv=QOZ?&#S$@oAsw&x=f5univEPkS_)Us+#@Br~mf9Mc!oH=8<~PGSa9&&d$Ve z|EMha;TkhVou`{%(8kLWqjAQaQ%}Uqa{RpOHb@{u~x#X_yk)vYlJ6bgU=jrT0TEXADV+(JbU!5zH zJTtr`pkBwB(^QsyOtWF7nZn+Ulyt2wrsd6S!$2wLy>mxdneSfxkMI$_Y#9A(^1H%6 zZZceUkBb{clg;(7* zZwE29ijqASd=+uy#@ch+bmcD>Zlo6&m>P)mU2T2#)9^sPs_llTp83Oi=SZfN)a%!! zAo`DPL3|#%6=E3^&G<6@Ot=taBqS17GOpmSr=Ah~bLJM}8?lJg3YC__b~}+T0*Vdc zK??p${El~;Pj2NjzN;5%4OrLyJr?@O@Phh%R)1~x|GWc9M!~PVqilLZBV%%o9<=($ z$!-epeEoW@Ayt4i)ikoM-W&KwIUtnWx(K6umMG^z(rB#!ZV&;MRqxUwHLp*fyGBabHGGPKA)o4Ukq<=UG+^ z@4p(pj7Aslz=1tl^kY*nZaw|EcDVV z3!pZc|4@8vY}gOHIl>B$kL_dcD+%80jEp#*<0#|!ZN>Eyw5otaf(_w(_O0>ji#a?^ ze8Cft5GTXMyGhe^IcXeV^ZEyaY`OEizj;<1s0s9wD$k^}G?ps4BjM@teceVU!z%S_ zCT^n)l_PK8u87%+<+9C6@tT=+oOo$|TkyP8+5%itffgN|@7}$uTy1!U+YzGmTnup- zt)KPvMHN}%ivj_21l>A@I1CJe$IqNufTRp8CR0_dN!T}^3m1S59-a-M`X-Hc?^+3F z2^BAaFKCr19=RS-m2FI_?u?OyCWM~(!yvUu=U3E>q&(O zslxpA2HXNJ+O+=PwE2Xk}JN4`56eP!gm*sLPtTf$9?o+M707KfxbH4 zFjt^n^8A^9z5d0X@zo}6yX@5D+`=yEZJIW^`1tkC?&jc z`}5_|2Sz^j=#y;+dU0x#LLAjaSOsPME^pD;%aOlR{&rGX=IsAI1$O)QZEt_kah1nf zabCP`;eLgrNzW2l7AN7^)pxt%${KS_Pem1Dozw%%!|3i1eexbdAJRe&5;54hg{pOV zOZZL=EJ3|R1VY8U@a{gka1+tU)`0=0>ooMynsd@$wvP@JT{Z3%Sm4i&?ej}WOniO5 zUEr~7Vh~4GunpJ{w4*j3`t6XB?mdWr_16VzBG;XA`@`T&hZhkdDVG7&<%Liv zEePE+`bR=xQO_8;u)Za=kU3dLXk)Qo+4_ImH1XhqrxfgA$JIs|E#&pPD@$&Hnn*f-CuOnonLjg*>;eE}f59Mc*0_H5T#Yj6U(a z2+hV~)auuF88rQ&{iswD3yY1n_Mh5bx5Ev&VC}OniKrADq0WDTvvkD7#QZK_iR#R+ zDBF%Ud5Kct|9&Pxrj^e`wy|0QTXz+kWR${Yx% z-~M)(rXXW%%PAXHD6DVmx6R6 z8nc4C<39zUH!GgNnW#g&9|6|KNt#;jzuF7E^vth%RYGfk=vR)NJBOj|ftl|II`yP0 z(J}nf)B)-;Vq*94xvD#1y)9MbE~IoMB)kA|ih0t2n$-o*b67THQb$c~Ya;W-D^k)- z1vUpO3ar z2<$I+kICAtc3e#*P^rIr()sf~HSbo}1M?>-idX?_WJ9l1XR(JW@3o<*DQB8RruJ{6 z1K(HrRN4~`EOWZP{p!?f$!ls}Z@K$euZm2g!Jfr|s@YmE7Ww;M6KZbc?`ZsjRJlRv z${v?xcMcbAW4*(|@ie`oSGJO)BkAF|b&X^7SFPU_L3|fqKz?~Wy0%M+oh~0)H@Ov{ ztJx&9Op#f^F({t@LL2Rhg@&Nm=Ee6`r$1MmfAMUQ*FZRZfrXVTWnoN8gald1y=<;$ zoW9V$c}l$8vd#JNo0lou6a+Na&B4mnIzGGJd6J2YIkH+^S2wn?F+@Y74L|b9GD}~8 z$3$!i;!Sb3tl~>5!M1{-B(V6M97=9XyAFAd=iJo~5{LbJ_GC#_$?x7=A?g*0KY6;1 z`x&W(kEi#9c!{&e=}9gQZ&4~PGu->zjA?qS!h~`}z!ch(_hv^LKw9mBi15OA)7Bap zRtIp&ONf-n+~1`EpQu^1hM>oLE6QAh^~qz1)Er?Gb*js?DfVHh+cITvo3BAF_{8ro z)xm#$Q*LK>n;BiE$or(a_3T-_w|o{%Nt7)5mBP`J7zL#BAk+Xn0rGa^jZC2zS{YnW z*gV+L(Qy}`5}aW6`BqS3`a+b1^&g2ZCR|Xg2p&>dna688?aqUaT}jNHtb)~$wAlK% zxXhx<`F2ax*3rcU-{}XmaTS%7KrG*&Kqk$4ce38Sdv_By`b&|#)efpk$A4QqX7j~9^3UL90x65vKJ^c@Wp3_*`}2>ZU~)>;joq`7hlQwP_R<9gosrmpuf#w($s)7y0zwy-@ozuoU(vK|W2T(k z-j_J2RimY)MSwlO+)%*ao-#Prd5tfMdGLTp_mvKKgU#??FEbJ&gTe^*Rj_i$ZJ9z% zTpq(u=@A&HxONF&$Q7KEJKb~Ry?sp3M>Yhe0i&KdLEYOQS8-mH4};?Be6ED z4j#L>=xsAe3c&M;pSmJ1LgQVDZKEioxNS2uRgdOU5gNLi^ty2AL+>Q2sCJz{n@7mL z;^CYSgN@AxkhJ~50i^t%Cyx)!4r|YsiUv&`%NMWxets?Y=NTTmzgx+(?|dV(VVc~; zYWZ1ZNV>N$M>=mE+98t$2R&MxzBJvaPvzMEpmwIYIn|09UaxIj-(V|Mdsb%slGt&+QNeW{gUV*H;11dx6O>r<)e zk-Ud}>!2A&*VY%5PNlaphIdy|%l-tfBl(HSGJ_L89t|HtK2 zPR2!D`)Z%=_E_}z`9`j?uH&Um+VbklzDjL6@^gE&Fa4=yA_BqR*;X@LI0{9Bz(qK; zni^KR@Rz6lk=!2DHRC-zqAd^t#a{UP2Ii55peKl+lI~M({pkzY$@3R45?1E?EtGyv#rMtJXLo1c>l4>v0SMMtKQ{nRcpPyPadMpjy{v2*o^59}jFSz4v;5f!D@ zAM3t;BR{Aw(Wcjivs}Bz15yK5J-f4c1|sM_9^tkH$wY+7jh~7=$g5&CEoOAaKUOP0 z4Xe5UF>ZbO9V1aAX6c1f?`St~x8Mv6A#)<+?`Bel)si|K97FE1+{U%&#ld-e=AH?p z{H*V}$n!cTNlfPdi^#v`ZreO3r#MEYRG0Y?XDk#}n+4jofHbQeK+2^+~FN%x?b zE=Pme*W(QnD1o=*I*X5sduj7Po=ilT=ZxM&!O+}^ zYY>UZURhh?m2&Jt^D$x;xSq%OmJt5pTL2Q^l6#q5+#HtKYk#&=QmRXPy^b=OjuVEr zl4wv0_QtZXvOa`9u1IhA7;9vg!nZY$1XTh-cpE&57mDuR7jv}1<(R`^CGd4Zpsb~j)P&3ZtV2|RD zW)2nUNtsD8zt+~-e!A9w6YQ1eQs@1pX8n2ag}%17Xxr95$iCi zaDnuEL!}Gm5(xK}O$=<;g>_CKt`gedAtbqNEqkW5Zc0e6AtQtSj&1Rrcw$2tGbiT` zg`$%Y#M-;eI7-KgW^+|n{SEq^2e&kqX0UYThSfzf|H0=oQKVzGV{!-KbZ8%eMyy6A zAgYsCoekId@T2pMP(RXhDwZC5^8g_UR#sNJZ#Bf(>*STv?g>&DoPQv3yuZ{*WRyCL zHHqG6x2Dc*a-0pynk{TMb?qhlZ##SGP64c+iDPr!wUK&g&Jjc%qdB^vhyn-pHoQgl zzxoN`;jP#uht+Y{Yz|3riLk~3cyX}liMz0*gsBX>jh&I|{vHQEM=9-*2BLy;WxrD& zfNyH|?pFT$PCrcL&I~gu4c__z%LRc>`K%m0emq;zx5WDYvG$fxRc}$-Hx1GyAl)q> z-CZInjf8YdBS@EYhk!JKv~&p~B`F{wiingTrIZLrymNc*=N``(@7L#y^Whu=Hhcfq zT64{LUB8PQZc#q~=7lg)Kps-IEsXyiJ|+W9qc8-CqcTL~7;q*BhA{(4`}Y+5u}Z=} zEqt2w@_G8Ea--UOSdNVi^J_D4(^W#W!T4QQ9h(3N$GOJ1+WOj)BFCPWhGrgj36+66 zzlTH=@eSI2^2Zc>&}t=nDOj|Ppi{4{%^S&mE7l*>o9r8M0aYZcI5&_9u2>PJV43pn%(8?5aUC5~YJlxHm)*qv`Odvw_JB#AVQ!QM*A?tnJ|J3=(}bF(cG(Lc(P1rHP3x@l7P2kJwtG zN?Mw^t7oy4s0S1SAt>Z7KCxXC1XxDprB}!aQfk19U{H%g{f(;AH^_AZEb0z4W%q#} zS+objd&ErTXuh#`LpAa@x_qSEq#P21bSUciFKBltV$jz^o%>EWEbKX~;9lGs z;J6_$4MM zLq)**h6%|MEJ7BuQegQ!9b|1k^*H{da7!Xht&E-W1pSW+JeebGg&CqhpVPe0Ubhty6c{*!>Y?946 zRxzOjIo2o=lM+{yaw?pib(MZ&?ZN$$M+zhwF+)_sA6^W69)iM=s*^JM$q-hbdht7K zM5|vxmLQFh8LKJk-y8;h1tD)m0DQthuqXLbR7?z^I6wqf0mB%6SMNry10akL|M}mL z?f?EONdJ2Eh`;?$uZH+j|9aH$3n>3J^5FOW8%V?N{qG@Bhs=gG1uE8w{OAweDaL&<27;MHCIC7X&%kA70SQd?IIOGJFWij$x`zjvMP_ zvF-&{^d7C`S;Mg0#+GPG8cvbK)@#a&c;!Ef)sSi}I8MJL;Pj->3FJBHX9^`n!nsX! z$&=uhODpl;kDV+Uc*?i!!^$yQRA287n*6*W)gtK)Q>ETFZ=olCuV&WxH^Hr;vwJ8+ zAM4D<{Nuu=U;vr7_Z`ML>}|UVutC;qKq;X8j#Zl($_j2)VqS^Do0~TzHQ->ddL8=O z#Xs75smWf8>=q1*^KjT{Nb<{v@QI^XSD>v6cI@%|%*?3gay-uj+-|~bHgm*g9B&BP z{Kw{{5iU$ec`y0l=D+^^JBUWXjRe$lF~FG%p;Y7Oa6lSGs6sk=bw5Rtua{pxihxe)_^tqh?_N8m`_pLmbyd} zKYcX^kH;q(Y?T9TJLDQJoW6Mfl_`~nyx2Jr#-CnECm~m~g1iZ|ftYGlhLIRQzOgk@ zXJO%^+P&Ezor$?y2ggS6K5OJVIr8HWCMzg`;FSbqZR_`U+V5UkW8milPyP2kUG5OM+U1LS;}fq4n;eKB(72}~ zC7lHw&J7Y)sEh0A*ZmQf5EpycmSIu{4X2AH_mf@Y^&`+>x7vU{FD+LENvf|Z; z)olBM$in4>o8jNeP}~j-yUV)O6|lMaCtN(f;vzOGT_+3Dh0mYwL<5*<>HSN%{XutJ zULo=5IUPVym!R)QZw_4*9|(n;sB+GM2N8jRV=)gb3w!Pa?Ujmxv;4M$kO8l#|<6gxm5vcue3ki*^;Fd=H;U z>Kup|uiBSE_X4G+qO$U8`2t*>fI-24cHrQ*mMB6P=h+S27sM5aQTDDv+Rud+E->ls zA(x{d8fDNSBeX5NW38;DObX3Z#VOK(elw zRLG6cV10K)deeLCqR5@k7L|Q!^;=!edWzcPzJpSI56I-{=_H#gVJ;vc;v&UvhmQ|2 zw(P$H&PdP;ZS~<4uS4A#msgaK@^l;v1U1p8?NQn`engS2+{Y}7s(7QcY>(%v^x>nO zQ{o-akbo%EjVowFz=am!Bef!F-2n^>)JZ>-$inDjD3OHZ_4G(LKlqFk`Py76jN^Ym z5=qCe(6xm7x(pGXIawn577Z>l3PT_8V?^`fH|-qxMNpSkzhq%~-uG3{QkdwEuwW1M zUfv*&R(e?cq@MSZ)!mv))SW#$fYmL)>VWP z^;HiXKWKJfAdX#zsk{zEVN*k*(*;DQi~k7Kjwq4@i6`s=Q<`(Gy~sD>pThwo=B}{w z4U`Uu=?t0^EhW)|URqMp7xB&>P~^fM+$88x2l$eDa#iJ4XUL?OUic0*8cOrAHu+(| zb1*oEz9i(Xp!aZI3q~|Qh@x>m_HKyNW8ujM5z;<(aUl~0I`58`mASSu9RYD~(y0Ii z#2g-XTjBD&^*f&GrkJxog@Hd%F7k@H>gi)fYNk(@BM8)}y@&md-isKIhQ7xSBYF)) zs%zNHjPv4-1`1fEhdJXS6nf9%Vb-EX{eXuHCG1ThftWoRbzsDu)OS)E$#?QZ1yK>C zBVu9{5RHoj&mcDphKGtBllpE=M;-k@q_PfB|Ez{G>fPXA?;*4~po%0+iaRF#@2s{a z*VY8eTRWAdaf8($==PWSl(ZN^QD6#8v+0l3m^dyVaySEToG7%+qSq!963}tT;OHj@ zg!!Xl#Ht`D2V|t5Eq@MdQ)*>a#R-5OZXgbWeWg)aNeWg!`7GZi2lw&OQ7PzM`5w^Y z>>sa5Dt_-pUNO|^t@iPcpU zsWzV-g9#J;#-=6@gA~fNuMVr|6+mJ90@HE@a)d&$e{ZS#xzEN;#0bve2_wEH;m#X~ zKE_=rci|idf4NTsHwp^MlwQ!!j?E%^4`Bu`29k!m=H^RKj~P=-LATpc;(K(!h3of_n?)yB}rjjfrFl#|$ zOK^4)h9MT9I)S&z9eE=I>Ebev)p!=Y;AMmd}Tq@?Il$aPRgHAogdttULXRB~wq1tCJxk_4Yl?=+mLAaP;H zht2sWHt{x@=Mil8unOn|9kiiou`1~DDJ2sN9>h%$JOsnc2yU3oU>u+(guTY}2Jpgr zQ%6QeBlj{ekN`&O!r92Wh53BeuF0+&)kBNMqFd=g`H-42LtyBl4QBpK@Bz=vYzOA)2B*Qb2N*hntPsBSq-KL=VcgKqS9M*Z4b!_ZaEA_gy zv$d-|+jmKyTyfs=%9e+W|Gl`4DEZ3qkqP~0hqT%}&%X806=r9jLLW3^-Np~+Hgb*93STuP5bZ&>@t@~h;AIwS_;n+?oL)DFuw4C3iMl8zFJbJ! zr1W3Y$rQqkIWQpRQPYS{T4T+q2OAi?kIW3FDtJ&KRy;+!Ep6qzGiq2fuRm(kQe~%T zNyAfg>;70tJ!^+?wRO0x%-QP!%gJN!{QuzSC^9_c|bD2vm~QM zh=%OxY2)|Kot6fKW0Q$gJQg2MZr)J5A3KQ@J4t_!%8+anG7^6~VDqm(_9a)m8tQtV zd#3gLDh~X-NBlJ`#F)`TEj=lY09BW@G->R_CPjo02Ka{kIoTVYl=;id%K9{lf8Uhzsx_Cs zz{sidWs1*BIdclz9>AeYOc>}@=W8t(dx|wSMkT40L4OoX63T*Kr?l=z!fMC+bPnsqfUWgu;DY_Z~fQ2NmbyT$EqN9cV*EN&N97iQu+Af%fp2f7#{ z!6R0#SbOzG-z!o^Cb!GOBQ02HD5)5(0C3=;&Om-j{$E;s!UFAA-NHjX z{$4z?(dnfTMi-~=Rmuzc_=^hqs&qVIy%G&QD0eQT@3W`r0Vg9GWv1+GQP=k!&4zcg8TUHx781o@O?|m3gBeenHe%3enT6z%6fXEyk z*f}R3JG<6id2RMX7y+F8{0tho_uN^;Y+P*y26b0i?D;KTC%tEUP!A3E_eUsIi0bI* zfCwIXUaNOewVod*a9YqR zSH^XrO{!{HTn}{)KWOuo4yy>pygL)jnCwfImHbY^ZZD^JMC%viaJ_P?tloR}4(296 zPI8uoyx?3=d*=yFykdf6M~I9w{RMl|$u_6s^gP%gaDb%dP%OSycyJm5E$W^5`8pCE z4n`&>FpMBbLj{5mqj+YmH+8spys0eeA~BvJxYeIvt81)-Mfyi;Y{H372rhkFi%Jrh zQ3n*Yro#ir1Tr-hKJNvcKRTBa&iK3uwTpKgs|1xLMjYX}-vH}3NCi%7un$r9CEN6N6nKV8MVmI>l@aPI{2O_^G zBl)=Fb6@8B#s){Gk|0lRtITCHrxq(oOxg6ZKYY66;?i}x4o&g3Z|Cmp8a;2Z9RVzHOOaeCTp820)1<`;2yycbYf2X zNIx%|+9iZ#3u7j5mG8ihc}q98uk&T0AmtwM?L3tsm`hwObfV)|u>38+x$XKj`>Xe| zG>0q3Vl;CVbIA8$cxf_mhtqJ>ktW@3bx1;!~~r)?r73ZaH7y(44`bsgI%Rn;hk_Nn-cn zWajsr2dJr#0$#*@ezywre5>=Lr5bqNB>ZTM9Dk=rV5=PO(`Fz4F=*?7I{@ES@!z-I zKzv)N%NGXKXNB_Nf7*n4M!$RBb7php&CL`dfB3|mB2oH>ezD%61$F7&X5T$G(Fply z<>`qdZnVsTHhtTAT@oJ{kXRb*W0J2JQ__&&MOOr?*j3)DS^Tmra)N5|DMHp5?YXt@hD!RH72PNeTEl;qq*F~%HhA7rY;xZo1PtX|W z)ghxh3M7b`2P#h)6o4ov=g@99r=6D%rHB--2raQGhR z^zl(tx=B;qQ=f<8OY9wal#iB-W86gK=-Ako?f`OXt6$~|nZ{12Z+7cgIWtXq1F!&M z0JB(JeCO+zQTXQLM(MId)58EL__8d#*`uL$Z-&Rn*>TSll_~xdYv2T>!56tJasbT^ z8T`}s&AyH%rFN%lkhASl7TYl3ozGj8V{M~j#P(Y^%(OQ|nOerTnO??%KBL}av_(G5 z^ifT8R&QVtD(1-wv&llc>V=AXIpq-jJ+R~6!NoXXUhGM>7+Y|NYP`wE&(ELz%<`%A z0tJTELJhl)IwCmy*>nepG01;0B%2}c&?=Kf!3rJmr!j0dH&)4Qzxyrs*Xe9TwXX4Q zQ<#1P?<#1{I_mjEnco)>V-1cQ9aZQ#W$JuOCV|h)0XtsrqET{hKru|VVnU;8*P=N5 z?|wNen_RwEPhOAJ^QIv`J3AsBEZe@0DzqJ%^*=;pZF+c3`qc@mpT7XE;CLFOB@+Mp zQm)3$l$EpI{31W!g21@<6BAjd_zkXq83hbdwnKf!6>x% z;b`?;;tp5HDJ_0<*jS`5UUow`MVq#;@W+$6D|#kPGR<3?4fUe_s{`d4R1BCj(O0G& zXR_~3$7zHwmiv=)1~r}FGT6U}c=JfHZSBa|Hs1c>%2HBPbT3#a0t+%oXL|js3~fUj zGYg#;OAq2Rm5TN3?4-pX$prSSZoH?G8ch4}F|!V*5l4t_-KOs#D_^1i@Z&Rf>CgKz z{!0x0$bYe^?HlXeeLZDa2K~Jq{(e-Or$C{}Q;C*CHmtk2diQ%rNc-)o3-7Q*3A@AR z#6 z#3O#$!i#vuz941O`^4frruLa=yWWXg7>!86=Gx=ZXWX4;3*X|?NsOC~U%fdw=+nZz zdY3rg>iC<&X40jhS@23vCw!8`FEa77ZuWDov9ZAtv{L$n@;82*4Bby0PaTyK}D;hl3HIL_cGP{)tfdi`w#Y> zJ(i@(YH{y%KDwNlR%Br4ewRQql%v)=H+Yx5=KQ>-JRqn>k5jrg9%j(r5 z{R$hQj=LQ%$$OFS?5*oLF@dnocBy~>-Wp5OGr3Nyqz`vlRdAfr=lJm85w9G4pW`) zt5Po(KO&rOP`xhyph;sO&Z$qD8cy5)Qe>$B=a8#&Zw$rJZx1!6PU#jeOH1fSQ5~nx z=sM?=-KV(JaL%-EVtwgQ$dmx3qwDoAi!g0QCyMbL&Io>n8tvOdt_dFr?5p_NN$%_F zM#--V#V?-aYT6YsGr^s+@87>)=$xjj z1#8d9__%ki;V+1VTvJ~-sm@RI(Fg&#R!lAf7njP_{%cF2qjQRyi@~D-4mN;MiEKDy zqGZM>a{GDm`%1!yE(@9^FH*LD3oaP-J^_EY&w4aMKj43PfF_veL+&cnzz%ywKgf$XhJg zcckp=Yu}&Ck}b&CErEjskN}6mPj2<>NRJjY!7ItXUus3e7E}bNHk`APDNQG9T`xK% zXc@4ke*Zp3%M+w+U9!I`7F{MI7`_I#n=Daz{GxK%pkDuRf;ZVu{c=Sf;}@*A?!CO1 zdt(0%`@V+`meYOpBOIeVmg~R5oSap<(Rr{m#dJCJR7g2jHAg3Iw>31JUBtg)Ca!bq zYp+Fb8gwX`T0Bmdeb})Y!1Uu~TIQpOs=yYr96w~W`N6?5Cp8fkmcbWNQ6U!%SL0jS zix`CV;DKD;-I2C)u>AgUbh^_M&!A|c^W{Vm2nJUIeuWI@Ai8JUf)^dELaf+w9WxrH zc{H^(RYGBtFZKrojgEGz;a#Q_g>HU&=*1={uyR`YfYj1q^-9@mGS^wO%;_t7k zwhRG%1(~^#$E&!_{AW9AkCu)%V?o_C4zQ1j98TP{g;rN8YN*Re{3()Xc%F4tJAZ%d zOT~S216p6HvkQj$SmAs^=j2gB9N5?ALqT6c9%0;!q%EGBo*S&OAfi-Xl=j*4AiC|78*Vgwshay0zuF zPWpwAMP9!5pUg6CO360t5U7+!liTmQIZo}4Ud48IT0X#xX1qsd=qg3|aD?j5_V#w% zH+ft0;?)nHA6u|w-1LibpHmTO)cLBua+ca#nbUpWumr6|v5zeWoJG4^tRD%!-ORmh zFjd>7@)&5UpZI=;e|cJ%@Gq=Jt~`My8yCCc<-79i;a@)^7@HvnXRcGop5F=iJ+<{H ziogdgrySo^fw9m6P8@nu?7XqQzOVfeVzb8I6YMH(RW+rNm7a4@p!@hz2TLt>^pEkS zcM+jkGCF;?&8w~Lw0~Ut=7v;RKGl#4J)tDoTK1XM!l>Gp0Lz!WN|+}%9M^x=Tol^GcxJ;1Z!aF;yz9#@nNmL{`BEy4n!w40 z+iW5_-!GKDtX;PBFl%9Ow5qeQ@|;7DPQx7gYT037HrhC}%=UJT5xCDaP>AdXCi-?n zxXy3SB<(eu-Gl>0*DHaU99un>?~0rCp4FIhNYDZ#OP1I zy)|fTWTP=mzo>S`$>gVc@Fn;X)4hD?Wy?d-1b@`*h+s}VuDM$aBiDgZ$W=ALHE}!^ zKY#s7wy>RM*{D^b_o}|oG)*4HJ@5bAOB&Czq>;;q<0mh^4Vt=_;yY{<`(Ms6UUjeZ zZ1EwM!K@g0RbuG+Hh zV8W_k-!nAAJP8miY{AV?lk-+Dn=F?+r=wEOs!9t7lzN!v4cbs%bFL+cKl__z=W3ZT=@~!1{ADRlbdN9f?OWMkx4QPa5VaV3 ztkBMnG4Z%B%HprS7`tsOZhX65zv){%T)ny zR~u`If1G0kig`!PP2xJ9QKXPtO&J(^>MDas0g^C>1}yG07eL*hE$qM>r}9PohGJ*@|g=TT8}f^Z z1cS1#;Y{r9!%woTav!S`YGJ_8Px);7>+zPr`SBjxM=1)ed|%VX5}jKnLk}aV`L*-E zcRLlVT0I%X0WZy$2c%VAT0wOaAA+&!RnsR%Hx-E-uN`)xcGzJ)>Rqqb~Tm>q9miEYDQeBr|$aeX6NYmuRy_i zq$pWO$E2ysjI}!QLazU*tuxIfRtK~}wp;x!-j;rOxSL;S(Im3bQyG-(V#y$J9l`D5 zI5=Mk%P$e7yquXz{SHU1^ZwVz-wOY{yZHGvVE^^`sBHSP+{XuOpU-}Mez5l0YXbwL zb*0Z6Y-f^5|MQZa&nvalA8*;?Bu+!><8`Qtz(|JUeYy0Y_e?B!}|E|bkBjmxj z_rpIxKDPD-8#9+I3GL|EL-aI zT?Mxh>t+GFi_7QWe?Uxf?TT^PquHE-V`*VPjU)ClwZ4&fW0Tw+dNklLhvpjGR1H`x zh(z#-jPzAYMt<#b>wS->^se`;n<8Jqe&njVD1kjRa5ufXtGUp@Mpow5cQaA zjh{|sXO3Y*&`VfZSRjMyXZ75(%s916GaZg!l`UEuOWl7}%gXBN!r2~x{{#*JD|`EA z>CXWyoLR^_KKfC*?cm{KFE8i52gExE@{B~)vnHZFQBkVQ+lw9XvlBlb&6;Is<_A-? zB#U#EYv;H*?y(a(N|58+>^Q8Da?kKx?0PP^wbZQwyu}*DlE}ZJ0^99=I|7zTD#;RG z?#_vN0}KJ-ifjK=F2|Z41Rgpy5S1%?t+yX7q1N4qC2lc!2f|;ZqAz+$0+v zbA8LitL3{}VQ^D5Fxn`tV!8C3oETy8n zlY4=y|KvrxWxcGCrc9HL;z|?1(Bdi?7*ppUy$3KoH+0y0nj~Z{2t-j(za-Fz6ojm; zNGocJf>KZmL!H#_rqj;~{me`2I6?^Z`7OHxdwi41pPy66;F(ds2TavJdtaU@`B67y zsRAQ)oesq6IbU9dgv1&J{xZjPveD2C=idsynBb8N%jB5X<5;2m+DE^^UEbf<=kEG8 zEPvEy;g9v3H^C9nxPYCz|HXF?SK7`w)SR>=`|t-UI^cs9FKX4XW`=2vNULC291Q_s zqZ#D6LPybRme2Vh>#@*C2`hmYJFMYYS4pvW_39R^+S}MdFdFC82+FxO*XL{zDhcjm z2_N|G*=#2U>4-4_ThPA9?IN{3v`tl!2&<@3x&K?KI5Tq&#CIAVm8*3i<{1Umng$m( zj*vsi_iu~1Y(Mu5?Ho2o8wlyi;`eq7YW&U73R>+t`W~sY3fiBG)9$mk@cRB)XH;aQHw0sH%zNTgu!)F3TezBq*!iNVq4nVS5CTJ7rivJPmR78_-?EYE#>#64 zUFtn$=gzPn0h_QoR>W)2cs7~mCt}dyptNrm^PP5Uze9=U65yhmXW5)50;E#s@1D(( zX0F5DFC!sp0Vwc|{r6I! zkHF3}!80?`rr*5KN716tgXF#kx_a1ls$U6bz|W|hxmo*s*Ge|==KhU=NE!iO-&TyZ zesHp%jdBUNlugS=sgt!b|CuGfKK|xE2{Xy|OoBQax+fAM-l_ZtT~XyRzJVw@_Cw#JuTxtd8}z>K zabMk~p*AlN4jTXDfnh)Np*M*Xm`#HX)7^Wuo7=c|4WmSE_|2-8wemnK3;#qbh7nEF zfQLtO&f*Ks?|el@NZ!g=Sjb?{2KTg0=g&F2_qmxBSb$PM{4i2cvi~Mw{1lhDsReJY zl6_L!n(0IoFcg1FsOFx``0^gG7G-?Wtw?3zTGfOr&q`DAlzEA82_fKwS4h*b4soVc1gh~_eWIl*W?f9Sh z;FKuObIf+5#Y9el8{QpEuMZ>kRuRM5i}-Z7xrA zKl#HUtvfz_UqY&jQQ;|2k#OIl8YE)!%!dAy<04!p$V4sTq5Dtf65hbq!H%Xps|EEq zjfBtk%u5Rd9c4zLIY{%wx7?_%40n{`b4pg0@8y%zz2V_cpFSld98dGis2#M&$XDtu z6v-*{*u4kQRAA7h+HTg6)RseI8^V5|7z=t7joPSfZIY4{9otJAS6AJh;2;Z`o(&Te zwG1LYdCS?j6O}P$HkEf4qRpZX12(p{cJ}s6lywuHnS^zwR8%{}nChpHufb!To|l(E z?O70Ap|@?Cqh8AK2h!k3@X*sC4nRUQqx&uLBb^6S&)N34))1;7%MF-bqurd>0vED7 zT+6^Ui;=DxhkB{^8V6^EV&glx>>=g%hjEIGd(<>dTZ_uYHvAdCKJ=x}$uSbih(P@RnVkXvRH5Q6;6>Vp)2^*c$i7A}mKq zOoS&RTcCvr`}eHnCEBc0%l)$Z)w3>BJN*i`LnY;}qU7P+(zdbH2Wn$=M5_%_l)?da z$Mlx+F?OWsR_Okn+cbzTA?Y~V$Udvv_L~Ipe?a}V=J`M7kP0P-+inQq6#V=D#F?QC z_?3htpt4Ws=_AaEVD6gGy#!myB zb{^~6PzIqcHu}g|=cP8IsyhH(hdp2>#6v7MOZ%T4N8$X>F9LMbA>iM#rH^Fm{Gyfg z+XoRQDhdiHOUtzi-+-?j^w?+^7;k`tLz(zg$xgO8kyfhnKaNEBleHR_1Mt>%Lv#y4_-G$&>Rn(x1~M?9&iEPoAfaLT z-GLmVC_X?ZqRDOZ1RaU-X>53|r*4vwArNFhxajkEo4N_idEEcRaY~`Pr(mFe?Y)Ka z7~uOLCH3w83szF-Kf~u*XZUIfgq~m{+y`bu{zqgGd7)wrT(>=@4b>+-qnjM7-YUkK zjtoUdSByiElZ!Oc`qkbOTCkd5QdCkvYoskpgsk&RPqx8QOjhZGuAt%#c@%jhN6y>L zNU3Q{=H~CO|1P-+xSV8mF~4Ft3&Neu`8M%$V*KYs;A1;q3{OmAgra`l>@m%8N^>s_ z2=u6hoHEucM?gA?;KM+C2l0IfRrDpi52o?*kGAzr+LnK!K8R?}~;ZqN=_#!X})S!YJP?lUGxf1WN{y2q2hRNFDvOmqDKzB`CX<0Nq^$b zZP2He^WoV5?}1dxfxl5bPqYEnwMp#>yb0u&^U#?H03S?>ufq&o@F{YvhN@~zeEeTn z)XRt`m4jl1B@wOh0DwmCex_uDmZEDdNdjU7HL>GK85vh$Of`Uxa1Xu^69#|YT`G$5 z-g&$b)DN)EcdcpV3EPrT?PLVultm%%hVN7GN z0g3o(PLl_s`urHYC4-iL#Q6=(D?JqzKVUbe9|LMu5713OvU?*=yVl_4ix;w_=WRKJ z2gN_kygw+}csw763xucaH3L2Z;6oilyGR(N9oL+>pQa3f$7I@J?y{x@;1saY3pH&q zsm-W{|7J_#aDAAK(O;5cN%1rl@LSQtp@OLwn)e{-f_jQEDk{oGuO7(Mp0X970ZU#) z@~i?A7$AW{21dYM`vOl>+;`V6kz~OZ^0%}T58bl9H#N&fcOOkiXh|NR4Hm;A0#~09 zSYix4%X^T=Vo;56MqaXGL+a$+4;yZBQWDfhM2HNC&v zste^V`OTXw#?FWDsN5vs)RBiC9Jwr_1-rxueDN>f(NJm4M?kLYRu)dMzKc-Q$qG;L(T z$pX+pjYGZ_Y#v)3om2-3CT$`_0tp}*QY_dVb;unADM@=^ZzL@O;}|TYl~g7b7h$SC z?Y2Xprcc9u4o7r5+$RI~mjRg$9koG$oy8F*Z5i;FHO)BZZqZY;WTz%f^XF7G>82T-kKsT;>#{S zRiYz6CG>X#+6d%%tw0499uWgO#4#5qy#tU7UVlwuCb-3qCbR&5?E76X=gL#2rVocf zP8+if2geQH_W4&9$yNSv!6YSldO+Z}{M8el?rK=iK!${qg43KZteN4*a?}m2sCAEU zLoPkOWa;xC*2z-7U`Ol=AMyb#RP&sQ`ID_ONZGneD-*VgbdzlqWyB&KEcfc!e8~7+ zwjhbWw80fb?5|522c0+0;`y2 z5^4qK#8^6~un+nEnCeXrCELd4#LRu3aJ344FQzDF%&h8HZzx}FA=s60RJsX2KTzAg z+w_Dnvcw(I4u`eoy@}*W!3f%1Q4s@w3zqfuN;Dm_mJmGX7qFv(59SE6a=!Y0aZPJs zg>P<;xE)FSk{tQQ2SOtRBOdV3vWF6d8Y4HoO_f$aZavZf@plg%bwn+Cx;w&iaRG6F z2!lgftfMDvyxFV~fA2(rt}7@o@B&^Y*I6~FMUM-wFE(M%uz-z{Kyn``F)ZkGC3+LU z@?a8#zJxU(>?(K>TuM0nzyp^=r>E{*)>Yp*NQO{sQx&X58y3!erStGbq zB8$;zVY`DZ0-01mnx2Xc%2kIcdgk?lfS(_nT2e>_2f2a~TXc9hii7m-y%jk~4nlzO zx6%s>0rK}~#01Y1dRUq8!(1y~6hBIJ^o*wifbrG?w{E2weXJCtb&Nxe!?D8|r7` zDSb`CDE);h3xwO0v-PZ*vU}uRJpgW1KNQd)l4KS9%-_$KNb{$}9m>)}j(PNoJOIVU za*~{*&TS%27$!vmG;CkQnZm$<@cqCRfcUB@^cAs0NG;^Pk&R∓OIY_C6szbNeM% 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 literal 0 HcmV?d00001 diff --git a/worlds/shapez/items.py b/worlds/shapez/items.py new file mode 100644 index 000000000000..aef4c03317ea --- /dev/null +++ b/worlds/shapez/items.py @@ -0,0 +1,279 @@ +from typing import Dict, Callable, Any, List + +from BaseClasses import Item, ItemClassification as IClass +from .options import ShapezOptions +from .data.strings import GOALS, ITEMS, OTHER + + +def is_mam_achievement_included(options: ShapezOptions) -> IClass: + return IClass.progression if options.include_achievements and (not options.goal == GOALS.vanilla) else IClass.useful + + +def is_achievements_included(options: ShapezOptions) -> IClass: + return IClass.progression if options.include_achievements else IClass.useful + + +def is_goal_efficiency_iii(options: ShapezOptions) -> IClass: + return IClass.progression if options.goal == GOALS.efficiency_iii else IClass.useful + + +def always_progression(options: ShapezOptions) -> IClass: + return IClass.progression + + +def always_useful(options: ShapezOptions) -> IClass: + return IClass.useful + + +def always_filler(options: ShapezOptions) -> IClass: + return IClass.filler + + +def always_trap(options: ShapezOptions) -> IClass: + return IClass.trap + + +# Routing buildings are not needed to complete the game, but building factories without balancers and tunnels +# would be unreasonably complicated and time-consuming. +# Some buildings are not needed to complete the game, but are "logically needed" for the "MAM" achievement. + +buildings_processing: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.cutter: always_progression, + ITEMS.cutter_quad: always_progression, + ITEMS.rotator: always_progression, + ITEMS.rotator_ccw: always_progression, + ITEMS.rotator_180: always_progression, + ITEMS.stacker: always_progression, + ITEMS.painter: always_progression, + ITEMS.painter_double: always_progression, + ITEMS.painter_quad: always_progression, + ITEMS.color_mixer: always_progression, +} + +buildings_routing: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.balancer: always_progression, + ITEMS.comp_merger: always_progression, + ITEMS.comp_splitter: always_progression, + ITEMS.tunnel: always_progression, + ITEMS.tunnel_tier_ii: is_mam_achievement_included, +} + +buildings_other: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trash: always_progression, + ITEMS.extractor_chain: always_useful +} + +buildings_top_row: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.belt_reader: is_mam_achievement_included, + ITEMS.storage: is_achievements_included, + ITEMS.switch: always_progression, + ITEMS.item_filter: is_mam_achievement_included, + ITEMS.display: always_useful +} + +buildings_wires: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.wires: always_progression, + ITEMS.const_signal: always_progression, + ITEMS.logic_gates: is_mam_achievement_included, + ITEMS.virtual_proc: is_mam_achievement_included +} + +gameplay_unlocks: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.blueprints: is_achievements_included +} + +upgrades: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.upgrade_big_belt: always_progression, + ITEMS.upgrade_big_miner: always_useful, + ITEMS.upgrade_big_proc: always_useful, + ITEMS.upgrade_big_paint: always_useful, + ITEMS.upgrade_small_belt: always_filler, + ITEMS.upgrade_small_miner: always_filler, + ITEMS.upgrade_small_proc: always_filler, + ITEMS.upgrade_small_paint: always_filler +} + +whacky_upgrades: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.upgrade_gigantic_belt: always_progression, + ITEMS.upgrade_gigantic_miner: always_useful, + ITEMS.upgrade_gigantic_proc: always_useful, + ITEMS.upgrade_gigantic_paint: always_useful, + ITEMS.upgrade_rising_belt: always_progression, + ITEMS.upgrade_rising_miner: always_useful, + ITEMS.upgrade_rising_proc: always_useful, + ITEMS.upgrade_rising_paint: always_useful, + ITEMS.upgrade_big_random: always_useful, + ITEMS.upgrade_small_random: always_filler, +} + +whacky_upgrade_traps: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_upgrade_belt: always_trap, + ITEMS.trap_upgrade_miner: always_trap, + ITEMS.trap_upgrade_proc: always_trap, + ITEMS.trap_upgrade_paint: always_trap, + ITEMS.trap_upgrade_demonic_belt: always_trap, + ITEMS.trap_upgrade_demonic_miner: always_trap, + ITEMS.trap_upgrade_demonic_proc: always_trap, + ITEMS.trap_upgrade_demonic_paint: always_trap, +} + +bundles: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.bundle_blueprint: always_filler, + ITEMS.bundle_level: always_filler, + ITEMS.bundle_upgrade: always_filler +} + +standard_traps: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_locked: always_trap, + ITEMS.trap_throttled: always_trap, + ITEMS.trap_malfunction: always_trap, + ITEMS.trap_inflation: always_trap, + ITEMS.trap_clear_belts: always_trap, +} + +random_draining_trap: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_draining_inv: always_trap +} + +split_draining_traps: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_draining_blueprint: always_trap, + ITEMS.trap_draining_level: always_trap, + ITEMS.trap_draining_upgrade: always_trap +} + +belt_and_extractor: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.belt: always_progression, + ITEMS.extractor: always_progression +} + +item_table: Dict[str, Callable[[ShapezOptions], IClass]] = { + **buildings_processing, + **buildings_routing, + **buildings_other, + **buildings_top_row, + **buildings_wires, + **gameplay_unlocks, + **upgrades, + **whacky_upgrades, + **whacky_upgrade_traps, + **bundles, + **standard_traps, + **random_draining_trap, + **split_draining_traps, + **belt_and_extractor +} + +big_upgrades = [ + ITEMS.upgrade_big_belt, + ITEMS.upgrade_big_miner, + ITEMS.upgrade_big_proc, + ITEMS.upgrade_big_paint +] + +small_upgrades = [ + ITEMS.upgrade_small_belt, + ITEMS.upgrade_small_miner, + ITEMS.upgrade_small_proc, + ITEMS.upgrade_small_paint +] + + +def filler(random: float, whacky_allowed: bool) -> str: + """Returns a random filler item.""" + bundles_list = [*bundles] + return random_choice_nested(random, [ + small_upgrades, + [ + bundles_list, + bundles_list, + [ + big_upgrades, + [*whacky_upgrades] if whacky_allowed else big_upgrades, + ], + ], + ]) + + +def trap(random: float, split_draining: bool, whacky_allowed: bool) -> str: + """Returns a random trap item.""" + pool = [ + *standard_traps, + ITEMS.trap_draining_inv if not split_draining else [*split_draining_traps], + ] + if whacky_allowed: + pool.append([*whacky_upgrade_traps]) + return random_choice_nested(random, pool) + + +def random_choice_nested(random: float, nested: List[Any]) -> Any: + """Helper function for getting a random element from a nested list.""" + current: Any = nested + while isinstance(current, List): + index_float = random*len(current) + current = current[int(index_float)] + random = index_float-int(index_float) + return current + + +item_descriptions = { # TODO replace keys with global strings and update with whacky upgrades + "Balancer": "A routing building, that can merge two belts into one, split a belt in two, " + + "or balance the items of two belts", + "Tunnel": "A routing building consisting of two parts, that allows for gaps in belts", + "Compact Merger": "A small routing building, that merges two belts into one", + "Tunnel Tier II": "A routing building consisting of two parts, that allows for even longer gaps in belts", + "Compact Splitter": "A small routing building, that splits a belt in two", + "Cutter": "A processing building, that cuts shapes vertically in two halves", + "Rotator": "A processing building, that rotates shapes 90 degrees clockwise", + "Painter": "A processing building, that paints shapes in a given color", + "Rotator (CCW)": "A processing building, that rotates shapes 90 degrees counter-clockwise", + "Color Mixer": "A processing building, that mixes two colors together to create a new one", + "Stacker": "A processing building, that combines two shapes with missing parts or puts one on top of the other", + "Quad Cutter": "A processing building, that cuts shapes in four quarter parts", + "Double Painter": "A processing building, that paints two shapes in a given color", + "Rotator (180°)": "A processing building, that rotates shapes 180 degrees", + "Quad Painter": "A processing building, that paint each quarter of a shape in another given color and requires " + + "wire inputs for each color to work", + "Trash": "A building, that destroys unused shapes", + "Chaining Extractor": "An upgrade to extractors, that can increase the output without balancers or mergers", + "Belt Reader": "A wired building, that shows the average amount of items passing through per second", + "Storage": "A building, that stores up to 5000 of a certain shape", + "Switch": "A building, that sends a constant boolean signal", + "Item Filter": "A wired building, that filters items based on wire input", + "Display": "A wired building, that displays a shape or color based on wire input", + "Wires": "The main building of the wires layer, that carries signals between other buildings", + "Constant Signal": "A building on the wires layer, that sends a constant shape, color, or boolean signal", + "Logic Gates": "Multiple buildings on the wires layer, that perform logical operations on wire signals", + "Virtual Processing": "Multiple buildings on the wires layer, that process wire signals like processor buildings", + "Blueprints": "A game mechanic, that allows copy-pasting multiple buildings at once", + "Big Belt Upgrade": "An upgrade, that adds 1 to the speed multiplier of belts, distributors, and tunnels", + "Big Miner Upgrade": "An upgrade, that adds 1 to the speed multiplier of extractors", + "Big Processors Upgrade": "An upgrade, that adds 1 to the speed multiplier of cutters, rotators, and stackers", + "Big Painting Upgrade": "An upgrade, that adds 1 to the speed multiplier of painters and color mixers", + "Small Belt Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of belts, distributors, and tunnels", + "Small Miner Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of extractors", + "Small Processors Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of cutters, rotators, and stackers", + "Small Painting Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of painters and color mixers", + "Blueprint Shapes Bundle": "A bundle with 1000 blueprint shapes, instantly delivered to the hub", + "Level Shapes Bundle": "A bundle with some shapes needed for the current level, " + + "instantly delivered to the hub", + "Upgrade Shapes Bundle": "A bundle with some shapes needed for a random upgrade, " + + "instantly delivered to the hub", + "Inventory Draining Trap": "Randomly drains either blueprint shapes, current level requirement shapes, " + + "or random upgrade requirement shapes, by half", + "Blueprint Shapes Draining Trap": "Drains the stored blueprint shapes by half", + "Level Shapes Draining Trap": "Drains the current level requirement shapes by half", + "Upgrade Shapes Draining Trap": "Drains a random upgrade requirement shape by half", + "Locked Building Trap": "Locks a random building from being placed for 15-60 seconds", + "Throttled Building Trap": "Halves the speed of a random building for 15-60 seconds", + "Malfunctioning Trap": "Makes a random building process items incorrectly for 15-60 seconds", + "Inflation Trap": "Permanently increases the required shapes multiplier by 1. " + "In other words: Permanently increases required shapes by 10% of the standard amount.", + "Belt": "One of the most important buildings in the game, that transports your shapes and colors from one " + + "place to another", + "Extractor": "One of the most important buildings in the game, that extracts shapes from those randomly " + + "generated patches" +} + + +class ShapezItem(Item): + game = OTHER.game_name diff --git a/worlds/shapez/locations.py b/worlds/shapez/locations.py new file mode 100644 index 000000000000..6d069afaa899 --- /dev/null +++ b/worlds/shapez/locations.py @@ -0,0 +1,546 @@ +from random import Random +from typing import List, Tuple, Dict, Optional, Callable + +from BaseClasses import Location, LocationProgressType, Region +from .data.strings import CATEGORY, LOCATIONS, REGIONS, OPTIONS, GOALS, OTHER, SHAPESANITY +from .options import max_shapesanity, max_levels_and_upgrades + +categories = [CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting] + +translate: List[Tuple[int, str]] = [ + (1000, "M"), + (900, "CM"), + (500, "D"), + (400, "CD"), + (100, "C"), + (90, "XC"), + (50, "L"), + (40, "XL"), + (10, "X"), + (9, "IX"), + (5, "V"), + (4, "IV"), + (1, "I") +] + + +def roman(num: int) -> str: + """Converts positive non-zero integers into roman numbers.""" + rom: str = "" + for key, val in translate: + while num >= key: + rom += val + num -= key + return rom + + +location_description = { # TODO change keys to global strings + "Level 1": "Levels are completed by delivering certain shapes in certain amounts to the hub. The required shape " + "and amount for the current level are always displayed on the hub.", + "Level 1 Additional": "In the vanilla game, levels 1 and 20 have unlock more than one building.", + "Level 20 Additional": "In the vanilla game, levels 1 and 20 have unlock more than one building.", + "Level 20 Additional 2": "In the vanilla game, levels 1 and 20 have unlock more than one building.", + "Level 26": "In the vanilla game, level 26 is the final level of the tutorial, unlocking freeplay.", + f"Level {max_levels_and_upgrades-1}": "This is the highest possible level that can contains an item, if your goal " + "is set to \"mam\"", + "Belt Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in your hub. " + "This is the first upgrade in the belt, balancers, and tunnel category.", + "Miner Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in your " + "hub. This is the first upgrade in the extractor category.", + "Processors Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in " + "your hub. This is the first upgrade in the cutter, rotators, and stacker category.", + "Painting Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in your " + "hub. This is the first upgrade in the painters and color mixer category.", + "Belt Upgrade Tier VIII": "This is the final upgrade in the belt, balancers, and tunnel category, if your goal is " + "**not** set to \"even_fasterer\".", + "Miner Upgrade Tier VIII": "This is the final upgrade in the extractor category, if your goal is **not** set to " + "\"even_fasterer\".", + "Processors Upgrade Tier VIII": "This is the final upgrade in the cutter, rotators, and stacker category, if your " + "goal is **not** set to \"even_fasterer\".", + "Painting Upgrade Tier VIII": "This is the final upgrade in the painters and color mixer category, if your goal is " + "**not** set to \"even_fasterer\".", + f"Belt Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the belt, " + "balancers, and tunnel category, if your goal is set to " + "\"even_fasterer\".", + f"Miner Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the extractor " + "category, if your goal is set to \"even_fasterer\".", + f"Processors Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the cutter, " + "rotators, and stacker category, if your goal is set " + "to \"even_fasterer\".", + f"Painting Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the painters " + "and color mixer category, if your goal is set to " + "\"even_fasterer\".", + "My eyes no longer hurt": "This is an achievement, that is unlocked by activating dark mode.", + "Painter": "This is an achievement, that is unlocked by painting a shape using the painter or double painter.", + "Cutter": "This is an achievement, that is unlocked by cutting a shape in half using the cutter.", + "Rotater": "This is an achievement, that is unlocked by rotating a shape clock wise.", + "Wait, they stack?": "This is an achievement, that is unlocked by stacking two shapes on top of each other.", + "Wires": "This is an achievement, that is unlocked by completing level 20.", + "Storage": "This is an achievement, that is unlocked by storing a shape in a storage.", + "Freedom": "This is an achievement, that is unlocked by completing level 20. It is only included if the goal is " + "**not** set to vanilla.", + "The logo!": "This is an achievement, that is unlocked by producing the logo of the game.", + "To the moon": "This is an achievement, that is unlocked by producing the rocket shape.", + "It's piling up": "This is an achievement, that is unlocked by having 100.000 blueprint shapes stored in the hub.", + "I'll use it later": "This is an achievement, that is unlocked by having one million blueprint shapes stored in " + "the hub.", + "Efficiency 1": "This is an achievement, that is unlocked by delivering 25 blueprint shapes per second to the hub.", + "Preparing to launch": "This is an achievement, that is unlocked by delivering 10 rocket shapes per second to the " + "hub.", + "SpaceY": "This is an achievement, that is unlocked by 20 rocket shapes per second to the hub.", + "Stack overflow": "This is an achievement, that is unlocked by stacking 4 layers on top of each other.", + "It's a mess": "This is an achievement, that is unlocked by having 100 different shapes stored in the hub.", + "Faster": "This is an achievement, that is unlocked by upgrading everything to at least tier V.", + "Even faster": "This is an achievement, that is unlocked by upgrading everything to at least tier VIII.", + "Get rid of them": "This is an achievement, that is unlocked by transporting 1000 shapes into a trash can.", + "It's been a long time": "This is an achievement, that is unlocked by playing your save file for 10 hours " + "(combined playtime).", + "Addicted": "This is an achievement, that is unlocked by playing your save file for 20 hours (combined playtime).", + "Can't stop": "This is an achievement, that is unlocked by reaching level 50.", + "Is this the end?": "This is an achievement, that is unlocked by reaching level 100.", + "Getting into it": "This is an achievement, that is unlocked by playing your save file for 1 hour (combined " + "playtime).", + "Now it's easy": "This is an achievement, that is unlocked by placing a blueprint.", + "Computer Guy": "This is an achievement, that is unlocked by placing 5000 wires.", + "Speedrun Master": "This is an achievement, that is unlocked by completing level 12 in under 30 Minutes. This " + "location is excluded by default, as it can become inaccessible in a save file after that time.", + "Speedrun Novice": "This is an achievement, that is unlocked by completing level 12 in under 60 Minutes. This " + "location is excluded by default, as it can become inaccessible in a save file after that time.", + "Not an idle game": "This is an achievement, that is unlocked by completing level 12 in under 120 Minutes. This " + "location is excluded by default, as it can become inaccessible in a save file after that time.", + "Efficiency 2": "This is an achievement, that is unlocked by delivering 50 blueprint shapes per second to the hub.", + "Branding specialist 1": "This is an achievement, that is unlocked by delivering 25 logo shapes per second to the " + "hub.", + "Branding specialist 2": "This is an achievement, that is unlocked by delivering 50 logo shapes per second to the " + "hub.", + "King of Inefficiency": "This is an achievement, that is unlocked by **not** placing a counter clock wise rotator " + "until level 14. This location is excluded by default, as it can become inaccessible in a " + "save file after placing that building.", + "It's so slow": "This is an achievement, that is unlocked by completing level 12 **without** buying any belt " + "upgrade. This location is excluded by default, as it can become inaccessible in a save file after " + "buying that upgrade.", + "MAM (Make Anything Machine)": "This is an achievement, that is unlocked by completing any level after level 26 " + "**without** modifying your factory. It is recommended to build a Make Anything " + "Machine.", + "Perfectionist": "This is an achievement, that is unlocked by destroying more than 1000 buildings at once.", + "The next dimension": "This is an achievement, that is unlocked by opening the wires layer.", + "Oops": "This is an achievement, that is unlocked by delivering a shape, that neither a level requirement nor an " + "upgrade requirement.", + "Copy-Pasta": "This is an achievement, that is unlocked by placing a blueprint with at least 1000 buildings.", + "I've seen that before ...": "This is an achievement, that is unlocked by producing RgRyRbRr.", + "Memories from the past": "This is an achievement, that is unlocked by producing WrRgWrRg:CwCrCwCr:SgSgSgSg.", + "I need trains": "This is an achievement, that is unlocked by placing a 500 tiles long belt.", + "A bit early?": "This is an achievement, that is unlocked by producing the logo shape before reaching level 18. " + "This location is excluded by default, as it can become inaccessible in a save file after reaching " + "that level.", + "GPS": "This is an achievement, that is unlocked by placing 15 or more map markers.", + "Shapesanity 1": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 1 is always an uncolored " + "circle.", + "Shapesanity 2": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 2 is always an uncolored " + "square.", + "Shapesanity 3": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 3 is always an uncolored " + "star.", + "Shapesanity 4": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 4 is always an uncolored " + "windmill.", +} + +shapesanity_simple: Dict[str, str] = {} +shapesanity_1_4: Dict[str, str] = {} +shapesanity_two_sided: Dict[str, str] = {} +shapesanity_three_parts: Dict[str, str] = {} +shapesanity_four_parts: Dict[str, str] = {} + +level_locations: List[str] = ([LOCATIONS.level(1, 1), LOCATIONS.level(20, 1), LOCATIONS.level(20, 2)] + + [LOCATIONS.level(x) for x in range(1, max_levels_and_upgrades)]) +upgrade_locations: List[str] = [LOCATIONS.upgrade(cat, roman(x)) + for cat in categories for x in range(2, max_levels_and_upgrades+1)] +achievement_locations: List[str] = [LOCATIONS.my_eyes, LOCATIONS.painter, LOCATIONS.cutter, LOCATIONS.rotater, + LOCATIONS.wait_they_stack, LOCATIONS.wires, LOCATIONS.storage, LOCATIONS.freedom, + LOCATIONS.the_logo, LOCATIONS.to_the_moon, LOCATIONS.its_piling_up, + LOCATIONS.use_it_later, LOCATIONS.efficiency_1, LOCATIONS.preparing_to_launch, + LOCATIONS.spacey, LOCATIONS.stack_overflow, LOCATIONS.its_a_mess, LOCATIONS.faster, + LOCATIONS.even_faster, LOCATIONS.get_rid_of_them, LOCATIONS.a_long_time, + LOCATIONS.addicted, LOCATIONS.cant_stop, LOCATIONS.is_this_the_end, + LOCATIONS.getting_into_it, LOCATIONS.now_its_easy, LOCATIONS.computer_guy, + LOCATIONS.speedrun_master, LOCATIONS.speedrun_novice, LOCATIONS.not_idle_game, + LOCATIONS.efficiency_2, LOCATIONS.branding_1, + LOCATIONS.branding_2, LOCATIONS.king_of_inefficiency, LOCATIONS.its_so_slow, + LOCATIONS.mam, LOCATIONS.perfectionist, LOCATIONS.next_dimension, LOCATIONS.oops, + LOCATIONS.copy_pasta, LOCATIONS.ive_seen_that_before, LOCATIONS.memories, + LOCATIONS.i_need_trains, LOCATIONS.a_bit_early, LOCATIONS.gps] +shapesanity_locations: List[str] = [LOCATIONS.shapesanity(x) for x in range(1, max_shapesanity+1)] + + +def init_shapesanity_pool() -> None: + """Imports the pregenerated shapesanity pool.""" + from .data import shapesanity_pool + shapesanity_simple.update(shapesanity_pool.shapesanity_simple) + shapesanity_1_4.update(shapesanity_pool.shapesanity_1_4) + shapesanity_two_sided.update(shapesanity_pool.shapesanity_two_sided) + shapesanity_three_parts.update(shapesanity_pool.shapesanity_three_parts) + shapesanity_four_parts.update(shapesanity_pool.shapesanity_four_parts) + + +def addlevels(maxlevel: int, logictype: str, + random_logic_phase_length: List[int]) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with all level locations based on player options (maxlevel INCLUDED). + If shape requirements are not randomized, the logic type is expected to be vanilla.""" + + # Level 1 is always directly accessible + locations: Dict[str, Tuple[str, LocationProgressType]] \ + = {LOCATIONS.level(1): (REGIONS.main, LocationProgressType.PRIORITY), + LOCATIONS.level(1, 1): (REGIONS.main, LocationProgressType.PRIORITY)} + level_regions = [REGIONS.main, REGIONS.levels_1, REGIONS.levels_2, REGIONS.levels_3, + REGIONS.levels_4, REGIONS.levels_5] + + def f(name: str, region: str, progress: LocationProgressType = LocationProgressType.DEFAULT) -> None: + locations[name] = (region, progress) + + if logictype.startswith(OPTIONS.logic_vanilla): + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + f(LOCATIONS.level(2), REGIONS.levels_1) + f(LOCATIONS.level(3), REGIONS.levels_1) + f(LOCATIONS.level(4), REGIONS.levels_1) + f(LOCATIONS.level(5), REGIONS.levels_2) + f(LOCATIONS.level(6), REGIONS.levels_2) + f(LOCATIONS.level(7), REGIONS.levels_3) + f(LOCATIONS.level(8), REGIONS.levels_3) + f(LOCATIONS.level(9), REGIONS.levels_4) + f(LOCATIONS.level(10), REGIONS.levels_4) + for x in range(11, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype.startswith(OPTIONS.logic_stretched): + phaselength = maxlevel//6 + f(LOCATIONS.level(20, 1), level_regions[20//phaselength]) + f(LOCATIONS.level(20, 2), level_regions[20//phaselength]) + for x in range(2, phaselength): + f(LOCATIONS.level(x), REGIONS.main) + for x in range(phaselength, phaselength*2): + f(LOCATIONS.level(x), REGIONS.levels_1) + for x in range(phaselength*2, phaselength*3): + f(LOCATIONS.level(x), REGIONS.levels_2) + for x in range(phaselength*3, phaselength*4): + f(LOCATIONS.level(x), REGIONS.levels_3) + for x in range(phaselength*4, phaselength*5): + f(LOCATIONS.level(x), REGIONS.levels_4) + for x in range(phaselength*5, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype.startswith(OPTIONS.logic_quick): + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + f(LOCATIONS.level(2), REGIONS.levels_1) + f(LOCATIONS.level(3), REGIONS.levels_2) + f(LOCATIONS.level(4), REGIONS.levels_3) + f(LOCATIONS.level(5), REGIONS.levels_4) + for x in range(6, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype.startswith(OPTIONS.logic_random_steps): + next_level = 2 + for phase in range(5): + for x in range(random_logic_phase_length[phase]): + f(LOCATIONS.level(next_level+x), level_regions[phase]) + next_level += random_logic_phase_length[phase] + if next_level > 20: + f(LOCATIONS.level(20, 1), level_regions[phase]) + f(LOCATIONS.level(20, 2), level_regions[phase]) + for x in range(next_level, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + if next_level <= 20: + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + + elif logictype == OPTIONS.logic_hardcore: + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + for x in range(2, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype == OPTIONS.logic_dopamine: + f(LOCATIONS.level(20, 1), REGIONS.levels_2) + f(LOCATIONS.level(20, 2), REGIONS.levels_2) + for x in range(2, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_2) + + elif logictype == OPTIONS.logic_dopamine_overflow: + f(LOCATIONS.level(20, 1), REGIONS.main) + f(LOCATIONS.level(20, 2), REGIONS.main) + for x in range(2, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.main) + + else: + raise Exception(f"Illegal level logic type {logictype}") + + return locations + + +def addupgrades(finaltier: int, logictype: str, + category_random_logic_amounts: Dict[str, int]) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with all upgrade locations based on player options (finaltier INCLUDED). + If shape requirements are not randomized, give logic type 0.""" + + locations: Dict[str, Tuple[str, LocationProgressType]] = {} + upgrade_regions = [REGIONS.main, REGIONS.upgrades_1, REGIONS.upgrades_2, REGIONS.upgrades_3, + REGIONS.upgrades_4, REGIONS.upgrades_5] + + def f(name: str, region: str, progress: LocationProgressType = LocationProgressType.DEFAULT) -> None: + locations[name] = (region, progress) + + if logictype == OPTIONS.logic_vanilla_like: + f(LOCATIONS.upgrade(CATEGORY.belt, "II"), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.miner, "II"), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.processors, "II"), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.painting, "II"), REGIONS.upgrades_3) + f(LOCATIONS.upgrade(CATEGORY.belt, "III"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.miner, "III"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.processors, "III"), REGIONS.upgrades_1) + f(LOCATIONS.upgrade(CATEGORY.painting, "III"), REGIONS.upgrades_3) + for x in range(4, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + elif logictype == OPTIONS.logic_linear: + for x in range(2, 7): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), upgrade_regions[x-2]) + for x in range(7, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + elif logictype == OPTIONS.logic_category: + for x in range(2, 7): + tier = roman(x) + f(LOCATIONS.upgrade(CATEGORY.belt, tier), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.miner, tier), REGIONS.main) + for x in range(7, finaltier + 1): + tier = roman(x) + f(LOCATIONS.upgrade(CATEGORY.belt, tier), REGIONS.upgrades_5) + f(LOCATIONS.upgrade(CATEGORY.miner, tier), REGIONS.upgrades_5) + f(LOCATIONS.upgrade(CATEGORY.processors, "II"), REGIONS.upgrades_1) + f(LOCATIONS.upgrade(CATEGORY.processors, "III"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.processors, "IV"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.processors, "V"), REGIONS.upgrades_3) + f(LOCATIONS.upgrade(CATEGORY.processors, "VI"), REGIONS.upgrades_3) + for x in range(7, finaltier+1): + f(LOCATIONS.upgrade(CATEGORY.processors, roman(x)), REGIONS.upgrades_5) + for x in range(2, 4): + f(LOCATIONS.upgrade(CATEGORY.painting, roman(x)), REGIONS.upgrades_4) + for x in range(4, finaltier+1): + f(LOCATIONS.upgrade(CATEGORY.painting, roman(x)), REGIONS.upgrades_5) + + elif logictype == OPTIONS.logic_category_random: + for x in range(2, 7): + tier = roman(x) + f(LOCATIONS.upgrade(CATEGORY.belt, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.belt_low]]) + f(LOCATIONS.upgrade(CATEGORY.miner, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.miner_low]]) + f(LOCATIONS.upgrade(CATEGORY.processors, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.processors_low]]) + f(LOCATIONS.upgrade(CATEGORY.painting, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.painting_low]]) + for x in range(7, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + else: # logictype == hardcore + for cat in categories: + f(LOCATIONS.upgrade(cat, "II"), REGIONS.main) + for x in range(3, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + return locations + + +def addachievements(excludesoftlock: bool, excludelong: bool, excludeprogressive: bool, + maxlevel: int, upgradelogictype: str, category_random_logic_amounts: Dict[str, int], + goal: str, presentlocations: Dict[str, Tuple[str, LocationProgressType]], + add_alias: Callable[[str, str], None], has_upgrade_traps: bool + ) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with all achievement locations based on player options.""" + + locations: Dict[str, Tuple[str, LocationProgressType]] = dict() + upgrade_regions = [REGIONS.main, REGIONS.upgrades_1, REGIONS.upgrades_2, REGIONS.upgrades_3, + REGIONS.upgrades_4, REGIONS.upgrades_5] + + def f(name: str, region: str, alias: str, progress: LocationProgressType = LocationProgressType.DEFAULT): + locations[name] = (region, progress) + add_alias(name, alias) + + f(LOCATIONS.my_eyes, REGIONS.menu, "Activate dark mode") + f(LOCATIONS.painter, REGIONS.paint_not_quad, "Paint a shape (no Quad Painter)") + f(LOCATIONS.cutter, REGIONS.cut_not_quad, "Cut a shape (no Quad Cutter)") + f(LOCATIONS.rotater, REGIONS.rotate_cw, "Rotate a shape clock wise") + f(LOCATIONS.wait_they_stack, REGIONS.stack_shape, "Stack a shape") + f(LOCATIONS.storage, REGIONS.store_shape, "Store a shape in the storage") + f(LOCATIONS.the_logo, REGIONS.all_buildings, "Produce the shapez logo") + f(LOCATIONS.to_the_moon, REGIONS.all_buildings, "Produce the rocket shape") + f(LOCATIONS.its_piling_up, REGIONS.all_buildings, "100k blueprint shapes") + f(LOCATIONS.use_it_later, REGIONS.all_buildings, "1 million blueprint shapes") + + f(LOCATIONS.stack_overflow, REGIONS.stack_shape, "4 layers shape") + f(LOCATIONS.its_a_mess, REGIONS.main, "100 different shapes in hub") + f(LOCATIONS.get_rid_of_them, REGIONS.trash_shape, "1000 shapes trashed") + f(LOCATIONS.getting_into_it, REGIONS.menu, "1 hour") + f(LOCATIONS.now_its_easy, REGIONS.blueprint, "Place a blueprint") + f(LOCATIONS.computer_guy, REGIONS.wiring, "Place 5000 wires") + f(LOCATIONS.perfectionist, REGIONS.any_building, "Destroy more than 1000 objects at once") + f(LOCATIONS.next_dimension, REGIONS.wiring, "Open the wires layer") + f(LOCATIONS.copy_pasta, REGIONS.blueprint, "Place a 1000 buildings blueprint") + f(LOCATIONS.ive_seen_that_before, REGIONS.all_buildings, "Produce RgRyRbRr") + f(LOCATIONS.memories, REGIONS.all_buildings, "Produce WrRgWrRg:CwCrCwCr:SgSgSgSg") + f(LOCATIONS.i_need_trains, REGIONS.belt, "Have a 500 tiles belt") + f(LOCATIONS.gps, REGIONS.menu, "15 map markers") + + # Per second delivery achievements + f(LOCATIONS.preparing_to_launch, REGIONS.all_buildings, "10 rocket shapes / second") + if not has_upgrade_traps: + f(LOCATIONS.spacey, REGIONS.all_buildings, "20 rocket shapes / second") + f(LOCATIONS.efficiency_1, REGIONS.all_buildings, "25 blueprints shapes / second") + f(LOCATIONS.efficiency_2, REGIONS.all_buildings_x1_6_belt, "50 blueprints shapes / second") + f(LOCATIONS.branding_1, REGIONS.all_buildings, "25 logo shapes / second") + f(LOCATIONS.branding_2, REGIONS.all_buildings_x1_6_belt, "50 logo shapes / second") + + # Achievements that depend on upgrades + f(LOCATIONS.even_faster, REGIONS.upgrades_5, "All upgrades on tier VIII") + if upgradelogictype == OPTIONS.logic_linear: + f(LOCATIONS.faster, REGIONS.upgrades_3, "All upgrades on tier V") + elif upgradelogictype == OPTIONS.logic_category_random: + f(LOCATIONS.faster, upgrade_regions[ + max(category_random_logic_amounts[CATEGORY.belt_low], + category_random_logic_amounts[CATEGORY.miner_low], + category_random_logic_amounts[CATEGORY.processors_low], + category_random_logic_amounts[CATEGORY.painting_low]) + ], "All upgrades on tier V") + else: + f(LOCATIONS.faster, REGIONS.upgrades_5, "All upgrades on tier V") + + # Achievements that depend on the level + f(LOCATIONS.wires, presentlocations[LOCATIONS.level(20)][0], "Complete level 20") + if not goal == GOALS.vanilla: + f(LOCATIONS.freedom, presentlocations[LOCATIONS.level(26)][0], "Complete level 26") + f(LOCATIONS.mam, REGIONS.mam, "Complete any level > 26 without modifications") + if maxlevel >= 50: + f(LOCATIONS.cant_stop, presentlocations[LOCATIONS.level(50)][0], "Reach level 50") + elif goal not in [GOALS.vanilla, GOALS.mam]: + f(LOCATIONS.cant_stop, REGIONS.levels_5, "Reach level 50") + if maxlevel >= 100: + f(LOCATIONS.is_this_the_end, presentlocations[LOCATIONS.level(100)][0], "Reach level 100") + elif goal not in [GOALS.vanilla, GOALS.mam]: + f(LOCATIONS.is_this_the_end, REGIONS.levels_5, "Reach level 100") + + # Achievements that depend on player preferences + if excludeprogressive: + unreasonable_type = LocationProgressType.EXCLUDED + else: + unreasonable_type = LocationProgressType.DEFAULT + if not excludesoftlock: + f(LOCATIONS.speedrun_master, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 in under 30 min", unreasonable_type) + f(LOCATIONS.speedrun_novice, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 in under 60 min", unreasonable_type) + f(LOCATIONS.not_idle_game, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 in under 120 min", unreasonable_type) + f(LOCATIONS.its_so_slow, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 without upgrading belts", unreasonable_type) + f(LOCATIONS.king_of_inefficiency, presentlocations[LOCATIONS.level(14)][0], + "No ccw rotator until level 14", unreasonable_type) + f(LOCATIONS.a_bit_early, REGIONS.all_buildings, + "Produce logo shape before level 18", unreasonable_type) + if not excludelong: + f(LOCATIONS.a_long_time, REGIONS.menu, "10 hours") + f(LOCATIONS.addicted, REGIONS.menu, "20 hours") + + # Achievements with a softlock chance of less than + # 1 divided by 2 to the power of the number of all atoms in the universe + f(LOCATIONS.oops, REGIONS.main, "Deliver an irrelevant shape") + + return locations + + +def addshapesanity(amount: int, random: Random, append_shapesanity: Callable[[str], None], + add_alias: Callable[[str, str], None]) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with a given number of random shapesanity locations.""" + + included_shapes: Dict[str, Tuple[str, LocationProgressType]] = {} + + def f(name: str, region: str, alias: str, progress: LocationProgressType = LocationProgressType.DEFAULT) -> None: + included_shapes[name] = (region, progress) + append_shapesanity(alias) + shapes_list.remove((alias, region)) + add_alias(name, alias) + + # Always have at least 4 shapesanity checks because of sphere 1 usefulls + both hardcore logic + shapes_list = list(shapesanity_simple.items()) + f(LOCATIONS.shapesanity(1), REGIONS.sanity(REGIONS.full, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.circle)) + f(LOCATIONS.shapesanity(2), REGIONS.sanity(REGIONS.full, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.square)) + f(LOCATIONS.shapesanity(3), REGIONS.sanity(REGIONS.full, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.star)) + f(LOCATIONS.shapesanity(4), REGIONS.sanity(REGIONS.east_wind, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.windmill)) + + # The pool switches dynamically depending on if either it's ratio or limit is reached + switched = 0 + for counting in range(4, amount): + if switched == 0 and (len(shapes_list) == 0 or counting == amount//2): + shapes_list = list(shapesanity_1_4.items()) + switched = 1 + elif switched == 1 and (len(shapes_list) == 0 or counting == amount*7//12): + shapes_list = list(shapesanity_two_sided.items()) + switched = 2 + elif switched == 2 and (len(shapes_list) == 0 or counting == amount*5//6): + shapes_list = list(shapesanity_three_parts.items()) + switched = 3 + elif switched == 3 and (len(shapes_list) == 0 or counting == amount*11//12): + shapes_list = list(shapesanity_four_parts.items()) + switched = 4 + x = random.randint(0, len(shapes_list)-1) + next_shape = shapes_list.pop(x) + included_shapes[LOCATIONS.shapesanity(counting+1)] = (next_shape[1], LocationProgressType.DEFAULT) + append_shapesanity(next_shape[0]) + add_alias(LOCATIONS.shapesanity(counting+1), next_shape[0]) + + return included_shapes + + +def addshapesanity_ut(shapesanity_names: List[str], add_alias: Callable[[str, str], None] + ) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns the same information as addshapesanity but will add specific values based on a UT rebuild.""" + + included_shapes: Dict[str, Tuple[str, LocationProgressType]] = {} + + for name in shapesanity_names: + for options in [shapesanity_simple, shapesanity_1_4, shapesanity_two_sided, shapesanity_three_parts, + shapesanity_four_parts]: + if name in options: + next_shape = options[name] + break + else: + raise ValueError(f"Could not find shapesanity name {name}") + included_shapes[LOCATIONS.shapesanity(len(included_shapes)+1)] = (next_shape, LocationProgressType.DEFAULT) + add_alias(LOCATIONS.shapesanity(len(included_shapes)), name) + return included_shapes + + +class ShapezLocation(Location): + game = OTHER.game_name + + def __init__(self, player: int, name: str, address: Optional[int], region: Region, + progress_type: LocationProgressType): + super(ShapezLocation, self).__init__(player, name, address, region) + self.progress_type = progress_type diff --git a/worlds/shapez/options.py b/worlds/shapez/options.py new file mode 100644 index 000000000000..bc3fc1ed2fbc --- /dev/null +++ b/worlds/shapez/options.py @@ -0,0 +1,310 @@ +import pkgutil +from dataclasses import dataclass + +import orjson + +from Options import Toggle, Choice, PerGameCommonOptions, NamedRange, Range +from .common.options import FloatRangeText + +datapackage_options = orjson.loads(pkgutil.get_data(__name__, "data/options.json")) +max_levels_and_upgrades = datapackage_options["max_levels_and_upgrades"] +max_shapesanity = datapackage_options["max_shapesanity"] +del datapackage_options + + +class Goal(Choice): + """Sets the goal of your world. + + - **Vanilla:** Complete level 26. + - **MAM:** Complete a specified level after level 26. Every level before that will be a location. It's recommended + to build a Make-Anything-Machine (MAM). + - **Even fasterer:** Upgrade everything to a specified tier after tier 8. Every upgrade before that will be a + location. + - **Efficiency III:** Deliver 256 blueprint shapes per second to the hub.""" + display_name = "Goal" + rich_text_doc = True + option_vanilla = 0 + option_mam = 1 + option_even_fasterer = 2 + option_efficiency_iii = 3 + default = 0 + + +class GoalAmount(NamedRange): + """Specify, what level or tier (when either MAM or Even Fasterer is chosen as goal) is required to reach the goal. + + If MAM is set as the goal, this has to be set to 27 or more. Else it will raise an error.""" + display_name = "Goal amount" + rich_text_doc = True + range_start = 9 + range_end = max_levels_and_upgrades + default = 27 + special_range_names = { + "minimum_mam": 27, + "recommended_mam": 50, + "long_game_mam": 120, + "minimum_even_fasterer": 9, + "recommended_even_fasterer": 16, + "long_play_even_fasterer": 35, + } + + +class RequiredShapesMultiplier(Range): + """Multiplies the amount of required shapes for levels and upgrades by value/10. + + For level 1, the amount of shapes ranges from 3 to 300. + + For level 26, it ranges from 5k to 500k.""" + display_name = "Required shapes multiplier" + rich_text_doc = True + range_start = 1 + range_end = 100 + default = 10 + + +class AllowFloatingLayers(Toggle): + """Toggle whether shape requirements are allowed to have floating layers (like the logo or the rocket shape). + + However, be aware that floating shapes make MAMs much more complex.""" + display_name = "Allow floating layers" + rich_text_doc = True + default = False + + +class RandomizeLevelRequirements(Toggle): + """Randomize the required shapes to complete levels.""" + display_name = "Randomize level requirements" + rich_text_doc = True + default = True + + +class RandomizeUpgradeRequirements(Toggle): + """Randomize the required shapes to buy upgrades.""" + display_name = "Randomize upgrade requirements" + rich_text_doc = True + default = True + + +class RandomizeLevelLogic(Choice): + """If level requirements are randomized, this sets how those random shapes are generated and how logic works for + levels. The shuffled variants shuffle the order of progression buildings obtained in the multiworld. The standard + order is: **cutter -> rotator -> painter -> color mixer -> stacker** + + - **Vanilla:** Level 1 requires nothing, 2-4 require the first building, 5-6 require also the second, 7-8 the + third, 9-10 the fourth, and 11 and onwards the fifth and thereby all buildings. + - **Stretched:** After every floor(maxlevel/6) levels, another building is required. + - **Quick:** Every Level, except level 1, requires another building, with level 6 and onwards requiring all + buildings. + - **Random steps:** After a random amount of levels, another building is required, with level 1 always requiring + none. This can potentially generate like any other option. + - **Hardcore:** All levels (except level 1) have completely random shape requirements and thus require all + buildings. Expect early BKs. + - **Dopamine (overflow):** All levels (except level 1 and the goal) require 2 random buildings (or none in case of + overflow).""" + display_name = "Randomize level logic" + rich_text_doc = True + option_vanilla = 0 + option_vanilla_shuffled = 1 + option_stretched = 2 + option_stretched_shuffled = 3 + option_quick = 4 + option_quick_shuffled = 5 + option_random_steps = 6 + option_random_steps_shuffled = 7 + option_hardcore = 8 + option_dopamine = 9 + option_dopamine_overflow = 10 + default = 2 + + +class RandomizeUpgradeLogic(Choice): + """If upgrade requirements are randomized, this sets how those random shapes are generated + and how logic works for upgrades. + + - **Vanilla-like:** Tier II requires up to two random buildings, III requires up to three random buildings, + and IV and onwards require all processing buildings. + - **Linear:** Tier II requires nothing, III-VI require another random building each, + and VII and onwards require all buildings. + - **Category:** Belt and miner upgrades require no building up to tier V, but onwards all buildings, processors + upgrades require the cutter (all tiers), rotator (tier III and onwards), and stacker (tier V and onwards), and + painting upgrades require the cutter, rotator, stacker, painter (all tiers) and color mixer (tiers V and onwards). + Tier VII and onwards will always require all buildings. + - **Category random:** Each upgrades category (up to tier VI) requires a random amount of buildings (in order), + with one category always requiring no buildings. Tier VII and onwards will always require all buildings. + - **Hardcore:** All tiers (except each tier II) have completely random shape requirements and thus require all + buildings. Expect early BKs.""" + display_name = "Randomize upgrade logic" + rich_text_doc = True + option_vanilla_like = 0 + option_linear = 1 + option_category = 2 + option_category_random = 3 + option_hardcore = 4 + default = 1 + + +class ThroughputLevelsRatio(NamedRange): + """If level requirements are randomized, this sets the ratio of how many levels (approximately) will require either + a total amount or per second amount (throughput) of shapes delivered. + + 0 means only total, 100 means only throughput, and vanilla (-1) means only levels 14, 27 and beyond have throughput. + """ + display_name = "Throughput levels ratio" + rich_text_doc = True + range_start = 0 + range_end = 100 + default = 0 + special_range_names = { + "vanilla": -1, + "only_total": 0, + "half_half": 50, + "only_throughput": 100, + } + + +class ComplexityGrowthGradient(FloatRangeText): + """If level requirements are randomized, this determines how fast complexity will grow each level. In other words: + The higher you set this value, the more difficult lategame shapes will be. + + Allowed values are floating numbers ranging from 0.0 to 10.0.""" + display_name = "Complexity growth gradient" + rich_text_doc = True + range_start = 0.0 + range_end = 10.0 + default = "0.5" + + +class SameLateUpgradeRequirements(Toggle): + """If upgrade requirements are randomized, should the last 3 shapes for each category be the same, + as in vanilla?""" + display_name = "Same late upgrade requirements" + rich_text_doc = True + default = True + + +class EarlyBalancerTunnelAndTrash(Choice): + """Makes the balancer, tunnel, and trash appear in earlier spheres. + + - **None:** Complete randomization. + - **5 buildings:** Should be accessible before getting all 5 main buildings. + - **3 buildings:** Should be accessible before getting the first 3 main buildings for levels and upgrades. + - **Sphere 1:** Always accessible from start. **Beware of generation failures.**""" + display_name = "Early balancer, tunnel, and trash" + rich_text_doc = True + option_none = 0 + option_5_buildings = 1 + option_3_buildings = 2 + option_sphere_1 = 3 + default = 2 + + +class LockBeltAndExtractor(Toggle): + """Locks Belts and Extractors and adds them to the item pool. + + **If you set this to true, achievements must also be included.**""" + display_name = "Lock Belt and Extractor" + rich_text_doc = True + default = False + + +class IncludeAchievements(Toggle): + """Include up to 45 achievements (depending on other options) as additional locations.""" + display_name = "Include Achievements" + rich_text_doc = True + default = True + + +class ExcludeSoftlockAchievements(Toggle): + """Exclude 6 achievements, that can become unreachable in a save file, if not achieved until a certain level.""" + display_name = "Exclude softlock achievements" + rich_text_doc = True + default = True + + +class ExcludeLongPlaytimeAchievements(Toggle): + """Exclude 2 achievements, that require actively playing for a really long time.""" + display_name = "Exclude long playtime achievements" + rich_text_doc = True + default = True + + +class ExcludeProgressionUnreasonable(Toggle): + """Exclude progression and useful items from being placed into softlock and long playtime achievements.""" + display_name = "Exclude progression items in softlock and long playtime achievements" + rich_text_doc = True + default = True + + +class ShapesanityAmount(Range): + """Amount of single-layer shapes that will be included as locations.""" + display_name = "Shapesanity amount" + rich_text_doc = True + range_start = 4 + range_end = max_shapesanity + default = 50 + + +class TrapsProbability(NamedRange): + """The probability of any filler item (in percent) being replaced by a trap.""" + display_name = "Traps Percentage" + rich_text_doc = True + range_start = 0 + range_end = 100 + default = 0 + special_range_names = { + "none": 0, + "rare": 4, + "occasionally": 10, + "maximum_suffering": 100, + } + + +class IncludeWhackyUpgrades(Toggle): + """Includes some very unusual upgrade items in generation (and logic), that greatly increase or decrease building + speeds. If the goal is set to Efficiency III or throughput levels ratio is not 0, decreasing upgrades (aka traps) + will always be disabled.""" + display_name = "Include Whacky Upgrades" + rich_text_doc = True + default = False + + +class SplitInventoryDrainingTrap(Toggle): + """If set to true, the inventory draining trap will be split into level, upgrade, and blueprint draining traps + instead of executing as one of those 3 randomly.""" + display_name = "Split Inventory Draining Trap" + rich_text_doc = True + default = False + + +class ToolbarShuffling(Toggle): + """If set to true, the toolbars (main and wires layer) will be shuffled (including bottom and top row). + However, keybindings will still select the same building to place.""" + display_name = "Toolbar Shuffling" + rich_text_doc = True + default = True + + +@dataclass +class ShapezOptions(PerGameCommonOptions): + goal: Goal + goal_amount: GoalAmount + required_shapes_multiplier: RequiredShapesMultiplier + allow_floating_layers: AllowFloatingLayers + randomize_level_requirements: RandomizeLevelRequirements + randomize_upgrade_requirements: RandomizeUpgradeRequirements + randomize_level_logic: RandomizeLevelLogic + randomize_upgrade_logic: RandomizeUpgradeLogic + throughput_levels_ratio: ThroughputLevelsRatio + complexity_growth_gradient: ComplexityGrowthGradient + same_late_upgrade_requirements: SameLateUpgradeRequirements + early_balancer_tunnel_and_trash: EarlyBalancerTunnelAndTrash + lock_belt_and_extractor: LockBeltAndExtractor + include_achievements: IncludeAchievements + exclude_softlock_achievements: ExcludeSoftlockAchievements + exclude_long_playtime_achievements: ExcludeLongPlaytimeAchievements + exclude_progression_unreasonable: ExcludeProgressionUnreasonable + shapesanity_amount: ShapesanityAmount + traps_percentage: TrapsProbability + include_whacky_upgrades: IncludeWhackyUpgrades + split_inventory_draining_trap: SplitInventoryDrainingTrap + toolbar_shuffling: ToolbarShuffling diff --git a/worlds/shapez/presets.py b/worlds/shapez/presets.py new file mode 100644 index 000000000000..e01192d594e9 --- /dev/null +++ b/worlds/shapez/presets.py @@ -0,0 +1,49 @@ +from .options import max_levels_and_upgrades, max_shapesanity + +options_presets = { + "Most vanilla": { + "goal": "vanilla", + "randomize_level_requirements": False, + "randomize_upgrade_requirements": False, + "early_balancer_tunnel_and_trash": "3_buildings", + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "shapesanity_amount": 4, + "toolbar_shuffling": False, + }, + "Minimum checks": { + "goal": "vanilla", + "include_achievements": False, + "shapesanity_amount": 4 + }, + "Maximum checks": { + "goal": "even_fasterer", + "goal_amount": max_levels_and_upgrades, + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "shapesanity_amount": max_shapesanity + }, + "Restrictive start": { + "goal": "vanilla", + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": "hardcore", + "randomize_upgrade_logic": "hardcore", + "early_balancer_tunnel_and_trash": "sphere_1", + "include_achievements": False, + "shapesanity_amount": 4 + }, + "Quick game": { + "goal": "efficiency_iii", + "required_shapes_multiplier": 1, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": "hardcore", + "randomize_upgrade_logic": "hardcore", + "include_achievements": False, + "shapesanity_amount": 4, + "include_whacky_upgrades": True, + } +} diff --git a/worlds/shapez/regions.py b/worlds/shapez/regions.py new file mode 100644 index 000000000000..c4ca1d0c816e --- /dev/null +++ b/worlds/shapez/regions.py @@ -0,0 +1,277 @@ +from typing import Dict, Tuple, List + +from BaseClasses import Region, MultiWorld, LocationProgressType, ItemClassification, CollectionState +from .items import ShapezItem +from .locations import ShapezLocation +from .data.strings import ITEMS, REGIONS, GOALS, LOCATIONS, OPTIONS +from worlds.generic.Rules import add_rule + +shapesanity_processing = [REGIONS.full, REGIONS.half, REGIONS.piece, REGIONS.stitched, REGIONS.east_wind, + REGIONS.half_half, REGIONS.col_east_wind, REGIONS.col_half_half, REGIONS.col_full, + REGIONS.col_half] +shapesanity_coloring = [REGIONS.uncol, REGIONS.painted, REGIONS.mixed] + +all_regions = [ + REGIONS.menu, REGIONS.belt, REGIONS.extract, REGIONS.main, + REGIONS.levels_1, REGIONS.levels_2, REGIONS.levels_3, REGIONS.levels_4, REGIONS.levels_5, + REGIONS.upgrades_1, REGIONS.upgrades_2, REGIONS.upgrades_3, REGIONS.upgrades_4, REGIONS.upgrades_5, + REGIONS.paint_not_quad, REGIONS.cut_not_quad, REGIONS.rotate_cw, REGIONS.stack_shape, REGIONS.store_shape, + REGIONS.trash_shape, REGIONS.blueprint, REGIONS.wiring, REGIONS.mam, REGIONS.any_building, + REGIONS.all_buildings, REGIONS.all_buildings_x1_6_belt, + *[REGIONS.sanity(processing, coloring) + for processing in shapesanity_processing + for coloring in shapesanity_coloring], +] + + +def can_cut_half(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.cutter, player) + + +def can_rotate_90(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.rotator, ITEMS.rotator_ccw), player) + + +def can_rotate_180(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.rotator, ITEMS.rotator_ccw, ITEMS.rotator_180), player) + + +def can_stack(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.stacker, player) + + +def can_paint(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.painter, ITEMS.painter_double), player) or can_use_quad_painter(state, player) + + +def can_mix_colors(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.color_mixer, player) + + +def has_tunnel(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.tunnel, ITEMS.tunnel_tier_ii), player) + + +def has_balancer(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.balancer, player) or state.has_all((ITEMS.comp_merger, ITEMS.comp_splitter), player) + + +def can_use_quad_painter(state: CollectionState, player: int) -> bool: + return (state.has_all((ITEMS.painter_quad, ITEMS.wires), player) and + state.has_any((ITEMS.switch, ITEMS.const_signal), player)) + + +def can_make_stitched_shape(state: CollectionState, player: int, floating: bool) -> bool: + return (can_stack(state, player) and + ((state.has(ITEMS.cutter_quad, player) and not floating) or + (can_cut_half(state, player) and can_rotate_90(state, player)))) + + +def can_build_mam(state: CollectionState, player: int, floating: bool) -> bool: + return (can_make_stitched_shape(state, player, floating) and can_paint(state, player) and + can_mix_colors(state, player) and has_balancer(state, player) and has_tunnel(state, player) and + state.has_all((ITEMS.belt_reader, ITEMS.storage, ITEMS.item_filter, + ITEMS.wires, ITEMS.logic_gates, ITEMS.virtual_proc), player)) + + +def can_make_east_windmill(state: CollectionState, player: int) -> bool: + # Only used for shapesanity => single layers + return (can_stack(state, player) and + (state.has(ITEMS.cutter_quad, player) or (can_cut_half(state, player) and can_rotate_180(state, player)))) + + +def can_make_half_half_shape(state: CollectionState, player: int) -> bool: + # Only used for shapesanity => single layers + return can_stack(state, player) and state.has_any((ITEMS.cutter, ITEMS.cutter_quad), player) + + +def can_make_half_shape(state: CollectionState, player: int) -> bool: + # Only used for shapesanity => single layers + return can_cut_half(state, player) or state.has_all((ITEMS.cutter_quad, ITEMS.stacker), player) + + +def has_x_belt_multiplier(state: CollectionState, player: int, needed: float) -> bool: + # Assumes there are no upgrade traps + multiplier = 1.0 + # Rising upgrades do the least improvement if received before other upgrades + for _ in range(state.count(ITEMS.upgrade_rising_belt, player)): + multiplier *= 2 + multiplier += state.count(ITEMS.upgrade_gigantic_belt, player)*10 + multiplier += state.count(ITEMS.upgrade_big_belt, player) + multiplier += state.count(ITEMS.upgrade_small_belt, player)*0.1 + return multiplier >= needed + + +def has_logic_list_building(state: CollectionState, player: int, buildings: List[str], index: int, + includeuseful: bool) -> bool: + + # Includes balancer, tunnel, and trash in logic in order to make them appear in earlier spheres + if includeuseful and not (state.has(ITEMS.trash, player) and has_balancer(state, player) and + has_tunnel(state, player)): + return False + + if buildings[index] == ITEMS.cutter: + if buildings.index(ITEMS.stacker) < index: + return state.has_any((ITEMS.cutter, ITEMS.cutter_quad), player) + else: + return can_cut_half(state, player) + elif buildings[index] == ITEMS.rotator: + return can_rotate_90(state, player) + elif buildings[index] == ITEMS.stacker: + return can_stack(state, player) + elif buildings[index] == ITEMS.painter: + return can_paint(state, player) + elif buildings[index] == ITEMS.color_mixer: + return can_mix_colors(state, player) + + +def create_shapez_regions(player: int, multiworld: MultiWorld, floating: bool, + included_locations: Dict[str, Tuple[str, LocationProgressType]], + location_name_to_id: Dict[str, int], level_logic_buildings: List[str], + upgrade_logic_buildings: List[str], early_useful: str, goal: str) -> List[Region]: + """Creates and returns a list of all regions with entrances and all locations placed correctly.""" + regions: Dict[str, Region] = {name: Region(name, player, multiworld) for name in all_regions} + + # Creates ShapezLocations for every included location and puts them into the correct region + for name, data in included_locations.items(): + regions[data[0]].locations.append(ShapezLocation(player, name, location_name_to_id[name], + regions[data[0]], data[1])) + + # Create goal event + if goal in [GOALS.vanilla, GOALS.mam]: + goal_region = regions[REGIONS.levels_5] + elif goal == GOALS.even_fasterer: + goal_region = regions[REGIONS.upgrades_5] + else: + goal_region = regions[REGIONS.all_buildings] + goal_location = ShapezLocation(player, LOCATIONS.goal, None, goal_region, LocationProgressType.DEFAULT) + goal_location.place_locked_item(ShapezItem(ITEMS.goal, ItemClassification.progression_skip_balancing, None, player)) + if goal == GOALS.efficiency_iii: + add_rule(goal_location, lambda state: has_x_belt_multiplier(state, player, 8)) + goal_region.locations.append(goal_location) + multiworld.completion_condition[player] = lambda state: state.has(ITEMS.goal, player) + + # Connect Menu to rest of regions + regions[REGIONS.menu].connect(regions[REGIONS.belt], "Placing belts", lambda state: state.has(ITEMS.belt, player)) + regions[REGIONS.menu].connect(regions[REGIONS.extract], "Extracting shapes from patches", + lambda state: state.has_any((ITEMS.extractor, ITEMS.extractor_chain), player)) + regions[REGIONS.extract].connect( + regions[REGIONS.main], "Transporting shapes over the canvas", + lambda state: state.has_any((ITEMS.belt, ITEMS.comp_merger, ITEMS.comp_splitter), player) + ) + + # Connect achievement regions + regions[REGIONS.main].connect(regions[REGIONS.paint_not_quad], "Painting with (double) painter", + lambda state: state.has_any((ITEMS.painter, ITEMS.painter_double), player)) + regions[REGIONS.extract].connect(regions[REGIONS.cut_not_quad], "Cutting with half cutter", + lambda state: can_cut_half(state, player)) + regions[REGIONS.extract].connect(regions[REGIONS.rotate_cw], "Rotating clockwise", + lambda state: state.has(ITEMS.rotator, player)) + regions[REGIONS.extract].connect(regions[REGIONS.stack_shape], "Stacking shapes", + lambda state: can_stack(state, player)) + regions[REGIONS.extract].connect(regions[REGIONS.store_shape], "Storing shapes", + lambda state: state.has(ITEMS.storage, player)) + regions[REGIONS.extract].connect(regions[REGIONS.trash_shape], "Trashing shapes", + lambda state: state.has(ITEMS.trash, player)) + regions[REGIONS.main].connect(regions[REGIONS.blueprint], "Copying and placing blueprints", + lambda state: state.has(ITEMS.blueprints, player) and + can_make_stitched_shape(state, player, floating) and + can_paint(state, player) and can_mix_colors(state, player)) + regions[REGIONS.menu].connect(regions[REGIONS.wiring], "Using the wires layer", + lambda state: state.has(ITEMS.wires, player)) + regions[REGIONS.main].connect(regions[REGIONS.mam], "Building a MAM", + lambda state: can_build_mam(state, player, floating)) + regions[REGIONS.menu].connect(regions[REGIONS.any_building], "Placing any building", lambda state: state.has_any(( + ITEMS.belt, ITEMS.balancer, ITEMS.comp_merger, ITEMS.comp_splitter, ITEMS.tunnel, ITEMS.tunnel_tier_ii, + ITEMS.extractor, ITEMS.extractor_chain, ITEMS.cutter, ITEMS.cutter_quad, ITEMS.rotator, ITEMS.rotator_ccw, + ITEMS.rotator_180, ITEMS.stacker, ITEMS.painter, ITEMS.painter_double, ITEMS.painter_quad, ITEMS.color_mixer, + ITEMS.trash, ITEMS.belt_reader, ITEMS.storage, ITEMS.switch, ITEMS.item_filter, ITEMS.display, ITEMS.wires + ), player)) + regions[REGIONS.main].connect(regions[REGIONS.all_buildings], "Using all main buildings", + lambda state: can_make_stitched_shape(state, player, floating) and + can_paint(state, player) and can_mix_colors(state, player)) + regions[REGIONS.all_buildings].connect(regions[REGIONS.all_buildings_x1_6_belt], + "Delivering per second with 1.6x belt speed", + lambda state: has_x_belt_multiplier(state, player, 1.6)) + + # Progressively connect level and upgrade regions + regions[REGIONS.main].connect( + regions[REGIONS.levels_1], "Using first level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 0, False)) + regions[REGIONS.levels_1].connect( + regions[REGIONS.levels_2], "Using second level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 1, False)) + regions[REGIONS.levels_2].connect( + regions[REGIONS.levels_3], "Using third level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 2, + early_useful == OPTIONS.buildings_3)) + regions[REGIONS.levels_3].connect( + regions[REGIONS.levels_4], "Using fourth level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 3, False)) + regions[REGIONS.levels_4].connect( + regions[REGIONS.levels_5], "Using fifth level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 4, + early_useful == OPTIONS.buildings_5)) + regions[REGIONS.main].connect( + regions[REGIONS.upgrades_1], "Using first upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 0, False)) + regions[REGIONS.upgrades_1].connect( + regions[REGIONS.upgrades_2], "Using second upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 1, False)) + regions[REGIONS.upgrades_2].connect( + regions[REGIONS.upgrades_3], "Using third upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 2, + early_useful == OPTIONS.buildings_3)) + regions[REGIONS.upgrades_3].connect( + regions[REGIONS.upgrades_4], "Using fourth upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 3, False)) + regions[REGIONS.upgrades_4].connect( + regions[REGIONS.upgrades_5], "Using fifth upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 4, + early_useful == OPTIONS.buildings_5)) + + # Connect Uncolored shapesanity regions to Main + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.full, REGIONS.uncol)], "Delivering unprocessed", lambda state: True) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.half, REGIONS.uncol)], "Cutting in single half", + lambda state: can_make_half_shape(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.piece, REGIONS.uncol)], "Cutting in single piece", + lambda state: (can_cut_half(state, player) and can_rotate_90(state, player)) or + state.has(ITEMS.cutter_quad, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.half_half, REGIONS.uncol)], "Cutting and stacking into two halves", + lambda state: can_make_half_half_shape(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.stitched, REGIONS.uncol)], "Stitching complex shapes", + lambda state: can_make_stitched_shape(state, player, floating)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.east_wind, REGIONS.uncol)], "Rotating and stitching a single windmill half", + lambda state: can_make_east_windmill(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_full, REGIONS.uncol)], "Painting with a quad painter or stitching", + lambda state: can_make_stitched_shape(state, player, floating) or can_use_quad_painter(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_east_wind, REGIONS.uncol)], "Why windmill, why?", + lambda state: can_make_stitched_shape(state, player, floating) or + (can_use_quad_painter(state, player) and can_make_east_windmill(state, player))) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_half_half, REGIONS.uncol)], "Quad painting a half-half shape", + lambda state: can_make_stitched_shape(state, player, floating) or + (can_use_quad_painter(state, player) and can_make_half_half_shape(state, player))) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_half, REGIONS.uncol)], "Quad painting a half shape", + lambda state: can_make_stitched_shape(state, player, floating) or + (can_use_quad_painter(state, player) and can_make_half_shape(state, player))) + + # Progressively connect colored shapesanity regions + for processing in shapesanity_processing: + regions[REGIONS.sanity(processing, REGIONS.uncol)].connect( + regions[REGIONS.sanity(processing, REGIONS.painted)], f"Painting a {processing.lower()} shape", + lambda state: can_paint(state, player)) + regions[REGIONS.sanity(processing, REGIONS.painted)].connect( + regions[REGIONS.sanity(processing, REGIONS.mixed)], f"Mixing colors for a {processing.lower()} shape", + lambda state: can_mix_colors(state, player)) + + return [region for region in regions.values() if len(region.locations) or len(region.exits)] diff --git a/worlds/shapez/test/__init__.py b/worlds/shapez/test/__init__.py new file mode 100644 index 000000000000..3ab626e63936 --- /dev/null +++ b/worlds/shapez/test/__init__.py @@ -0,0 +1,213 @@ +from unittest import TestCase + +from test.bases import WorldTestBase +from .. import options_presets, ShapezWorld +from ..data.strings import GOALS, OTHER, ITEMS, LOCATIONS, CATEGORY, OPTIONS, SHAPESANITY +from ..options import max_levels_and_upgrades, max_shapesanity + + +class ShapezTestBase(WorldTestBase): + game = OTHER.game_name + world: ShapezWorld + + def test_location_count(self): + self.assertTrue(self.world.location_count > 0, + f"location_count is {self.world.location_count} for some reason.") + + def test_logic_lists(self): + logic_buildings = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + for building in logic_buildings: + count = self.world.level_logic.count(building) + self.assertTrue(count == 1, f"{building} was found {count} times in level_logic.") + count = self.world.upgrade_logic.count(building) + self.assertTrue(count == 1, f"{building} was found {count} times in upgrade_logic.") + self.assertTrue(len(self.world.level_logic) == 5, + f"level_logic contains {len(self.world.level_logic)} entries instead of the expected 5.") + self.assertTrue(len(self.world.upgrade_logic) == 5, + f"upgrade_logic contains {len(self.world.upgrade_logic)} entries instead of the expected 5.") + + def test_random_logic_phase_length(self): + self.assertTrue(len(self.world.random_logic_phase_length) == 5, + f"random_logic_phase_length contains {len(self.world.random_logic_phase_length)} entries " + + f"instead of the expected 5.") + self.assertTrue(sum(self.world.random_logic_phase_length) < self.world.maxlevel, + f"The sum of all random phase lengths is greater than allowed: " + + str(sum(self.world.random_logic_phase_length))) + for length in self.world.random_logic_phase_length: + self.assertTrue(length in range(self.world.maxlevel), + f"Found an illegal value in random_logic_phase_length: {length}") + + def test_category_random_logic_amounts(self): + self.assertTrue(len(self.world.category_random_logic_amounts) == 4, + f"Found {len(self.world.category_random_logic_amounts)} instead of 4 keys in " + f"category_random_logic_amounts.") + self.assertTrue(min(self.world.category_random_logic_amounts.values()) == 0, + "Found a value less than or no 0 in category_random_logic_amounts.") + self.assertTrue(max(self.world.category_random_logic_amounts.values()) <= 5, + "Found a value greater than 5 in category_random_logic_amounts.") + + def test_maxlevel_and_finaltier(self): + self.assertTrue(self.world.maxlevel in range(25, max_levels_and_upgrades), + f"Found an illegal value for maxlevel: {self.world.maxlevel}") + self.assertTrue(self.world.finaltier in range(8, max_levels_and_upgrades+1), + f"Found an illegal value for finaltier: {self.world.finaltier}") + + def test_included_locations(self): + self.assertTrue(len(self.world.included_locations) > 0, "Found no locations cached in included_locations.") + self.assertTrue(LOCATIONS.level(1) in self.world.included_locations.keys(), + "Could not find Level 1 (guraranteed location) cached in included_locations.") + self.assertTrue(LOCATIONS.upgrade(CATEGORY.belt, "II") in self.world.included_locations.keys(), + "Could not find Belt Upgrade Tier II (guraranteed location) cached in included_locations.") + self.assertTrue(LOCATIONS.shapesanity(1) in self.world.included_locations.keys(), + "Could not find Shapesanity 1 (guraranteed location) cached in included_locations.") + + def test_shapesanity_names(self): + names_length = len(self.world.shapesanity_names) + locations_length = len([0 for loc in self.multiworld.get_locations(self.player) if "Shapesanity" in loc.name]) + self.assertEqual(names_length, locations_length, + f"The amount of shapesanity names ({names_length}) does not match the amount of included " + + f"shapesanity locations ({locations_length}).") + self.assertTrue(SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.circle) in self.world.shapesanity_names, + "Uncolored Circle is guaranteed but was not found in shapesanity_names.") + + def test_efficiency_iii_no_softlock(self): + if self.world.options.goal == GOALS.efficiency_iii: + for item in self.multiworld.itempool: + self.assertFalse(item.name.endswith("Upgrade Trap"), + "Item pool contains an upgrade trap, which could make the efficiency_iii goal " + "unreachable if collected.") + + +class TestGlobalOptionsImport(TestCase): + + def test_global_options_import(self): + self.assertTrue(isinstance(max_levels_and_upgrades, int), f"The global option max_levels_and_upgrades is not " + + f"an integer, but instead a " + + f"{type(max_levels_and_upgrades)}.") + self.assertTrue(max_levels_and_upgrades >= 27, f"max_levels_and_upgrades must be at least 27, but is " + + f"{max_levels_and_upgrades} instead.") + self.assertTrue(isinstance(max_shapesanity, int), f"The global option max_shapesanity is not an integer, but " + + f"instead a {type(max_levels_and_upgrades)}.") + self.assertTrue(max_shapesanity >= 4, f"max_shapesanity must be at least 4, but is " + + f"{max_levels_and_upgrades} instead.") + + +class TestMinimum(ShapezTestBase): + options = options_presets["Minimum checks"] + + +class TestMaximum(ShapezTestBase): + options = options_presets["Maximum checks"] + + +class TestRestrictive(ShapezTestBase): + options = options_presets["Restrictive start"] + + +class TestAllRelevantOptions1(ShapezTestBase): + options = { + "goal": GOALS.vanilla, + "randomize_level_requirements": False, + "randomize_upgrade_requirements": False, + "complexity_growth_gradient": "0.1234", + "early_balancer_tunnel_and_trash": "none", + "lock_belt_and_extractor": True, + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "exclude_progression_unreasonable": True, + "shapesanity_amount": max_shapesanity, + "traps_percentage": "random" + } + + +class TestAllRelevantOptions2(ShapezTestBase): + options = { + "goal": GOALS.mam, + "goal_amount": max_levels_and_upgrades, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": OPTIONS.logic_random_steps, + "randomize_upgrade_logic": OPTIONS.logic_vanilla_like, + "complexity_growth_gradient": "2", + "early_balancer_tunnel_and_trash": OPTIONS.buildings_5, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "exclude_progression_unreasonable": False, + "shapesanity_amount": 4, + "traps_percentage": 0 + } + + +class TestAllRelevantOptions3(ShapezTestBase): + options = { + "goal": GOALS.even_fasterer, + "goal_amount": max_levels_and_upgrades, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": f"{OPTIONS.logic_vanilla}_shuffled", + "randomize_upgrade_logic": OPTIONS.logic_linear, + "complexity_growth_gradient": "1e-003", + "early_balancer_tunnel_and_trash": OPTIONS.buildings_3, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": True, + "exclude_long_playtime_achievements": True, + "shapesanity_amount": "random", + "traps_percentage": 100, + "include_whacky_upgrades": True, + "split_inventory_draining_trap": True + } + + +class TestAllRelevantOptions4(ShapezTestBase): + options = { + "goal": GOALS.efficiency_iii, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": f"{OPTIONS.logic_stretched}_shuffled", + "randomize_upgrade_logic": OPTIONS.logic_category, + "early_balancer_tunnel_and_trash": OPTIONS.sphere_1, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": True, + "exclude_long_playtime_achievements": True, + "shapesanity_amount": "random", + "traps_percentage": "random", + "include_whacky_upgrades": True, + } + + +class TestAllRelevantOptions5(ShapezTestBase): + options = { + "goal": GOALS.mam, + "goal_amount": "random-range-27-500", + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": f"{OPTIONS.logic_quick}_shuffled", + "randomize_upgrade_logic": OPTIONS.logic_category_random, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": True, + "exclude_long_playtime_achievements": True, + "shapesanity_amount": "random", + "traps_percentage": 100, + "split_inventory_draining_trap": False + } + + +class TestAllRelevantOptions6(ShapezTestBase): + options = { + "goal": GOALS.mam, + "goal_amount": "random-range-27-500", + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": OPTIONS.logic_hardcore, + "randomize_upgrade_logic": OPTIONS.logic_hardcore, + "lock_belt_and_extractor": False, + "include_achievements": False, + "shapesanity_amount": "random", + "traps_percentage": "random" + } From 955a86803fe42006a3fd4d2e3915183a849a5df2 Mon Sep 17 00:00:00 2001 From: Alchav <59858495+Alchav@users.noreply.github.com> Date: Wed, 21 May 2025 11:02:30 -0400 Subject: [PATCH 064/183] Super Mario Land 2: Implement New Game (#2730) Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: alchav --- README.md | 1 + docs/CODEOWNERS | 3 + worlds/marioland2/LICENSE | 21 + worlds/marioland2/__init__.py | 449 ++++++++ worlds/marioland2/basepatch.bsdiff4 | Bin 0 -> 1241 bytes worlds/marioland2/client.py | 250 ++++ .../marioland2/docs/en_Super Mario Land 2.md | 64 ++ worlds/marioland2/docs/setup_en.md | 75 ++ worlds/marioland2/items.py | 79 ++ worlds/marioland2/locations.py | 498 ++++++++ worlds/marioland2/logic.py | 608 ++++++++++ worlds/marioland2/options.py | 198 ++++ worlds/marioland2/rom.py | 146 +++ worlds/marioland2/rom_addresses.py | 39 + worlds/marioland2/sprite_randomizer.py | 131 +++ worlds/marioland2/sprites.py | 1016 +++++++++++++++++ 16 files changed, 3578 insertions(+) create mode 100644 worlds/marioland2/LICENSE create mode 100644 worlds/marioland2/__init__.py create mode 100644 worlds/marioland2/basepatch.bsdiff4 create mode 100644 worlds/marioland2/client.py create mode 100644 worlds/marioland2/docs/en_Super Mario Land 2.md create mode 100644 worlds/marioland2/docs/setup_en.md create mode 100644 worlds/marioland2/items.py create mode 100644 worlds/marioland2/locations.py create mode 100644 worlds/marioland2/logic.py create mode 100644 worlds/marioland2/options.py create mode 100644 worlds/marioland2/rom.py create mode 100644 worlds/marioland2/rom_addresses.py create mode 100644 worlds/marioland2/sprite_randomizer.py create mode 100644 worlds/marioland2/sprites.py diff --git a/README.md b/README.md index 861a6eed1d27..84e62b15280a 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ Currently, the following games are supported: * Civilization VI * The Legend of Zelda: The Wind Waker * Jak and Daxter: The Precursor Legacy +* Super Mario Land 2: 6 Golden Coins For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/). Downloads can be found at [Releases](https://github.com/ArchipelagoMW/Archipelago/releases), including compiled diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index ca19d27da906..2289daad072a 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -178,6 +178,9 @@ # Super Mario 64 /worlds/sm64ex/ @N00byKing +# Super Mario Land 2: 6 Golden Coins +/worlds/marioland2/ @Alchav + # Super Mario World /worlds/smw/ @PoryGone diff --git a/worlds/marioland2/LICENSE b/worlds/marioland2/LICENSE new file mode 100644 index 000000000000..7ac515f432f1 --- /dev/null +++ b/worlds/marioland2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022-2023 Alex "Alchav" Avery + +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. \ No newline at end of file diff --git a/worlds/marioland2/__init__.py b/worlds/marioland2/__init__.py new file mode 100644 index 000000000000..ea1354db6e65 --- /dev/null +++ b/worlds/marioland2/__init__.py @@ -0,0 +1,449 @@ +import base64 +import Utils +import settings +from copy import deepcopy + +from worlds.AutoWorld import World, WebWorld +from BaseClasses import Region, Location, Item, ItemClassification, Tutorial + +from . import client +from .rom import generate_output, SuperMarioLand2ProcedurePatch +from .options import SML2Options +from .locations import (locations, location_name_to_id, level_name_to_id, level_id_to_name, START_IDS, coins_coords, + auto_scroll_max) +from .items import items +from .sprites import level_sprites +from .sprite_randomizer import randomize_enemies, randomize_platforms +from .logic import has_pipe_up, has_pipe_down, has_pipe_left, has_pipe_right, has_level_progression, is_auto_scroll +from . import logic + + +class MarioLand2Settings(settings.Group): + class SML2RomFile(settings.UserFilePath): + """File name of the Super Mario Land 2 1.0 ROM""" + description = "Super Mario Land 2 - 6 Golden Coins (USA, Europe) 1.0 ROM File" + copy_to = "Super Mario Land 2 - 6 Golden Coins (USA, Europe).gb" + md5s = [SuperMarioLand2ProcedurePatch.hash] + + rom_file: SML2RomFile = SML2RomFile(SML2RomFile.copy_to) + + +class MarioLand2WebWorld(WebWorld): + setup_en = Tutorial( + "Multiworld Setup Guide", + "A guide to playing Super Mario Land 2 with Archipelago.", + "English", + "setup_en.md", + "setup/en", + ["Alchav"] + ) + + tutorials = [setup_en] + + +class MarioLand2World(World): + """Super Mario Land 2 is a classic platformer that follows Mario on a quest to reclaim his castle from the + villainous Wario. This iconic game features 32 levels, unique power-ups, and introduces Wario as Mario's + arch-rival.""" # -ChatGPT + + game = "Super Mario Land 2" + + settings_key = "sml2_options" + settings: MarioLand2Settings + + location_name_to_id = location_name_to_id + item_name_to_id = {item_name: ID for ID, item_name in enumerate(items, START_IDS)} + + web = MarioLand2WebWorld() + + item_name_groups = { + "Level Progression": { + item_name for item_name in items if item_name.endswith(("Progression", "Secret", "Secret 1", "Secret 2")) + and "Auto Scroll" not in item_name + }, + "Bells": {item_name for item_name in items if "Bell" in item_name}, + "Golden Coins": {"Mario Coin", "Macro Coin", "Space Coin", "Tree Coin", "Turtle Coin", "Pumpkin Coin"}, + "Coins": {"1 Coin", *{f"{i} Coins" for i in range(2, 169)}}, + "Powerups": {"Mushroom", "Fire Flower", "Carrot"}, + "Difficulties": {"Easy Mode", "Normal Mode"}, + "Auto Scroll Traps": {item_name for item_name in items + if "Auto Scroll" in item_name and "Cancel" not in item_name}, + "Cancel Auto Scrolls": {item_name for item_name in items if "Cancel Auto Scroll" in item_name}, + } + + location_name_groups = { + "Bosses": { + "Tree Zone 5 - Boss", "Space Zone 2 - Boss", "Macro Zone 4 - Boss", + "Pumpkin Zone 4 - Boss", "Mario Zone 4 - Boss", "Turtle Zone 3 - Boss" + }, + "Normal Exits": {location for location in locations if locations[location]["type"] == "level"}, + "Secret Exits": {location for location in locations if locations[location]["type"] == "secret"}, + "Bells": {location for location in locations if locations[location]["type"] == "bell"}, + "Coins": {location for location in location_name_to_id if "Coin" in location} + } + + options_dataclass = SML2Options + options: SML2Options + + generate_output = generate_output + + def __init__(self, world, player: int): + super().__init__(world, player) + self.auto_scroll_levels = [] + self.num_coin_locations = [] + self.max_coin_locations = {} + self.sprite_data = {} + self.coin_fragments_required = 0 + + def generate_early(self): + self.sprite_data = deepcopy(level_sprites) + if self.options.randomize_enemies: + randomize_enemies(self.sprite_data, self.random) + if self.options.randomize_platforms: + randomize_platforms(self.sprite_data, self.random) + + if self.options.marios_castle_midway_bell: + self.sprite_data["Mario's Castle"][35]["sprite"] = "Midway Bell" + + if self.options.auto_scroll_chances == "vanilla": + self.auto_scroll_levels = [int(i in [19, 25, 30]) for i in range(32)] + else: + self.auto_scroll_levels = [int(self.random.randint(1, 100) <= self.options.auto_scroll_chances) + for _ in range(32)] + + self.auto_scroll_levels[level_name_to_id["Mario's Castle"]] = 0 + unbeatable_scroll_levels = ["Tree Zone 3", "Macro Zone 2", "Space Zone 1", "Turtle Zone 2", "Pumpkin Zone 2"] + if not self.options.shuffle_midway_bells: + unbeatable_scroll_levels.append("Pumpkin Zone 1") + for level, i in enumerate(self.auto_scroll_levels): + if i == 1: + if self.options.auto_scroll_mode in ("global_cancel_item", "level_cancel_items"): + self.auto_scroll_levels[level] = 2 + elif self.options.auto_scroll_mode == "chaos": + if (self.options.accessibility == "full" + and level_id_to_name[level] in unbeatable_scroll_levels): + self.auto_scroll_levels[level] = 2 + else: + self.auto_scroll_levels[level] = self.random.randint(1, 3) + elif (self.options.accessibility == "full" + and level_id_to_name[level] in unbeatable_scroll_levels): + self.auto_scroll_levels[level] = 0 + if self.auto_scroll_levels[level] == 1 and "trap" in self.options.auto_scroll_mode.current_key: + self.auto_scroll_levels[level] = 3 + + def create_regions(self): + menu_region = Region("Menu", self.player, self.multiworld) + self.multiworld.regions.append(menu_region) + created_regions = [] + for location_name, data in locations.items(): + region_name = location_name.split(" -")[0] + if region_name in created_regions: + region = self.multiworld.get_region(region_name, self.player) + else: + region = Region(region_name, self.player, self.multiworld) + if region_name == "Tree Zone Secret Course": + region_to_connect = self.multiworld.get_region("Tree Zone 2", self.player) + elif region_name == "Space Zone Secret Course": + region_to_connect = self.multiworld.get_region("Space Zone 1", self.player) + elif region_name == "Macro Zone Secret Course": + region_to_connect = self.multiworld.get_region("Macro Zone 1", self.player) + elif region_name == "Pumpkin Zone Secret Course 1": + region_to_connect = self.multiworld.get_region("Pumpkin Zone 2", self.player) + elif region_name == "Pumpkin Zone Secret Course 2": + region_to_connect = self.multiworld.get_region("Pumpkin Zone 3", self.player) + elif region_name == "Turtle Zone Secret Course": + region_to_connect = self.multiworld.get_region("Turtle Zone 2", self.player) + elif region_name.split(" ")[-1].isdigit() and int(region_name.split(" ")[-1]) > 1: + region_to_connect = self.multiworld.get_region(" ".join(region_name.split(" ")[:2]) + + f" {int(region_name.split(' ')[2]) - 1}", + self.player) + else: + region_to_connect = menu_region + region_to_connect.connect(region) + self.multiworld.regions.append(region) + created_regions.append(region_name) + + if location_name == "Mario's Castle - Midway Bell" and not self.options.marios_castle_midway_bell: + continue + region.locations.append(MarioLand2Location(self.player, location_name, + self.location_name_to_id[location_name], region)) + self.multiworld.get_region("Macro Zone Secret Course", self.player).connect( + self.multiworld.get_region("Macro Zone 4", self.player)) + self.multiworld.get_region("Macro Zone 4", self.player).connect( + self.multiworld.get_region("Macro Zone Secret Course", self.player)) + + castle = self.multiworld.get_region("Mario's Castle", self.player) + wario = MarioLand2Location(self.player, "Mario's Castle - Wario", parent=castle) + castle.locations.append(wario) + wario.place_locked_item(MarioLand2Item("Wario Defeated", ItemClassification.progression, None, self.player)) + + if self.options.coinsanity: + coinsanity_checks = self.options.coinsanity_checks.value + self.num_coin_locations = [[region, 1] for region in created_regions if region != "Mario's Castle"] + self.max_coin_locations = {region: len(coins_coords[region]) for region in created_regions + if region != "Mario's Castle"} + if self.options.accessibility == "full" or self.options.auto_scroll_mode == "always": + for level in self.max_coin_locations: + if level in auto_scroll_max and self.auto_scroll_levels[level_name_to_id[level]] in (1, 3): + if isinstance(auto_scroll_max[level], tuple): + self.max_coin_locations[level] = min( + auto_scroll_max[level][int(self.options.shuffle_midway_bells.value)], + self.max_coin_locations[level]) + else: + self.max_coin_locations[level] = min(auto_scroll_max[level], self.max_coin_locations[level]) + coinsanity_checks = min(sum(self.max_coin_locations.values()), coinsanity_checks) + for i in range(coinsanity_checks - 31): + self.num_coin_locations.sort(key=lambda region: self.max_coin_locations[region[0]] / region[1]) + self.num_coin_locations[-1][1] += 1 + coin_locations = [] + for level, coins in self.num_coin_locations: + if self.max_coin_locations[level]: + coin_thresholds = self.random.sample(range(1, self.max_coin_locations[level] + 1), coins) + coin_locations += [f"{level} - {i} Coin{'s' if i > 1 else ''}" for i in coin_thresholds] + for location_name in coin_locations: + region = self.multiworld.get_region(location_name.split(" -")[0], self.player) + region.locations.append(MarioLand2Location(self.player, location_name, + self.location_name_to_id[location_name], parent=region)) + + def set_rules(self): + entrance_rules = { + "Menu -> Space Zone 1": lambda state: state.has("Hippo Bubble", self.player) + or (state.has("Carrot", self.player) + and not is_auto_scroll(state, self.player, "Hippo Zone")), + "Space Zone 1 -> Space Zone Secret Course": lambda state: state.has("Space Zone Secret", self.player), + "Space Zone 1 -> Space Zone 2": lambda state: has_level_progression(state, "Space Zone Progression", self.player), + "Tree Zone 1 -> Tree Zone 2": lambda state: has_level_progression(state, "Tree Zone Progression", self.player), + "Tree Zone 2 -> Tree Zone Secret Course": lambda state: state.has("Tree Zone Secret", self.player), + "Tree Zone 2 -> Tree Zone 3": lambda state: has_level_progression(state, "Tree Zone Progression", self.player, 2), + "Tree Zone 4 -> Tree Zone 5": lambda state: has_level_progression(state, "Tree Zone Progression", self.player, 3), + "Macro Zone 1 -> Macro Zone Secret Course": lambda state: state.has("Macro Zone Secret 1", self.player), + "Macro Zone Secret Course -> Macro Zone 4": lambda state: state.has("Macro Zone Secret 2", self.player), + "Macro Zone 1 -> Macro Zone 2": lambda state: has_level_progression(state, "Macro Zone Progression", self.player), + "Macro Zone 2 -> Macro Zone 3": lambda state: has_level_progression(state, "Macro Zone Progression", self.player, 2), + "Macro Zone 3 -> Macro Zone 4": lambda state: has_level_progression(state, "Macro Zone Progression", self.player, 3), + "Macro Zone 4 -> Macro Zone Secret Course": lambda state: state.has("Macro Zone Secret 2", self.player), + "Pumpkin Zone 1 -> Pumpkin Zone 2": lambda state: has_level_progression(state, "Pumpkin Zone Progression", self.player), + "Pumpkin Zone 2 -> Pumpkin Zone Secret Course 1": lambda state: state.has("Pumpkin Zone Secret 1", self.player), + "Pumpkin Zone 2 -> Pumpkin Zone 3": lambda state: has_level_progression(state, "Pumpkin Zone Progression", self.player, 2), + "Pumpkin Zone 3 -> Pumpkin Zone Secret Course 2": lambda state: state.has("Pumpkin Zone Secret 2", self.player), + "Pumpkin Zone 3 -> Pumpkin Zone 4": lambda state: has_level_progression(state, "Pumpkin Zone Progression", self.player, 3), + "Mario Zone 1 -> Mario Zone 2": lambda state: has_level_progression(state, "Mario Zone Progression", self.player), + "Mario Zone 2 -> Mario Zone 3": lambda state: has_level_progression(state, "Mario Zone Progression", self.player, 2), + "Mario Zone 3 -> Mario Zone 4": lambda state: has_level_progression(state, "Mario Zone Progression", self.player, 3), + "Turtle Zone 1 -> Turtle Zone 2": lambda state: has_level_progression(state, "Turtle Zone Progression", self.player), + "Turtle Zone 2 -> Turtle Zone Secret Course": lambda state: state.has("Turtle Zone Secret", self.player), + "Turtle Zone 2 -> Turtle Zone 3": lambda state: has_level_progression(state, "Turtle Zone Progression", self.player, 2), + } + + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + # Require the other coins just to ensure they are being added to start inventory properly, + # and so they show up in Playthrough as required + entrance_rules["Menu -> Mario's Castle"] = lambda state: (state.has_all( + ["Tree Coin", "Space Coin", "Macro Coin", "Pumpkin Coin", "Turtle Coin"], self.player) + and state.has("Mario Coin Fragment", self.player, self.coin_fragments_required)) + else: + entrance_rules["Menu -> Mario's Castle"] = lambda state: state.has_from_list_unique([ + "Tree Coin", "Space Coin", "Macro Coin", "Pumpkin Coin", "Mario Coin", "Turtle Coin" + ], self.player, self.options.required_golden_coins) + + + for entrance, rule in entrance_rules.items(): + self.multiworld.get_entrance(entrance, self.player).access_rule = rule + + for location in self.multiworld.get_locations(self.player): + if location.name.endswith(("Coins", "Coin")): + rule = getattr(logic, location.parent_region.name.lower().replace(" ", "_") + "_coins", None) + if rule: + coins = int(location.name.split(" ")[-2]) + location.access_rule = lambda state, coin_rule=rule, num_coins=coins: \ + coin_rule(state, self.player, num_coins) + else: + rule = getattr(logic, location.name.lower().replace( + " - ", "_").replace(" ", "_").replace("'", ""), None) + if rule: + location.access_rule = lambda state, loc_rule=rule: loc_rule(state, self.player) + self.multiworld.completion_condition[self.player] = lambda state: state.has("Wario Defeated", self.player) + + def create_items(self): + item_counts = { + "Space Zone Progression": 1, + "Space Zone Secret": 1, + "Tree Zone Progression": 3, + "Tree Zone Secret": 1, + "Macro Zone Progression": 3, + "Macro Zone Secret 1": 1, + "Macro Zone Secret 2": 1, + "Pumpkin Zone Progression": 3, + "Pumpkin Zone Secret 1": 1, + "Pumpkin Zone Secret 2": 1, + "Mario Zone Progression": 3, + "Turtle Zone Progression": 2, + "Turtle Zone Secret": 1, + "Mushroom": 1, + "Fire Flower": 1, + "Carrot": 1, + "Space Physics": 1, + "Hippo Bubble": 1, + "Water Physics": 1, + "Super Star Duration Increase": 2, + "Mario Coin Fragment": 0, + } + + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + # There are 5 Zone Progression items that can be condensed. + item_counts["Mario Coin Fragment"] = 1 + ((5 * self.options.mario_coin_fragment_percentage) // 100) + + if self.options.coinsanity: + coin_count = sum([level[1] for level in self.num_coin_locations]) + max_coins = sum(self.max_coin_locations.values()) + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + removed_coins = (coin_count * self.options.mario_coin_fragment_percentage) // 100 + coin_count -= removed_coins + item_counts["Mario Coin Fragment"] += removed_coins + # Randomly remove some coin items for variety + coin_count -= (coin_count // self.random.randint(100, max(100, coin_count))) + + if coin_count: + coin_bundle_sizes = [max_coins // coin_count] * coin_count + remainder = max_coins - sum(coin_bundle_sizes) + for i in range(remainder): + coin_bundle_sizes[i] += 1 + for a, b in zip(range(1, len(coin_bundle_sizes), 2), range(2, len(coin_bundle_sizes), 2)): + split = self.random.randint(1, coin_bundle_sizes[a] + coin_bundle_sizes[b] - 1) + coin_bundle_sizes[a], coin_bundle_sizes[b] = split, coin_bundle_sizes[a] + coin_bundle_sizes[b] - split + for coin_bundle_size in coin_bundle_sizes: + item_name = f"{coin_bundle_size} Coin{'s' if coin_bundle_size > 1 else ''}" + if item_name in item_counts: + item_counts[item_name] += 1 + else: + item_counts[item_name] = 1 + + if self.options.shuffle_golden_coins == "shuffle": + for item in self.item_name_groups["Golden Coins"]: + item_counts[item] = 1 + elif self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + for item in ("Tree Coin", "Space Coin", "Macro Coin", "Pumpkin Coin", "Turtle Coin"): + self.multiworld.push_precollected(self.create_item(item)) + else: + for item, location_name in ( + ("Mario Coin", "Mario Zone 4 - Boss"), + ("Tree Coin", "Tree Zone 5 - Boss"), + ("Space Coin", "Space Zone 2 - Boss"), + ("Macro Coin", "Macro Zone 4 - Boss"), + ("Pumpkin Coin", "Pumpkin Zone 4 - Boss"), + ("Turtle Coin", "Turtle Zone 3 - Boss") + ): + location = self.multiworld.get_location(location_name, self.player) + location.place_locked_item(self.create_item(item)) + location.address = None + location.item.code = None + + if self.options.shuffle_midway_bells: + for item in [item for item in items if "Midway Bell" in item]: + if item != "Mario's Castle Midway Bell" or self.options.marios_castle_midway_bell: + item_counts[item] = 1 + + if self.options.difficulty_mode == "easy_to_normal": + item_counts["Normal Mode"] = 1 + elif self.options.difficulty_mode == "normal_to_easy": + item_counts["Easy Mode"] = 1 + + if self.options.shuffle_pipe_traversal == "single": + item_counts["Pipe Traversal"] = 1 + elif self.options.shuffle_pipe_traversal == "split": + item_counts["Pipe Traversal - Right"] = 1 + item_counts["Pipe Traversal - Left"] = 1 + item_counts["Pipe Traversal - Up"] = 1 + item_counts["Pipe Traversal - Down"] = 1 + else: + self.multiworld.push_precollected(self.create_item("Pipe Traversal")) + + if any(self.auto_scroll_levels): + if self.options.auto_scroll_mode == "global_trap_item": + item_counts["Auto Scroll"] = 1 + elif self.options.auto_scroll_mode == "global_cancel_item": + item_counts["Cancel Auto Scroll"] = 1 + else: + for level, i in enumerate(self.auto_scroll_levels): + if i == 3: + item_counts[f"Auto Scroll - {level_id_to_name[level]}"] = 1 + elif i == 2: + item_counts[f"Cancel Auto Scroll - {level_id_to_name[level]}"] = 1 + + for item in self.multiworld.precollected_items[self.player]: + if item.name in item_counts and item_counts[item.name] > 0: + item_counts[item.name] -= 1 + + location_count = len(self.multiworld.get_unfilled_locations(self.player)) + items_to_add = location_count - sum(item_counts.values()) + if items_to_add > 0: + mario_coin_frags = 0 + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + mario_coin_frags = (items_to_add * self.options.mario_coin_fragment_percentage) // 100 + item_counts["Mario Coin Fragment"] += mario_coin_frags + item_counts["Super Star Duration Increase"] += items_to_add - mario_coin_frags + elif items_to_add < 0: + if self.options.coinsanity: + for i in range(1, 168): + coin_name = f"{i} Coin{'s' if i > 1 else ''}" + if coin_name in item_counts: + amount_to_remove = min(-items_to_add, item_counts[coin_name]) + item_counts[coin_name] -= amount_to_remove + items_to_add += amount_to_remove + if items_to_add >= 0: + break + + double_progression_items = ["Tree Zone Progression", "Macro Zone Progression", "Pumpkin Zone Progression", + "Mario Zone Progression", "Turtle Zone Progression"] + self.random.shuffle(double_progression_items) + while sum(item_counts.values()) > location_count: + if double_progression_items: + double_progression_item = double_progression_items.pop() + item_counts[double_progression_item] -= 2 + item_counts[double_progression_item + " x2"] = 1 + continue + if self.options.auto_scroll_mode in ("level_trap_items", "level_cancel_items", + "chaos"): + auto_scroll_item = self.random.choice([item for item in item_counts if "Auto Scroll" in item]) + level = auto_scroll_item.split("- ")[1] + self.auto_scroll_levels[level_name_to_id[level]] = 0 + del item_counts[auto_scroll_item] + continue + raise Exception(f"Too many items in the item pool for Super Mario Land 2 player {self.player_name}") + # item = self.random.choice(list(item_counts)) + # item_counts[item] -= 1 + # if item_counts[item] == 0: + # del item_counts[item] + # self.multiworld.push_precollected(self.create_item(item)) + + self.coin_fragments_required = max((item_counts["Mario Coin Fragment"] + * self.options.mario_coin_fragments_required_percentage) // 100, 1) + + for item_name, count in item_counts.items(): + self.multiworld.itempool += [self.create_item(item_name) for _ in range(count)] + + def fill_slot_data(self): + return { + "energy_link": self.options.energy_link.value + } + + def create_item(self, name: str) -> Item: + return MarioLand2Item(name, items[name], self.item_name_to_id[name], self.player) + + def get_filler_item_name(self): + return "1 Coin" + + def modify_multidata(self, multidata: dict): + rom_name = bytearray(f'AP{Utils.__version__.replace(".", "")[0:3]}_{self.player}_{self.multiworld.seed:11}\0', + 'utf8')[:21] + rom_name.extend([0] * (21 - len(rom_name))) + new_name = base64.b64encode(bytes(rom_name)).decode() + multidata["connect_names"][new_name] = multidata["connect_names"][self.player_name] + + +class MarioLand2Location(Location): + game = "Super Mario Land 2" + + +class MarioLand2Item(Item): + game = "Super Mario Land 2" diff --git a/worlds/marioland2/basepatch.bsdiff4 b/worlds/marioland2/basepatch.bsdiff4 new file mode 100644 index 0000000000000000000000000000000000000000..a8818419a6b8896c9621fe26d74f82f9cc173853 GIT binary patch literal 1241 zcmV;~1Sb1JQ$$HdMl>*h000000002;0ssI200000KnMT;0000&T4*^jL0KkKS#~;f zH2?ri-+TYPfItwC00;sA0sue|7yyI_2m$~=0ssL3pa4`wJg2Fqh9G2Vp|l2+*q|9b zMu0K`A_X-_ndNQ|xy<#0GXMw=V&WbO0F;~vXAOI&Z4iip`XKa#LRcZH=$@MVraG@aVbm(eAT4*^jL0KkKStk;|jsO5GfB*mgeR|_@_g4L)1?k2JXhQsW^)ulW z!LfZ*OhoVAeg41#R|J_&q6HMmrXxTAWCo1@0iZMu0ie*((?9?XJw`zFG01XW^&;S4c27mwn01W}482|vgpaG--qwh9;N-GBm_7Fal)20Wu93 z00J^$GGGaWV39>JO&X0f@`tIDLnB6-00u)(Pyl2A00E#f0BPy~(9j2yQX3xJ2~$2@ zJ21$J6O9XSlL(A791}By!FMS-oFx`6rBp!vM>V^ayeN(};1e_6@ZGDG(`r~iZ!;Q^ zMHZ5>ve8om-Vj}fi%PJ;}gjg%dr*=CqmQWYu zgTgtC547Q`uYzC)WxP*Qcz{sPTly|=0;Q&s=%NiAK;-3@@(`fNtce(jHI4-XW&aKu zq|H;wNz2Nj&_%)Zbdd2V3|ie?LD+K6BSL+&i3uc<+RILq>1R)dG)_#E42S^+gkiIU z>b0$Fs?2=^5Ln39#T(}EAcat8Plw~#|D;I7CS)Srw{i-1p8;7pc*#A4RdgD?Id@Pe z0N<=ioatGZ4ezWZ5+|f65E_RL8|#*V(*_P(h^s^%2?#KRi%0SmC+S2N$cGo}RGoki zUoK-7xV_OUJKUZmaagaINa!6XATHP~r+y2y`+!yM9f^HniTRU-#uOwK`7URXh{WR( zanFs_L*1<(7VU+4#tfGNfC6A(0fbyMa4Zpg&BpE%Zw-)oKNw0BvXY60&y$&;6hqxIWa+5CR15%ul&LQ z0F!_J`JjNrbG6`we$?W{;qZam_CN#xR6y7O3~T^EVh}_bumJg{h*SV*05k@G0002c z0017Eo~NV{H5m{90iXZ?0ilop000^RB&McBdYLpd&@=!5Gyni-8V#iNJws|{rO^pm zct}as+zv=dvdTC&i5@2fZTE?a?^J>sH4{SvGYl6Sxz^>Ot@2fCHB-zcW_&+{Oe2~p zF3qD?UvhJ@04vvn@PH>Z$RR;)$jdU}J%PxtDGX3U!oXr4Ab~y#5k5_j_=q9$za4!c zEM!&}fXMM?Z(nbHD5yXqcJ(@HEOTy?pXs#&NY@$6_Vk42ez{qOWD?!#5g(nIKRzx* zWfOwyi9L{oGLlOmr~1&zbxG>AL;?VY)3H1%;sBTk2&?*#iRFSZAL8yvrwS4c)&H14 DQEB>< literal 0 HcmV?d00001 diff --git a/worlds/marioland2/client.py b/worlds/marioland2/client.py new file mode 100644 index 000000000000..41e6468f9393 --- /dev/null +++ b/worlds/marioland2/client.py @@ -0,0 +1,250 @@ +import base64 +import logging + +from NetUtils import ClientStatus +from worlds._bizhawk.client import BizHawkClient +from worlds._bizhawk import read, write, guarded_write + +from .rom_addresses import rom_addresses + +logger = logging.getLogger("Client") + +BANK_EXCHANGE_RATE = 20000000000 + +overworld_music = (0x05, 0x06, 0x0D, 0x0E, 0x10, 0x12, 0x1B, 0x1C, 0x1E) + +class MarioLand2Client(BizHawkClient): + system = ("GB", "SGB") + patch_suffix = ".apsml2" + game = "Super Mario Land 2" + + def __init__(self): + super().__init__() + self.locations_array = [] + self.previous_level = None + + async def validate_rom(self, ctx): + game_name = await read(ctx.bizhawk_ctx, [(0x134, 10, "ROM")]) + game_name = game_name[0].decode("ascii") + if game_name == "MARIOLAND2": + ctx.game = self.game + ctx.items_handling = 0b111 + return True + return False + + async def set_auth(self, ctx): + auth_name = await read(ctx.bizhawk_ctx, [(0x77777, 21, "ROM")]) + auth_name = base64.b64encode(auth_name[0]).decode() + ctx.auth = auth_name + + async def game_watcher(self, ctx): + from . import START_IDS + from .items import items + from .locations import locations, level_id_to_name, coins_coords, location_name_to_id + + (game_loaded_check, level_data, music, auto_scroll_levels, current_level, + midway_point, bcd_lives, num_items_received, coins, options) = \ + await read(ctx.bizhawk_ctx, [(0x0046, 10, "CartRAM"), (0x0848, 42, "CartRAM"), (0x0469, 1, "CartRAM"), + (rom_addresses["Auto_Scroll_Levels_B"], 32, "ROM"), + (0x0269, 1, "CartRAM"), (0x02A0, 1, "CartRAM"), (0x022C, 1, "CartRAM"), + (0x00F0, 2, "CartRAM"), (0x0262, 2, "CartRAM"), + (rom_addresses["Coins_Required"], 8, "ROM")]) + + coins_required = int.from_bytes(options[:2], "big") + difficulty_mode = options[2] + star_count = int.from_bytes(options[3:5], "big") + midway_bells = options[5] + energy_link = options[6] + coin_mode = options[7] + + current_level = int.from_bytes(current_level, "big") + auto_scroll_levels = list(auto_scroll_levels) + midway_point = int.from_bytes(midway_point, "big") + music = int.from_bytes(music, "big") + level_data = list(level_data) + lives = bcd_lives.hex() + num_items_received = int.from_bytes(num_items_received, "big") + if num_items_received == 0xFFFF: + num_items_received = 0 + + items_received = [list(items.keys())[item.item - START_IDS] for item in ctx.items_received] + write_num_items_received = len(items_received).to_bytes(2, "big") + + level_progression = { + "Space Zone Progression", + "Tree Zone Progression", + "Macro Zone Progression", + "Pumpkin Zone Progression", + "Mario Zone Progression", + "Turtle Zone Progression", + } + for level_item in level_progression: + for _ in range(items_received.count(level_item + " x2")): + items_received += ([level_item] * 2) + + if "Pipe Traversal" in items_received: + items_received += ["Pipe Traversal - Left", "Pipe Traversal - Right", + "Pipe Traversal - Up", "Pipe Traversal - Down"] + + if coin_mode == 2 and items_received.count("Mario Coin Fragment") >= coins_required: + items_received.append("Mario Coin") + + if current_level == 255 and self.previous_level != 255: + if coin_mode < 2: + logger.info(f"Golden Coins required: {coins_required}") + else: + logger.info(f"Mario Coin Fragments required: {coins_required}. " + f"You have {items_received.count('Mario Coin Fragment')}") + self.previous_level = current_level + + # There is no music in the title screen demos, this is how we guard against anything in the demos registering. + # There is also no music at the door to Mario's Castle, which is why the above is before this check. + if game_loaded_check != b'\x124Vx\xff\xff\xff\xff\xff\xff' or music == 0: + return + + locations_checked = [] + if current_level in level_id_to_name: + level_name = level_id_to_name[current_level] + coin_tile_data = await read(ctx.bizhawk_ctx, [(0xB000 + ((coords[1] * 256) + coords[0]), 1, "System Bus") + for coords in coins_coords[level_name]]) + num_coins = len([tile[0] for tile in coin_tile_data if tile[0] in (0x7f, 0x60, 0x07)]) + locations_checked = [location_name_to_id[f"{level_name} - {i} Coin{'s' if i > 1 else ''}"] + for i in range(1, num_coins + 1)] + + new_lives = int(lives) + energy_link_add = None + if energy_link: + if new_lives == 0: + if (f"EnergyLink{ctx.team}" in ctx.stored_data + and ctx.stored_data[f"EnergyLink{ctx.team}"] + and ctx.stored_data[f"EnergyLink{ctx.team}"] >= BANK_EXCHANGE_RATE): + new_lives = 1 + energy_link_add = -BANK_EXCHANGE_RATE + elif new_lives > 1: + energy_link_add = BANK_EXCHANGE_RATE * (new_lives - 1) + new_lives = 1 + # Convert back to binary-coded-decimal + new_lives = int(str(new_lives), 16) + + new_coins = coins.hex() + new_coins = int(new_coins[2:] + new_coins[:2]) + for item in items_received[num_items_received:]: + if item.endswith("Coins") or item == "1 Coin": + new_coins += int(item.split(" ")[0]) + # Limit to 999 and convert back to binary-coded-decimal + new_coins = int(str(min(new_coins, 999)), 16).to_bytes(2, "little") + + modified_level_data = level_data.copy() + for ID, (location, data) in enumerate(locations.items(), START_IDS): + if "clear_condition" in data: + if items_received.count(data["clear_condition"][0]) >= data["clear_condition"][1]: + modified_level_data[data["ram_index"]] |= (0x08 if data["type"] == "bell" + else 0x01 if data["type"] == "secret" else 0x80) + + if data["type"] == "level" and level_data[data["ram_index"]] & 0x40: + locations_checked.append(ID) + if data["type"] == "secret" and level_data[data["ram_index"]] & 0x02: + locations_checked.append(ID) + elif data["type"] == "bell" and data["id"] == current_level and midway_point == 0xFF: + locations_checked.append(ID) + + invincibility_length = int((832.0 / (star_count + 1)) + * (items_received.count("Super Star Duration Increase") + 1)) + + if "Easy Mode" in items_received: + difficulty_mode = 1 + elif "Normal Mode" in items_received: + difficulty_mode = 0 + + data_writes = [ + (rom_addresses["Space_Physics"], [0x7e] if "Space Physics" in items_received else [0xaf], "ROM"), + (rom_addresses["Get_Hurt_To_Big_Mario"], [1] if "Mushroom" in items_received else [0], "ROM"), + (rom_addresses["Get_Mushroom_A"], [0xea, 0x16, 0xa2] if "Mushroom" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Mushroom_B"], [0xea, 0x16, 0xa2] if "Mushroom" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Mushroom_C"], [00] if "Mushroom" in items_received else [0xd8], "ROM"), + (rom_addresses["Get_Carrot_A"], [0xea, 0x16, 0xa2] if "Carrot" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Carrot_B"], [0xea, 0x16, 0xa2] if "Carrot" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Carrot_C"], [00] if "Carrot" in items_received else [0xc8], "ROM"), + (rom_addresses["Get_Fire_Flower_A"], [0xea, 0x16, 0xa2] if "Fire Flower" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Fire_Flower_B"], [0xea, 0x16, 0xa2] if "Fire Flower" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Fire_Flower_C"], [00] if "Fire Flower" in items_received else [0xc8], "ROM"), + (rom_addresses["Invincibility_Star_A"], [(invincibility_length >> 8) + 1], "ROM"), + (rom_addresses["Invincibility_Star_B"], [invincibility_length & 0xFF], "ROM"), + (rom_addresses["Enable_Bubble"], [0xcb, 0xd7] if "Hippo Bubble" in items_received else [0, 0], "ROM"), + (rom_addresses["Enable_Swim"], [0xcb, 0xcf] if "Water Physics" in items_received else [0, 0], "ROM"), + (rom_addresses["Pipe_Traversal_A"], [16] if "Pipe Traversal - Down" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_B"], [32] if "Pipe Traversal - Up" in items_received else [10], "ROM"), + (rom_addresses["Pipe_Traversal_C"], [48] if "Pipe Traversal - Right" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_D"], [64] if "Pipe Traversal - Left" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_A"], [5] if "Pipe Traversal - Down" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_B"], [5] if "Pipe Traversal - Up" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_C"], [5] if "Pipe Traversal - Right" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_D"], [5] if "Pipe Traversal - Left" in items_received else [0], "ROM"), + (0x022c, [new_lives], "CartRAM"), + (0x02E4, [difficulty_mode], "CartRAM"), + (0x0848, modified_level_data, "CartRAM"), + (0x0262, new_coins, "CartRAM"), + ] + + if items_received: + data_writes.append((0x00F0, write_num_items_received, "CartRAM")) + + if midway_point == 0xFF and (midway_bells or music in overworld_music): + # after registering the check for the midway bell, clear the value just for safety. + data_writes.append((0x02A0, [0], "CartRAM")) + + for i in range(32): + if auto_scroll_levels[i] == 3: + if "Auto Scroll" in items_received or f"Auto Scroll - {level_id_to_name[i]}" in items_received: + auto_scroll_levels[i] = 1 + if i == current_level: + data_writes.append((0x02C8, [0x01], "CartRAM")) + else: + auto_scroll_levels[i] = 0 + elif auto_scroll_levels[i] == 2: + if ("Cancel Auto Scroll" in items_received + or f"Cancel Auto Scroll - {level_id_to_name[i]}" in items_received): + auto_scroll_levels[i] = 0 + if i == current_level: + data_writes.append((0x02C8, [0x00], "CartRAM")) + else: + auto_scroll_levels[i] = 1 + data_writes.append((rom_addresses["Auto_Scroll_Levels"], auto_scroll_levels, "ROM")) + + success = await guarded_write(ctx.bizhawk_ctx, data_writes, [(0x0848, level_data, "CartRAM"), + (0x022C, [int.from_bytes(bcd_lives, "big")], + "CartRAM"), + [0x0262, coins, "CartRAM"]]) + + if success and energy_link_add is not None: + await ctx.send_msgs([{ + "cmd": "Set", "key": f"EnergyLink{ctx.team}", "operations": + [{"operation": "add", "value": energy_link_add}, + {"operation": "max", "value": 0}], + }]) + + if not ctx.server or not ctx.server.socket.open or ctx.server.socket.closed: + return + + if locations_checked and locations_checked != self.locations_array: + self.locations_array = locations_checked + await ctx.send_msgs([{"cmd": "LocationChecks", "locations": locations_checked}]) + + if music == 0x18: + await ctx.send_msgs([{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}]) + ctx.finished_game = True + + def on_package(self, ctx, cmd: str, args: dict): + super().on_package(ctx, cmd, args) + if cmd == 'Connected': + if ctx.slot_data["energy_link"]: + ctx.set_notify(f"EnergyLink{ctx.team}") + if ctx.ui: + ctx.ui.enable_energy_link() + ctx.ui.energy_link_label.text = "Lives: Standby" + elif cmd == "SetReply" and args["key"].startswith("EnergyLink"): + if ctx.ui: + ctx.ui.energy_link_label.text = f"Lives: {int(args['value'] / BANK_EXCHANGE_RATE)}" + elif cmd == "Retrieved": + if f"EnergyLink{ctx.team}" in args["keys"] and args['keys'][f'EnergyLink{ctx.team}'] and ctx.ui: + ctx.ui.energy_link_label.text = f"Lives: {int(args['keys'][f'EnergyLink{ctx.team}'] / BANK_EXCHANGE_RATE)}" diff --git a/worlds/marioland2/docs/en_Super Mario Land 2.md b/worlds/marioland2/docs/en_Super Mario Land 2.md new file mode 100644 index 000000000000..7be02a2a287a --- /dev/null +++ b/worlds/marioland2/docs/en_Super Mario Land 2.md @@ -0,0 +1,64 @@ +# Super Mario Land 2: 6 Golden Coins + +## Where is the options page? + +The [player options page for this game](../player-options) contains all the options you need to configure and export a +config file. + +## What items and locations get shuffled? + +Completing a level's exits results in a location check instead of automatically bringing you to the next level. +Where there are secret exits, the secret exit will be a separate location check. There is one exception, Hippo Zone, +that does not have a separate check for its secret exit. The Hippo Zone secret exit will still bring you to the Space +Zone. + +Ringing the Midway Bells in each level that has one will register a location check. If the "Shuffle Midway Bells" option +is turned on, then ringing the bell will not grant the checkpoint, and instead you must obtain the Midway Bell item from +the item pool to gain the checkpoint for that level. Holding SELECT while loading into a level where you have unlocked +the Midway Bell checkpoint will start you at the beginning of the level. + +Unlocking paths to new levels requires finding or receiving Zone Progression items. For example, receiving the first +"Turtle Zone Progression" will unlock the path from Turtle Zone 1 to Turtle Zone 2. Paths to secret levels are separate +items, so Turtle Zone Secret will open the path from Turtle Zone 2 to the Turtle Zone Secret Course. + +Depending on settings, there may be some "Zone Progression x2" items that open two paths at once. + +The path from Tree Zone 2 to the branch to Tree Zone 3 and 4 is one unlock, so both levels will open at this point. + +Besides the zone progression unlocks, the following items are always shuffled: +- Mushroom: required to become Big Mario. If you are Fire or Bunny Mario and take damage, and have not obtained the +Mushroom, you will drop straight down to Small Mario. +- Fire Flower: required to become Fire Mario. +- Carrot: required to become Bunny Mario. +- Hippo Bubble: required to use the bubbles in Hippo Zone to fly. +- Water Physics: Mario will fall through water as though it is air until this is obtained. +- Space Physics: the Space Zone levels will have normal gravity until this is obtained. +- Super Star Duration Increase: you begin with a drastically lowered invincibility star duration, and these items will +increase it. + +Additionally, the following items can be shuffled depending on your YAML options: +- The 6 Golden Coins: note that the game will still show you the coin being sent to the castle when defeating a boss +regardless of whether the coin is actually obtained in that location. +- Mario Coin Fragments: As an alternative to shuffling the 6 Golden Coins, you can shuffle Mario Coin Fragments, +a chosen percentage of which are needed to assemble the Mario Coin. You will start with the other 5 coins. +- Normal Mode/Easy Mode: you can start the game in Normal Mode with an Easy Mode "upgrade" in the item pool, or start in +Easy Mode with a Normal Mode "trap" item, swapping the difficulty. +- Auto Scroll: auto-scrolling levels can be set to not auto scroll until this trap item is received. +- Pipe Traversal: required to enter pipes. Can also be split into 4 items, each enabling pipe entry from a different +direction. +- Coins: if Coinsanity is enabled, coins will be shuffled into the item pool. A number of checks will be added to each +level for obtaining a specific number of coins within a single playthrough of the level. + + +## When the player receives an item, what happens? + +There is no in-game indication that an item has been received. You will need to watch the client or web tracker to be +sure you're aware of the items you've received. + +## Special Thanks to: + +- [froggestspirit](https://github.com/froggestspirit) for his Super Mario Land 2 disassembly. While very incomplete, it +had enough memory values mapped out to make my work significantly easier. +- [slashinfty](https://github.com/slashinfty), the author of the +[Super Mario Land 2 Randomizer](https://sml2r.download/) for permitting me to port features such as Randomize Enemies +and Randomize Platforms directly from it. \ No newline at end of file diff --git a/worlds/marioland2/docs/setup_en.md b/worlds/marioland2/docs/setup_en.md new file mode 100644 index 000000000000..581d36e7864f --- /dev/null +++ b/worlds/marioland2/docs/setup_en.md @@ -0,0 +1,75 @@ +# Setup Guide for Super Mario Land 2: 6 Golden Coins + +## Important + +As we are using BizHawk, this guide is only applicable to Windows and Linux systems. + +## Required Software + +- BizHawk: [BizHawk Releases from TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) + - Version 2.9.1 is recommended. + - Detailed installation instructions for BizHawk can be found at the above link. + - Windows users must run the prereq installer first, which can also be found at the above link. +- The built-in Archipelago client, which can be installed [here](https://github.com/ArchipelagoMW/Archipelago/releases) +- A Super Mario Land 2: 6 Golden Coins version 1.0 ROM file. The Archipelago community cannot provide this. + +## Configuring BizHawk + +Once BizHawk has been installed, open EmuHawk and change the following settings: + +- Under Config > Customize > Advanced, make sure the box for AutoSaveRAM is checked, and click the 5s button. + This reduces the possibility of losing save data in emulator crashes. +- Under Config > Customize, check the "Run in background" box. This will prevent disconnecting from the client while +EmuHawk is running in the background. + +It is strongly recommended to associate Game Boy ROM extensions (\*.gb) to the EmuHawk we've just installed. +To do so, we simply have to search any Game Boy ROM we happened to own, right click and select "Open with...", unfold +the list that appears and select the bottom option "Look for another application", then browse to the BizHawk folder +and select EmuHawk.exe. + +## Configuring your YAML file + +### What is a YAML file and why do I need one? + +Your YAML file contains a set of configuration options which provide the generator with information about how it should +generate your game. Each player of a multiworld will provide their own YAML file. This setup allows each player to enjoy +an experience customized for their taste, and different players in the same multiworld can all have different options. + +### Where do I get a YAML file? + +You can generate a yaml or download a template by visiting the [Super Mario Land 2 Player Options Page](/games/Super%20Mario%20Land%202/player-options) + +## Joining a MultiWorld Game + +### Generating and Patching a Game + +1. Create your options file (YAML). +2. Follow the general Archipelago instructions for [generating a game](../../Archipelago/setup/en#generating-a-game). +This will generate an output file for you. Your patch file will have a `.apsml2` file extension. +3. Open `ArchipelagoLauncher.exe` +4. Select "Open Patch" on the left side and select your patch file. +5. If this is your first time patching, you will be prompted to locate your vanilla ROM. +6. A patched `.gb` file will be created in the same place as the patch file. +7. On your first time opening a patch with BizHawk Client, you will also be asked to locate `EmuHawk.exe` in your +BizHawk install. + +You must connect Super Mario Land 2 to a server, even for a single player game, or progress cannot be made. + +### Connect to the Multiserver + +By default, opening a patch file will do steps 1-5 below for you automatically. Even so, keep them in your memory just +in case you have to close and reopen a window mid-game for some reason. + +1. Super Mario Land 2 uses Archipelago's BizHawk Client. If the client isn't still open from when you patched your +game, you can re-open it from the launcher. +2. Ensure EmuHawk is running the patched ROM. +3. In EmuHawk, go to `Tools > Lua Console`. This window must stay open while playing. +4. In the Lua Console window, go to `Script > Open Script…`. +5. Navigate to your Archipelago install folder and open `data/lua/connector_bizhawk_generic.lua`. +6. The emulator may freeze every few seconds until it manages to connect to the client. This is expected. The BizHawk +Client window should indicate that it connected and recognized Super Mario Land 2. +7. To connect the client to the server, enter your room's address and port (e.g. `archipelago.gg:38281`) into the +top text field of the client and click Connect. + +To connect the client to the multiserver simply put `

:` on the textfield on top and press enter (if the +server uses password, type in the bottom textfield `/connect
: [password]`) \ No newline at end of file diff --git a/worlds/marioland2/items.py b/worlds/marioland2/items.py new file mode 100644 index 000000000000..041ffe99f976 --- /dev/null +++ b/worlds/marioland2/items.py @@ -0,0 +1,79 @@ +from BaseClasses import ItemClassification +from .locations import level_name_to_id +from .options import CoinsanityChecks + +items = { + "Space Zone Progression": ItemClassification.progression, + "Space Zone Secret": ItemClassification.progression, + "Tree Zone Progression": ItemClassification.progression, + "Tree Zone Progression x2": ItemClassification.progression, + "Tree Zone Secret": ItemClassification.progression, + "Macro Zone Progression": ItemClassification.progression, + "Macro Zone Progression x2": ItemClassification.progression, + "Macro Zone Secret 1": ItemClassification.progression, + "Macro Zone Secret 2": ItemClassification.progression_skip_balancing, + "Pumpkin Zone Progression": ItemClassification.progression, + "Pumpkin Zone Progression x2": ItemClassification.progression, + "Pumpkin Zone Secret 1": ItemClassification.progression, + "Pumpkin Zone Secret 2": ItemClassification.progression, + "Mario Zone Progression": ItemClassification.progression, + "Mario Zone Progression x2": ItemClassification.progression, + "Turtle Zone Progression": ItemClassification.progression, + "Turtle Zone Progression x2": ItemClassification.progression, + "Turtle Zone Secret": ItemClassification.progression, + "Tree Coin": ItemClassification.progression_skip_balancing, + "Space Coin": ItemClassification.progression_skip_balancing, + "Macro Coin": ItemClassification.progression_skip_balancing, + "Pumpkin Coin": ItemClassification.progression_skip_balancing, + "Mario Coin": ItemClassification.progression_skip_balancing, + "Turtle Coin": ItemClassification.progression_skip_balancing, + "Mario Coin Fragment": ItemClassification.progression_skip_balancing, + "Mushroom": ItemClassification.progression, + "Fire Flower": ItemClassification.progression, + "Carrot": ItemClassification.progression, + "Space Physics": ItemClassification.progression_skip_balancing, + "Hippo Bubble": ItemClassification.progression_skip_balancing, + "Water Physics": ItemClassification.progression, + "Pipe Traversal": ItemClassification.progression, + "Pipe Traversal - Down": ItemClassification.progression, + "Pipe Traversal - Up": ItemClassification.progression, + "Pipe Traversal - Right": ItemClassification.progression, + "Pipe Traversal - Left": ItemClassification.progression_skip_balancing, + "Super Star Duration Increase": ItemClassification.filler, + "Easy Mode": ItemClassification.useful, + "Normal Mode": ItemClassification.trap, + "Auto Scroll": ItemClassification.trap, + **{f"Auto Scroll - {level}": ItemClassification.trap for level in level_name_to_id if level != "Wario's Castle"}, + "Cancel Auto Scroll": ItemClassification.progression, + **{f"Cancel Auto Scroll - {level}": ItemClassification.progression for level in level_name_to_id + if level != "Wario's Castle"}, + "Mushroom Zone Midway Bell": ItemClassification.filler, + "Tree Zone 1 Midway Bell": ItemClassification.filler, + "Tree Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Tree Zone 4 Midway Bell": ItemClassification.progression_skip_balancing, + "Tree Zone 5 Midway Bell": ItemClassification.filler, + "Space Zone 1 Midway Bell": ItemClassification.filler, + "Space Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 1 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 3 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 4 Midway Bell": ItemClassification.filler, + "Pumpkin Zone 1 Midway Bell": ItemClassification.progression_skip_balancing, + "Pumpkin Zone 2 Midway Bell": ItemClassification.filler, + "Pumpkin Zone 3 Midway Bell": ItemClassification.filler, + "Pumpkin Zone 4 Midway Bell": ItemClassification.filler, + "Mario Zone 1 Midway Bell": ItemClassification.progression_skip_balancing, + "Mario Zone 2 Midway Bell": ItemClassification.filler, + "Mario Zone 3 Midway Bell": ItemClassification.filler, + "Mario Zone 4 Midway Bell": ItemClassification.filler, + "Turtle Zone 1 Midway Bell": ItemClassification.filler, + "Turtle Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Turtle Zone 3 Midway Bell": ItemClassification.filler, + "Mario's Castle Midway Bell": ItemClassification.progression_skip_balancing, + "1 Coin": ItemClassification.filler, + **{f"{i} Coins": ItemClassification.filler for i in range(2, CoinsanityChecks.range_end + 1)} +} + +for level in {"Turtle Zone Secret Course", "Macro Zone Secret Course", "Turtle Zone 3", "Scenic Course", + "Mario Zone 2"}: + items[f"Cancel Auto Scroll - {level}"] = ItemClassification.useful diff --git a/worlds/marioland2/locations.py b/worlds/marioland2/locations.py new file mode 100644 index 000000000000..02ae1cca9dc5 --- /dev/null +++ b/worlds/marioland2/locations.py @@ -0,0 +1,498 @@ +START_IDS = 1 + +locations = { + "Mushroom Zone - Normal Exit": {"id": 0x00, "ram_index": 0, "type": "level"}, + "Mushroom Zone - Midway Bell": {"id": 0x00, "ram_index": 0, "clear_condition": ("Mushroom Zone Midway Bell", 1), "type": "bell"}, + "Scenic Course - Normal Exit": {"id": 0x19, "ram_index": 40, "type": "level"}, + "Tree Zone 1 - Normal Exit": {"id": 0x01, "ram_index": 1, "clear_condition": ("Tree Zone Progression", 1), "type": "level"}, + "Tree Zone 1 - Midway Bell": {"id": 0x01, "ram_index": 1, "clear_condition": ("Tree Zone 1 Midway Bell", 1), "type": "bell"}, + "Tree Zone 2 - Normal Exit": {"id": 0x02, "ram_index": 2, "clear_condition": ("Tree Zone Progression", 2), "type": "level"}, + "Tree Zone 2 - Secret Exit": {"id": 0x02, "ram_index": 2, "clear_condition": ("Tree Zone Secret", 1), "type": "secret"}, + "Tree Zone 2 - Midway Bell": {"id": 0x02, "ram_index": 2, "clear_condition": ("Tree Zone 2 Midway Bell", 1), "type": "bell"}, + "Tree Zone 3 - Normal Exit": {"id": 0x04, "ram_index": 4, "clear_condition": ("Tree Zone Progression", 3), "type": "level"}, + "Tree Zone 4 - Normal Exit": {"id": 0x03, "ram_index": 3, "clear_condition": ("Tree Zone Progression", 3), "type": "level"}, + "Tree Zone 4 - Midway Bell": {"id": 0x03, "ram_index": 3, "clear_condition": ("Tree Zone 4 Midway Bell", 1), "type": "bell"}, + "Tree Zone 5 - Boss": {"id": 0x05, "ram_index": 5, "clear_condition": ("Tree Coin", 1), "type": "level"}, + "Tree Zone 5 - Midway Bell": {"id": 0x05, "ram_index": 5, "clear_condition": ("Tree Zone 5 Midway Bell", 1), "type": "bell"}, + "Tree Zone Secret Course - Normal Exit": {"id": 0x1D, "ram_index": 36, "type": "level"}, + "Hippo Zone - Normal or Secret Exit": {"id": 0x11, "ram_index": 31, "type": "level"}, + "Space Zone 1 - Normal Exit": {"id": 0x12, "ram_index": 16, "clear_condition": ("Space Zone Progression", 1), "type": "level"}, + "Space Zone 1 - Secret Exit": {"id": 0x12, "ram_index": 16, "clear_condition": ("Space Zone Secret", 1), "type": "secret"}, + "Space Zone 1 - Midway Bell": {"id": 0x12, "ram_index": 16, "clear_condition": ("Space Zone 1 Midway Bell", 1), "type": "bell"}, + "Space Zone Secret Course - Normal Exit": {"id": 0x1C, "ram_index": 41, "type": "level"}, + "Space Zone 2 - Boss": {"id": 0x13, "ram_index": 17, "clear_condition": ("Space Coin", 1), "type": "level"}, + "Space Zone 2 - Midway Bell": {"id": 0x13, "ram_index": 17, "clear_condition": ("Space Zone 2 Midway Bell", 1), "type": "bell"}, + "Macro Zone 1 - Normal Exit": {"id": 0x14, "ram_index": 11, "clear_condition": ("Macro Zone Progression", 1), "type": "level"}, + "Macro Zone 1 - Secret Exit": {"id": 0x14, "ram_index": 11, "clear_condition": ("Macro Zone Secret 1", 1), "type": "secret"}, + "Macro Zone 1 - Midway Bell": {"id": 0x14, "ram_index": 11, "clear_condition": ("Macro Zone 1 Midway Bell", 1), "type": "bell"}, + "Macro Zone 2 - Normal Exit": {"id": 0x15, "ram_index": 12, "clear_condition": ("Macro Zone Progression", 2), "type": "level"}, + "Macro Zone 2 - Midway Bell": {"id": 0x15, "ram_index": 12, "clear_condition": ("Macro Zone 2 Midway Bell", 1), "type": "bell"}, + "Macro Zone 3 - Normal Exit": {"id": 0x16, "ram_index": 13, "clear_condition": ("Macro Zone Progression", 3), "type": "level"}, + "Macro Zone 3 - Midway Bell": {"id": 0x16, "ram_index": 13, "clear_condition": ("Macro Zone 3 Midway Bell", 1), "type": "bell"}, + "Macro Zone 4 - Boss": {"id": 0x17, "ram_index": 14, "clear_condition": ("Macro Coin", 1), "type": "level"}, + "Macro Zone 4 - Midway Bell": {"id": 0x17, "ram_index": 14, "clear_condition": ("Macro Zone 4 Midway Bell", 1), "type": "bell"}, + "Macro Zone Secret Course - Normal Exit": {"id": 0x1E, "ram_index": 35, "clear_condition": ("Macro Zone Secret 2", 1), "type": "level"}, + "Pumpkin Zone 1 - Normal Exit": {"id": 0x06, "ram_index": 6, "clear_condition": ("Pumpkin Zone Progression", 1), "type": "level"}, + "Pumpkin Zone 1 - Midway Bell": {"id": 0x06, "ram_index": 6, "clear_condition": ("Pumpkin Zone 1 Midway Bell", 1), "type": "bell"}, + "Pumpkin Zone 2 - Normal Exit": {"id": 0x07, "ram_index": 7, "clear_condition": ("Pumpkin Zone Progression", 2), "type": "level"}, + "Pumpkin Zone 2 - Secret Exit": {"id": 0x07, "ram_index": 7, "clear_condition": ("Pumpkin Zone Secret 1", 1), "type": "secret"}, + "Pumpkin Zone 2 - Midway Bell": {"id": 0x07, "ram_index": 7, "clear_condition": ("Pumpkin Zone 2 Midway Bell", 2), "type": "bell"}, + "Pumpkin Zone 3 - Normal Exit": {"id": 0x08, "ram_index": 8, "clear_condition": ("Pumpkin Zone Progression", 3), "type": "level"}, + "Pumpkin Zone 3 - Secret Exit": {"id": 0x08, "ram_index": 8, "clear_condition": ("Pumpkin Zone Secret 2", 1), "type": "secret"}, + "Pumpkin Zone 3 - Midway Bell": {"id": 0x08, "ram_index": 8, "clear_condition": ("Pumpkin Zone 3 Midway Bell", 3), "type": "bell"}, + "Pumpkin Zone 4 - Boss": {"id": 0x09, "ram_index": 9, "clear_condition": ("Pumpkin Coin", 1), "type": "level"}, + "Pumpkin Zone 4 - Midway Bell": {"id": 0x09, "ram_index": 9, "clear_condition": ("Pumpkin Zone 4 Midway Bell", 1), "type": "bell"}, + "Pumpkin Zone Secret Course 1 - Normal Exit": {"id": 0x1B, "ram_index": 38, "type": "level"}, + "Pumpkin Zone Secret Course 2 - Normal Exit": {"id": 0x1F, "ram_index": 39, "type": "level"}, + "Mario Zone 1 - Normal Exit": {"id": 0x0A, "ram_index": 26, "clear_condition": ("Mario Zone Progression", 1), "type": "level"}, + "Mario Zone 1 - Midway Bell": {"id": 0x0A, "ram_index": 26, "clear_condition": ("Mario Zone 1 Midway Bell", 1), "type": "bell"}, + "Mario Zone 2 - Normal Exit": {"id": 0x0B, "ram_index": 27, "clear_condition": ("Mario Zone Progression", 2), "type": "level"}, + "Mario Zone 2 - Midway Bell": {"id": 0x0B, "ram_index": 27, "clear_condition": ("Mario Zone 2 Midway Bell", 1), "type": "bell"}, + "Mario Zone 3 - Normal Exit": {"id": 0x0C, "ram_index": 28, "clear_condition": ("Mario Zone Progression", 3), "type": "level"}, + "Mario Zone 3 - Midway Bell": {"id": 0x0C, "ram_index": 28, "clear_condition": ("Mario Zone 3 Midway Bell", 1), "type": "bell"}, + "Mario Zone 4 - Boss": {"id": 0x0D, "ram_index": 29, "clear_condition": ("Mario Coin", 1), "type": "level"}, + "Mario Zone 4 - Midway Bell": {"id": 0x0D, "ram_index": 29, "clear_condition": ("Mario Zone 4 Midway Bell", 1), "type": "bell"}, + "Turtle Zone 1 - Normal Exit": {"id": 0x0E, "ram_index": 21, "clear_condition": ("Turtle Zone Progression", 1), "type": "level"}, + "Turtle Zone 1 - Midway Bell": {"id": 0x0E, "ram_index": 21, "clear_condition": ("Turtle Zone 1 Midway Bell", 1), "type": "bell"}, + "Turtle Zone 2 - Normal Exit": {"id": 0x0F, "ram_index": 22, "clear_condition": ("Turtle Zone Progression", 2), "type": "level"}, + "Turtle Zone 2 - Secret Exit": {"id": 0x0F, "ram_index": 22, "clear_condition": ("Turtle Zone Secret", 1), "type": "secret"}, + "Turtle Zone 2 - Midway Bell": {"id": 0x0F, "ram_index": 22, "clear_condition": ("Turtle Zone 2 Midway Bell", 1), "type": "bell"}, + "Turtle Zone 3 - Boss": {"id": 0x10, "ram_index": 23, "clear_condition": ("Turtle Coin", 1), "type": "level"}, + "Turtle Zone 3 - Midway Bell": {"id": 0x10, "ram_index": 23, "clear_condition": ("Turtle Zone 3 Midway Bell", 1), "type": "bell"}, + "Turtle Zone Secret Course - Normal Exit": {"id": 0x1A, "ram_index": 37, "type": "level"}, + "Mario's Castle - Midway Bell": {"id": 24, "ram_index": 24, "clear_condition": ("Mario's Castle Midway Bell", 1), "type": "bell"}, +} + + +coins_coords = { + "Mushroom Zone": + [(22, 28), (24, 28), (42, 28), (43, 28), (74, 36), (74, 37), (74, 38), (76, 36), (76, 37), + (76, 38), (78, 36), (78, 37), (78, 38), (80, 36), (80, 37), (80, 38), (82, 36), (82, 37), + (82, 38), (83, 25), (84, 25), (84, 36), (84, 37), (84, 38), (85, 25), (86, 25), (86, 36), + (86, 37), (86, 38), (87, 25), (88, 36), (88, 37), (88, 38), (116, 24), (117, 24), (118, 24), + (151, 28), (152, 28), (180, 28), (181, 24), (181, 28), (182, 24), (182, 28), (183, 24), (183, 28), + (184, 24), (184, 28), (185, 24), (185, 28), (186, 24), (186, 28), (187, 24), (187, 28), (188, 24), + (188, 28), (189, 28), (211, 25), (212, 25), (212, 36), (212, 37), (212, 38), (212, 39), (213, 25), + (213, 36), (213, 37), (213, 38), (213, 39), (214, 25), (214, 36), (214, 37), (214, 38), (214, 39), + (215, 25), (216, 25), (217, 25), (217, 36), (217, 37), (217, 38), (217, 39), (218, 25), (218, 36), + (218, 37), (218, 38), (218, 39), (219, 25), (219, 36), (219, 37), (219, 38), (219, 39), (220, 25), + (231, 24), (232, 24)], + "Tree Zone 1": + [(27, 30), (28, 30), (29, 30), (33, 27), (34, 27), (35, 27), (40, 30), (41, 30), (42, 30), (47, 27), + (48, 27), (49, 27), (56, 30), (57, 30), (58, 30), (64, 30), (65, 30), (66, 30), (88, 30), (89, 30), + (90, 30), (94, 30), (95, 30), (96, 30), (100, 30), (101, 30), (102, 30), (106, 27), (107, 27), + (108, 27), (112, 30), (113, 30), (114, 30), (119, 28), (138, 30), (139, 30), (140, 30), (150, 28), + (151, 20), (151, 28), (152, 20), (152, 26), (152, 28), (153, 26), (153, 28), (154, 26), (154, 28), + (155, 26), (155, 28), (156, 26), (156, 28), (157, 20), (157, 26), (157, 28), (158, 20), (158, 26), + (158, 28), (159, 26), (159, 28), (160, 28), (161, 28), (176, 13), (177, 13), (177, 29), (178, 13), + (178, 29), (179, 13), (179, 29), (180, 13), (181, 13), (182, 13), (183, 13), (184, 13), (185, 13), + (186, 13), (187, 13), (187, 29), (188, 13), (188, 29), (189, 13), (189, 29), (190, 13), (191, 13), + (192, 13), (193, 13), (194, 13), (195, 13), (196, 13), (197, 13), (197, 29), (198, 13), (198, 29), + (199, 13), (199, 29), (200, 13), (201, 13), (202, 13), (203, 13), (204, 13), (205, 13), (206, 13), + (207, 27), (208, 13), (208, 27), (209, 14), (209, 27), (210, 10), (210, 11), (210, 12), (210, 13), + (210, 14), (210, 15), (211, 14), (212, 13), (219, 30), (220, 30), (221, 30), (229, 27), (230, 27), + (231, 27)], + "Tree Zone 2": + [(27, 11), (28, 11), (42, 10), (43, 10), (44, 10), (51, 28), (61, 9), (65, 26), (66, 26), (67, 26), + (70, 24), (71, 24), (72, 10), (72, 24), (73, 10), (73, 24), (75, 10), (76, 10), (76, 26), (77, 26), + (78, 10), (78, 26), (79, 10), (80, 24), (81, 10), (81, 24), (82, 10), (82, 24), (83, 24), (127, 7), + (128, 7), (129, 7), (130, 7), (136, 43), (138, 9), (138, 10), (138, 11), (139, 41), (140, 41), + (141, 41), (142, 9), (142, 10), (142, 11), (144, 41), (145, 41), (146, 9), (146, 10), (146, 11), + (146, 41), (149, 41), (150, 41), (151, 41), (154, 41), (155, 41), (156, 41), (159, 41), (160, 41), + (161, 41), (164, 41), (165, 41), (166, 41), (169, 41), (170, 41), (171, 41), (174, 41), (175, 41), + (176, 41), (182, 3), (188, 42), (188, 43), (188, 44), (189, 42), (189, 43), (189, 44), (190, 42), + (190, 43), (190, 44), (191, 42), (191, 43), (191, 44), (192, 42), (192, 43), (192, 44), (193, 42), + (193, 43), (193, 44), (213, 8), (213, 9), (213, 10), (213, 11), (213, 12), (213, 13), (213, 14), + (213, 15), (213, 16), (213, 17), (213, 18), (213, 19), (213, 20), (213, 21), (213, 22), (213, 23), + (213, 24), (213, 25)], + "Tree Zone Secret Course": + [(10, 24), (11, 24), (12, 24), (17, 23), (39, 24), (40, 24), (41, 24), (42, 24), (45, 24), + (46, 24), (47, 24), (48, 24), (51, 25), (52, 25), (53, 25), (54, 25), (58, 26), (59, 26), + (60, 26), (61, 24), (61, 25), (62, 24), (62, 25), (63, 24), (63, 25), (64, 24), (64, 25), + (67, 25), (68, 26), (69, 27), (70, 27), (73, 26), (74, 27), (75, 27), (76, 27), (80, 23), + (80, 24), (81, 23), (81, 24), (82, 23), (82, 24), (83, 23), (83, 24), (87, 25), (88, 24), + (89, 24), (90, 25), (91, 26), (100, 23), (114, 27), (114, 28), (115, 27), (115, 28), (116, 27), + (116, 28), (117, 27), (117, 28), (118, 27), (118, 28), (119, 27), (119, 28), (120, 27), + (120, 28), (121, 27), (121, 28), (128, 27), (128, 28), (131, 27), (131, 28), (134, 27), + (134, 28), (137, 27), (137, 28), (138, 27), (138, 28), (143, 27), (143, 28), (159, 23)], + "Tree Zone 4": + [(22, 10), (24, 12), (26, 10), (28, 27), (29, 11), (30, 11), (31, 11), (32, 11), (33, 11), (34, 11), + (35, 11), (37, 10), (38, 12), (41, 11), (43, 12), (61, 11), (70, 11), (79, 11), (89, 11), (103, 22), + (103, 25), (103, 28), (105, 22), (105, 25), (105, 28), (107, 22), (107, 25), (107, 28), (109, 22), + (109, 25), (109, 28), (111, 22), (111, 25), (111, 28), (113, 22), (113, 25), (113, 28), (115, 22), + (115, 25), (115, 28), (117, 22), (117, 25), (117, 28), (122, 22), (122, 25), (122, 28), (124, 22), + (124, 25), (124, 28), (126, 22), (126, 25), (126, 28), (128, 22), (128, 25), (128, 28), (130, 22), + (130, 25), (130, 28), (132, 22), (132, 25), (132, 28), (134, 22), (134, 25), (134, 28), (136, 22), + (136, 25), (136, 28), (171, 10), (196, 26), (196, 29), (197, 26), (197, 29), (198, 26), (198, 29), + (199, 26), (199, 29), (200, 26), (200, 29)], + "Tree Zone 3": + [(18, 11), (18, 12), (19, 11), (19, 12), (20, 11), (20, 12), (21, 11), (21, 12), (22, 11), (22, 12), + (26, 40), (27, 11), (27, 12), (28, 11), (28, 12), (29, 11), (29, 12), (30, 11), (30, 12), (31, 11), + (31, 12), (48, 41), (49, 41), (50, 41), (51, 41), (61, 25), (77, 24)], + "Tree Zone 5": + [(23, 41), (84, 39), (85, 39), (116, 42), (123, 39), (132, 39), (134, 36), (134, 39), (134, 43), + (134, 44), (135, 43), (135, 44), (136, 36), (136, 39), (136, 43), (136, 44), (137, 43), (137, 44), + (138, 36), (138, 39), (138, 43), (138, 44), (139, 43), (139, 44), (140, 36), (140, 39), (140, 43), + (140, 44), (141, 43), (141, 44), (142, 36), (142, 39), (142, 43), (142, 44), (144, 36), (144, 39), + (146, 36), (146, 39)], + "Scenic Course": + [(24, 28), (39, 28), (54, 28), (72, 28), (87, 28), (103, 28), (117, 28)], + "Hippo Zone": + [(2, 20), (3, 3), (15, 26), (16, 26), (17, 26), (28, 4), (28, 7), (28, 10), (28, 13), (29, 4), + (29, 7), (29, 10), (29, 13), (29, 21), (30, 4), (30, 7), (30, 10), (30, 13), (32, 15), (33, 15), + (34, 15), (35, 15), (36, 15), (37, 15), (41, 12), (41, 13), (42, 11), (43, 10), (44, 10), (45, 10), + (46, 11), (47, 12), (47, 13), (48, 14), (49, 15), (50, 15), (51, 15), (52, 14), (53, 12), (53, 13), + (54, 11), (55, 10), (56, 10), (57, 10), (58, 11), (59, 12), (59, 13), (60, 14), (61, 15), (62, 15), + (63, 15), (64, 14), (65, 12), (65, 13), (66, 11), (67, 10), (68, 10), (69, 10), (70, 11), (71, 12), + (71, 13), (72, 14), (73, 15), (74, 15), (75, 15), (76, 14), (77, 12), (77, 13), (84, 11), (85, 11), + (85, 22), (86, 22), (91, 6), (92, 6), (92, 11), (93, 6), (93, 11), (94, 11), (95, 16), (96, 12), + (96, 16), (97, 8), (97, 12), (97, 16), (98, 8), (98, 12), (99, 8), (112, 6), (112, 7), (112, 12), + (112, 13), (113, 2), (113, 5), (113, 8), (113, 11), (113, 14), (113, 17), (114, 2), (114, 5), + (114, 8), (114, 11), (114, 14), (114, 17), (115, 3), (115, 4), (115, 9), (115, 10), (115, 15), + (115, 16), (124, 3), (124, 4), (124, 9), (124, 10), (124, 15), (124, 16), (125, 2), (125, 5), + (125, 8), (125, 11), (125, 14), (125, 17), (126, 2), (126, 5), (126, 8), (126, 11), (126, 14), + (126, 17), (127, 6), (127, 7), (127, 12), (127, 13), (129, 13), (130, 13), (131, 13), (132, 13), + (132, 22), (133, 13), (134, 13), (135, 13), (136, 13), (136, 21), (137, 13), (138, 13), (139, 13), + (139, 22), (140, 13), (141, 13), (142, 13), (154, 7), (155, 7), (156, 7), (157, 10), (158, 10), + (159, 10), (162, 15), (162, 16), (162, 17), (164, 15), (164, 16), (164, 17), (166, 15), (166, 16), + (166, 17), (168, 15), (168, 16), (168, 17), (170, 15), (170, 16), (170, 17), (172, 15), (172, 16), + (172, 17), (174, 15), (174, 16), (174, 17), (176, 15), (176, 16), (176, 17)], + "Space Zone 1": + [(38, 26), (45, 25), (46, 25), (47, 25), (57, 24), (58, 24), (59, 24), (60, 19), (60, 23), (61, 23), + (62, 23), (63, 23), (75, 24), (89, 16), (89, 17), (89, 18), (89, 19), (90, 16), (90, 17), (90, 18), + (90, 19), (91, 16), (91, 17), (91, 18), (91, 19), (92, 16), (92, 17), (92, 18), (92, 19), (93, 16), + (93, 17), (93, 18), (93, 19), (104, 22), (105, 22), (114, 22), (115, 22), (125, 10), (126, 9), + (127, 8), (128, 8), (129, 8), (130, 8), (131, 8), (132, 9), (133, 10), (136, 10), (137, 9), + (138, 8), (139, 8), (140, 8), (141, 8), (142, 8), (143, 9), (144, 10), (147, 10), (148, 9), + (149, 8), (150, 8), (151, 8), (152, 8), (153, 8), (154, 9), (155, 10), (155, 18), (155, 19), + (155, 20), (156, 17), (156, 18), (156, 19), (156, 20), (156, 21), (157, 16), (157, 17), (157, 18), + (157, 19), (157, 20), (157, 21), (157, 22), (158, 10), (158, 16), (158, 17), (158, 18), (158, 19), + (158, 20), (158, 21), (158, 22), (159, 9), (159, 16), (159, 17), (159, 18), (159, 19), (159, 20), + (159, 21), (159, 22), (160, 8), (160, 16), (160, 17), (160, 18), (160, 19), (160, 20), (160, 21), + (160, 22), (161, 8), (161, 16), (161, 17), (161, 18), (161, 19), (161, 20), (161, 21), (161, 22), + (162, 8), (162, 17), (162, 18), (162, 19), (162, 20), (162, 21), (163, 8), (163, 18), (163, 19), + (163, 20), (164, 8), (165, 9), (166, 10), (168, 10), (169, 9), (170, 8), (171, 8), (172, 8), + (173, 8), (174, 8), (175, 9), (176, 10)], + "Space Zone Secret Course": + [(16, 22), (16, 23), (16, 24), (18, 21), (18, 22), (18, 23), (20, 21), (20, 22), (20, 23), + (22, 20), (22, 21), (22, 22), (24, 19), (24, 20), (24, 21), (26, 18), (26, 19), (26, 20), + (28, 18), (28, 19), (28, 20), (30, 17), (30, 18), (30, 19), (36, 15), (36, 16), (36, 17), + (38, 14), (38, 15), (38, 16), (40, 13), (40, 14), (40, 15), (40, 24), (41, 24), (42, 13), + (42, 14), (42, 15), (44, 12), (44, 13), (44, 14), (46, 12), (46, 13), (46, 14), (48, 12), + (48, 13), (48, 14), (50, 11), (50, 12), (50, 13), (50, 27), (51, 27), (52, 10), (52, 11), + (52, 12), (52, 27), (53, 27), (54, 27), (58, 11), (58, 12), (58, 13), (60, 12), (60, 13), + (60, 14), (62, 12), (62, 13), (62, 14), (64, 12), (64, 13), (64, 14), (66, 13), (66, 14), + (66, 15), (68, 13), (68, 14), (68, 15), (70, 14), (70, 15), (70, 16), (72, 15), (72, 16), + (72, 17), (74, 16), (74, 17), (74, 18), (80, 18), (80, 19), (80, 20), (82, 19), (82, 20), + (82, 21), (84, 19), (84, 20), (84, 21), (86, 20), (86, 21), (86, 22), (88, 21), (88, 22), + (88, 23)], + "Space Zone 2": + [(11, 13), (12, 13), (13, 13), (20, 8), (21, 8), (22, 8), (25, 5), (26, 5), (27, 5), (33, 6), + (34, 6), (35, 6), (36, 10), (37, 10), (38, 10), (45, 7), (46, 7), (47, 7), (59, 5), (60, 5), + (61, 5), (64, 3), (93, 8), (94, 8), (95, 8), (96, 11), (97, 11), (98, 11), (100, 6), (101, 6), + (102, 6), (102, 8), (120, 5), (124, 12), (124, 13), (125, 12), (125, 13), (126, 12), (126, 13), + (127, 3), (127, 12), (127, 13), (128, 3), (128, 7), (129, 3), (129, 7), (130, 7), (148, 6), + (148, 7), (148, 8), (149, 5), (149, 6), (149, 7), (149, 8), (149, 9), (150, 5), (150, 6), (150, 7), + (150, 8), (150, 9), (151, 5), (151, 6), (151, 7), (151, 8), (151, 9), (152, 5), (152, 6), (152, 7), + (152, 8), (152, 9), (153, 6), (153, 7), (153, 8), (165, 7), (165, 8), (166, 7), (166, 8), (167, 7), + (167, 8), (168, 7), (168, 8), (169, 7), (169, 8), (170, 7), (170, 8), (171, 7), (171, 8), (181, 9), + (185, 4), (200, 3), (200, 6), (200, 9), (201, 3), (201, 6), (201, 9), (202, 3), (202, 6), (202, 9), + (203, 3), (203, 6), (203, 9), (204, 3), (204, 6), (204, 9), (205, 3), (205, 6), (205, 9), (206, 3), + (206, 6), (206, 9), (207, 3), (207, 6), (207, 9), (208, 3), (208, 6), (208, 9), (209, 3), (209, 6), + (209, 9), (210, 3), (210, 6), (210, 9), (230, 12), (231, 12), (232, 12), (236, 2), (236, 3), + (236, 4), (236, 5), (237, 2), (237, 3), (237, 4), (237, 5), (238, 2), (238, 3), (238, 4), (238, 5), + (248, 10)], + "Turtle Zone 1": + [(22, 34), (27, 37), (28, 37), (29, 37), (30, 37), (31, 37), (32, 37), (33, 37), (34, 37), + (35, 37), (36, 37), (46, 32), (46, 33), (47, 32), (47, 33), (50, 32), (50, 33), (51, 32), + (51, 33), (54, 32), (54, 33), (55, 32), (55, 33), (56, 33), (57, 33), (58, 32), (58, 33), + (59, 32), (59, 33), (62, 32), (62, 33), (63, 32), (63, 33), (66, 32), (66, 33), (67, 32), + (67, 33), (73, 43), (74, 43), (75, 43), (77, 41), (78, 41), (79, 41), (81, 40), (82, 40), + (83, 40), (85, 41), (86, 41), (87, 41), (122, 36), (123, 36), (124, 36), (125, 36), (126, 36), + (127, 36), (130, 36), (131, 36), (132, 36), (133, 36), (134, 36), (135, 36), (136, 36), (137, 36), + (138, 36), (139, 36), (140, 36), (141, 36), (143, 34), (163, 36), (164, 36), (166, 36), (167, 36), + (169, 36), (170, 36), (180, 37), (181, 37), (182, 37), (183, 37), (184, 37), (185, 37), (188, 44), + (189, 44)], + "Turtle Zone 2": + [(6, 34), (11, 34), (15, 43), (48, 36), (51, 28), (56, 35), (57, 35), (59, 42), (61, 20), (62, 20), + (62, 35), (63, 20), (63, 35), (64, 20), (65, 20), (67, 35), (68, 35), (72, 39), (79, 34), + (82, 35), (87, 42), (96, 43), (105, 43), (107, 43), (109, 43), (118, 28), (121, 28), (139, 39), + (142, 39)], + "Turtle Zone Secret Course": + [(19, 27), (39, 27), (39, 28), (40, 26), (40, 27), (41, 25), (41, 27), (42, 25), (42, 27), + (43, 26), (43, 27), (44, 27), (44, 28), (48, 25), (48, 26), (48, 27), (48, 28), (49, 25), + (49, 27), (50, 25), (50, 27), (51, 25), (51, 27), (52, 26), (52, 28), (53, 27), (61, 25), + (61, 28), (62, 25), (62, 26), (62, 27), (62, 28), (63, 25), (63, 28), (64, 26), (73, 26), + (73, 27), (74, 25), (74, 28), (75, 25), (75, 28), (76, 25), (76, 28), (77, 26), (77, 27), + (82, 25), (82, 26), (82, 27), (82, 28), (83, 28), (84, 28), (85, 28), (87, 27), (89, 27), + (89, 28), (90, 26), (90, 27), (91, 25), (91, 27), (92, 25), (92, 27), (93, 26), (93, 27), + (94, 27), (94, 28), (98, 24), (98, 25), (98, 26), (98, 27), (99, 25), (100, 26), (101, 27), + (102, 24), (102, 25), (102, 26), (102, 27), (108, 24), (108, 25), (108, 26), (108, 27), + (109, 24), (109, 27), (110, 24), (110, 27), (111, 24), (111, 27), (112, 25), (112, 26), + (116, 24), (116, 27), (117, 23), (117, 26), (117, 27), (118, 23), (118, 25), (118, 27), + (119, 23), (119, 25), (119, 27), (120, 24), (120, 27), (121, 28), (122, 28), (123, 28)], + "Turtle Zone 3": + [(16, 25), (17, 25), (18, 25), (19, 25), (20, 25), (21, 25), (22, 25), (23, 25), (24, 25), + (35, 24), (36, 24), (37, 24), (38, 24), (39, 24), (40, 24), (41, 24), (42, 24), (43, 24), + (75, 28), (75, 29), (76, 28), (76, 29), (81, 28), (81, 29), (82, 28), (82, 29), (92, 26), + (93, 26), (94, 26), (98, 26), (99, 26), (100, 26), (123, 26), (124, 26), (126, 26), (127, 26), + (129, 26), (130, 26), (146, 22), (146, 29), (147, 22), (147, 29), (148, 22), (150, 22), (151, 22), + (152, 23), (152, 29), (153, 29), (154, 22), (155, 22), (156, 22), (158, 29), (159, 29), (161, 22), + (162, 22), (163, 22), (165, 22), (166, 22), (167, 22), (169, 22), (170, 22), (171, 22)], + "Mario Zone 1": + [(18, 44), (47, 36), (47, 37), (47, 38), (47, 39), (49, 36), (49, 37), (49, 38), (50, 36), (50, 37), + (50, 38), (52, 36), (52, 37), (52, 38), (53, 36), (53, 37), (53, 38), (60, 35), (60, 36), (60, 37), + (61, 35), (61, 36), (61, 37), (64, 35), (64, 36), (64, 37), (65, 35), (65, 36), (65, 37), (71, 36), + (78, 36), (78, 37), (78, 38), (98, 38), (145, 42), (146, 22), (146, 23), (146, 25), (146, 26), + (146, 42), (147, 22), (147, 23), (147, 25), (147, 26), (147, 30), (147, 31), (147, 32), (147, 42), + (148, 22), (148, 23), (148, 25), (148, 30), (148, 31), (148, 32), (148, 42), (149, 21), (149, 22), + (149, 23), (149, 24), (149, 30), (149, 31), (149, 42), (150, 21), (150, 22), (150, 23), (150, 24), + (150, 26), (150, 27), (150, 28), (150, 30), (150, 31), (150, 42), (151, 27), (151, 28), (151, 30), + (151, 31), (151, 42), (152, 27), (152, 29), (152, 30), (152, 31), (152, 42), (153, 27), (153, 29), + (153, 30), (153, 42), (154, 27), (154, 29), (154, 30), (164, 20), (167, 21), (167, 26), (167, 34), + (168, 21), (168, 25), (168, 27), (168, 33), (168, 35), (169, 20), (169, 24), (169, 28), (169, 33), + (169, 35), (170, 20), (170, 23), (170, 29), (170, 32), (170, 35), (171, 20), (171, 23), (171, 29), + (171, 32), (171, 36), (171, 37), (172, 21), (172, 22), (172, 30), (172, 31)], + "Mario Zone 2": + [(25, 24), (25, 27), (26, 24), (26, 27), (27, 24), (27, 27), (81, 27), (112, 24), (113, 24), + (114, 24), (115, 24), (116, 24), (117, 24), (118, 24), (121, 24), (122, 24), (123, 24), (124, 24), + (125, 24), (126, 24), (127, 24), (138, 26), (139, 26), (140, 24), (140, 28), (141, 24), (141, 28), + (144, 26), (145, 26), (146, 24), (146, 28), (147, 28), (151, 26), (152, 24), (152, 28), (153, 24), + (153, 28), (156, 26), (157, 26), (158, 24), (158, 28), (159, 24), (159, 28), (162, 26), (163, 26), + (164, 28), (165, 28)], + "Mario Zone 3": + [(8, 28), (11, 28), (14, 28), (17, 28), (20, 28), (23, 28), (54, 25), (100, 27), (109, 18), + (109, 19), (110, 18), (110, 19), (111, 17), (111, 18), (111, 19), (112, 17), (112, 18), (112, 19), + (127, 17), (127, 18), (127, 19), (128, 17), (128, 18), (128, 19), (129, 18), (129, 19), (130, 18), + (130, 19), (130, 20), (131, 18), (131, 19), (131, 20), (132, 18), (132, 19), (132, 20), (133, 18), + (133, 19), (133, 20), (133, 27), (134, 18), (134, 19), (134, 20), (157, 28), (158, 28), (159, 28), + (160, 28), (161, 28), (168, 28), (169, 28), (170, 28), (171, 28), (172, 28), (189, 44), (199, 28), + (200, 28), (201, 28), (202, 28), (203, 28), (214, 27), (217, 27), (220, 27), (223, 27)], + "Mario Zone 4": + [(20, 25), (114, 24), (114, 25), (114, 26), (115, 24), (115, 25), (115, 26), (115, 27), (115, 28), + (115, 29), (116, 24), (116, 25), (116, 26), (116, 27), (116, 29), (117, 24), (117, 25), (117, 26), + (117, 27), (117, 28), (117, 29), (118, 24), (118, 25), (118, 26), (118, 27), (118, 28), (118, 29), + (119, 24), (119, 25), (119, 27), (119, 28), (119, 29), (120, 24), (120, 25), (120, 26), (120, 27), + (120, 28), (120, 29), (121, 24), (121, 25), (121, 26), (121, 27), (121, 28), (121, 29), (122, 12), + (122, 24), (122, 25), (122, 26), (122, 27), (122, 29), (123, 12), (123, 24), (123, 25), (123, 26), + (123, 27), (123, 28), (123, 29), (124, 12), (124, 24), (124, 25), (124, 26), (124, 27), (124, 28), + (124, 29), (125, 12), (179, 12)], + "Pumpkin Zone 1": + [(23, 12), (55, 24), (55, 26), (56, 27), (57, 24), (57, 26), (63, 24), (63, 26), (64, 27), + (65, 24), (65, 26), (71, 24), (71, 26), (72, 27), (73, 24), (73, 26), (79, 24), (79, 26), + (80, 27), (81, 24), (81, 26), (86, 25), (86, 27), (92, 4), (93, 27), (95, 25), (95, 27), (98, 4), + (102, 26), (102, 28), (104, 4), (104, 26), (104, 28), (165, 14), (166, 15), (171, 20), (172, 21), + (173, 22), (175, 24), (176, 25), (177, 26), (179, 28), (180, 29), (189, 6)], + "Pumpkin Zone 2": + [(34, 26), (40, 21), (41, 21), (42, 21), (43, 21), (48, 20), (49, 20), (50, 20), (50, 41), + (51, 20), (51, 41), (52, 41), (53, 41), (54, 41), (56, 21), (57, 21), (58, 21), (59, 21), + (61, 41), (62, 41), (64, 20), (65, 20), (66, 20), (67, 20), (114, 36), (115, 35), (115, 36), + (116, 34), (116, 35), (116, 36), (132, 20), (132, 21), (132, 22), (132, 23), (132, 24), + (144, 23), (169, 27)], + "Pumpkin Zone 3": + [(18, 26), (20, 26), (22, 26), (24, 26), (26, 26), (31, 18), (32, 18), (33, 18), (34, 18), + (35, 18), (36, 18), (37, 18), (38, 18), (39, 18), (40, 18), (41, 18), (42, 18), (48, 24), + (52, 20), (52, 24), (56, 24), (87, 27), (88, 27), (89, 27), (90, 27), (94, 27), (95, 27), + (96, 27), (97, 27), (101, 27), (102, 27), (103, 27), (104, 27), (104, 42), (108, 27), (109, 27), + (110, 27), (111, 27), (115, 27), (116, 27), (117, 27), (118, 27), (134, 35), (134, 41), + (135, 35), (135, 41), (136, 35), (136, 41), (137, 35), (137, 41), (138, 35), (138, 41), + (139, 35), (139, 41), (140, 41), (225, 38), (226, 37), (227, 36), (227, 37), (227, 38), + (227, 39), (227, 40), (227, 41), (228, 37), (229, 38)], + "Pumpkin Zone Secret Course 1": + [(14, 15), (16, 9), (16, 10), (16, 11), (16, 12), (16, 13), (16, 14), (16, 15), (16, 16), + (17, 9), (17, 10), (17, 11), (17, 12), (17, 13), (17, 14), (17, 15), (17, 16), (18, 9), + (18, 10), (18, 11), (18, 12), (18, 13), (18, 14), (18, 15), (18, 16), (19, 9), (19, 10), + (19, 11), (19, 12), (19, 13), (19, 14), (19, 15), (19, 16), (20, 9), (20, 10), (20, 11), + (20, 12), (20, 13), (20, 14), (20, 15), (20, 16), (21, 9), (21, 10), (21, 11), (21, 12), + (21, 13), (21, 14), (21, 15), (21, 16), (22, 9), (22, 10), (22, 11), (22, 12), (22, 13), + (22, 14), (22, 15), (22, 16), (23, 9), (23, 10), (23, 11), (23, 12), (23, 13), (23, 14), + (23, 15), (23, 16), (24, 9), (24, 10), (24, 11), (24, 12), (24, 13), (24, 14), (24, 15), + (24, 16), (25, 9), (25, 10), (25, 11), (25, 12), (25, 13), (25, 14), (25, 15), (25, 16), + (26, 9), (26, 10), (26, 11), (26, 12), (26, 13), (26, 14), (26, 15), (27, 16), (28, 9), + (28, 10), (28, 11), (28, 12), (28, 13), (28, 14), (28, 15), (28, 16), (29, 9), (29, 10), + (29, 11), (29, 12), (29, 13), (29, 14), (29, 15), (29, 16), (30, 9), (30, 10), (30, 11), + (30, 12), (30, 13), (30, 14), (30, 15), (30, 16), (31, 9), (31, 10), (31, 11), (31, 12), + (31, 13), (31, 14), (31, 15), (31, 16), (32, 9), (32, 10), (32, 11), (32, 12), (32, 13), + (32, 14), (32, 15), (32, 16), (33, 9), (33, 10), (33, 11), (33, 12), (33, 13), (33, 14), + (33, 15), (33, 16), (34, 9), (34, 10), (34, 11), (34, 12), (34, 13), (34, 14), (34, 15), + (34, 16), (35, 9), (35, 10), (35, 11), (35, 12), (35, 13), (35, 14), (35, 15), (35, 16), + (36, 9), (36, 10), (36, 11), (36, 12), (36, 13), (36, 14), (36, 15), (36, 16), (37, 9), + (37, 10), (37, 11), (37, 12), (37, 13), (37, 14), (37, 15), (37, 16), (39, 16), (40, 9), + (40, 10), (40, 11), (40, 12), (40, 13), (40, 14), (40, 15), (40, 16), (41, 9), (41, 10), + (41, 11), (41, 12), (41, 13), (41, 14), (41, 15), (41, 16), (42, 9), (42, 10), (42, 11), + (42, 12), (42, 13), (42, 14), (42, 15), (42, 16), (43, 9), (43, 10), (43, 11), (43, 12), + (43, 13), (43, 14), (43, 15), (43, 16), (44, 9), (44, 10), (44, 11), (44, 12), (44, 13), + (44, 14), (44, 15), (44, 16), (45, 9), (45, 10), (45, 11), (45, 12), (45, 13), (45, 14), + (45, 15), (45, 16), (46, 9), (46, 10), (46, 11), (46, 12), (46, 13), (46, 14), (46, 15), + (46, 16), (47, 9), (47, 10), (47, 11), (47, 12), (47, 13), (47, 14), (47, 15), (47, 16), + (48, 9), (48, 10), (48, 11), (48, 12), (48, 13), (48, 14), (48, 15), (48, 16), (49, 9), + (49, 10), (49, 11), (49, 12), (49, 13), (49, 14), (49, 15), (49, 16), (52, 9), (52, 10), + (52, 11), (52, 12), (52, 13), (52, 14), (52, 15), (52, 16), (53, 9), (53, 10), (53, 11), + (53, 12), (53, 13), (53, 14), (53, 15), (53, 16), (54, 9), (54, 10), (54, 11), (54, 12), + (54, 13), (54, 14), (54, 15), (54, 16), (55, 9), (55, 10), (55, 11), (55, 12), (55, 13), + (55, 14), (55, 15), (55, 16), (56, 9), (56, 10), (56, 11), (56, 12), (56, 13), (56, 14), + (56, 15), (56, 16), (57, 9), (57, 10), (57, 11), (57, 12), (57, 13), (57, 14), (57, 15), + (57, 16), (58, 9), (58, 10), (58, 11), (58, 12), (58, 13), (58, 14), (58, 15), (58, 16), + (59, 9), (59, 10), (59, 11), (59, 12), (59, 13), (59, 14), (59, 15), (59, 16), (60, 9), + (60, 10), (60, 11), (60, 12), (60, 13), (60, 14), (60, 15), (60, 16), (61, 9), (61, 10), + (61, 11), (61, 12), (61, 13), (61, 14), (61, 15), (61, 16), (64, 9), (64, 10), (64, 11), + (64, 12), (64, 13), (64, 14), (64, 15), (64, 16), (65, 9), (65, 10), (65, 11), (65, 12), + (65, 13), (65, 14), (65, 15), (65, 16), (66, 9), (66, 10), (66, 11), (66, 12), (66, 13), + (66, 14), (66, 15), (66, 16), (67, 9), (67, 10), (67, 11), (67, 12), (67, 13), (67, 14), + (67, 15), (67, 16), (68, 9), (68, 10), (68, 11), (68, 12), (68, 13), (68, 14), (68, 15), + (68, 16), (69, 9), (69, 10), (69, 11), (69, 12), (69, 13), (69, 14), (69, 15), (69, 16), + (70, 9), (70, 10), (70, 11), (70, 12), (70, 13), (70, 14), (70, 15), (70, 16), (71, 9), + (71, 10), (71, 11), (71, 12), (71, 13), (71, 14), (71, 15), (71, 16), (72, 9), (72, 10), + (72, 11), (72, 12), (72, 13), (72, 14), (72, 15), (72, 16), (73, 9), (73, 10), (73, 11), + (73, 12), (73, 13), (73, 14), (73, 15), (73, 16)], + "Pumpkin Zone Secret Course 2": + [(12, 6), (72, 7), (73, 7), (80, 7), (81, 7), (85, 8), (90, 10), (91, 10), (94, 10), + (95, 10), (98, 9), (99, 9), (102, 9), (103, 9)], + "Pumpkin Zone 4": + [(18, 28), (19, 28), (20, 28), (21, 28), (83, 37), (83, 38), (84, 37), (84, 38), (85, 37), + (85, 38), (85, 39), (86, 37), (87, 37), (87, 40), (88, 37), (88, 38), (88, 39), (88, 40), + (89, 37), (89, 38), (89, 39), (89, 40), (90, 37), (90, 38), (91, 37), (91, 38), (92, 37), + (92, 38), (92, 39), (92, 40), (93, 23), (93, 37), (93, 40), (94, 23), (94, 37), (94, 40), + (103, 23), (104, 23), (113, 23), (114, 23), (169, 30), (170, 28), (170, 30), (171, 26), + (171, 28), (171, 30), (172, 24), (172, 26), (172, 28), (172, 30), (173, 24), (173, 26), + (173, 28), (173, 30), (174, 26), (174, 28), (174, 30), (175, 28), (175, 30), (176, 30), + (198, 37), (198, 38), (199, 37), (199, 38), (204, 37), (204, 38), (205, 37), (205, 38), + (210, 37), (210, 38), (211, 37), (211, 38), (216, 37), (216, 38), (217, 37), (217, 38)], + "Macro Zone 1": + [(22, 32), (22, 33), (22, 34), (23, 20), (23, 21), (23, 22), (23, 38), (23, 39), (23, 40), (24, 26), + (24, 27), (24, 28), (39, 42), (40, 41), (41, 40), (42, 39), (49, 43), (62, 42), (62, 43), (62, 44), + (68, 42), (68, 43), (68, 44), (75, 42), (75, 43), (75, 44), (84, 40), (84, 41), (84, 42), (87, 39), + (89, 42), (89, 43), (89, 44), (107, 42), (108, 42), (109, 42), (118, 42), (119, 42), (120, 42), + (121, 42), (122, 42), (128, 42), (128, 43), (130, 42), (130, 43), (134, 42), (134, 43), (140, 42), + (141, 42), (142, 42), (143, 42), (144, 42), (154, 42), (155, 42), (156, 42), (163, 22), (163, 23), + (164, 21), (164, 22), (164, 23), (165, 22), (165, 23), (166, 21), (166, 22), (166, 23), (167, 22), + (167, 23), (168, 21), (168, 22), (168, 23), (169, 22), (169, 23), (170, 21), (170, 22), (170, 23), + (171, 22), (171, 23), (177, 40), (182, 40), (189, 41), (189, 42), (189, 43), (189, 44), (189, 45), + (205, 46), (206, 46), (208, 37), (209, 37), (212, 41), (213, 41), (214, 41), (215, 41), (216, 41), + (220, 37), (221, 37), (224, 46), (225, 46), (234, 43), (246, 38), (246, 39), (246, 40), (246, 41), + (246, 42), (246, 43)], + "Macro Zone 2": + [(18, 28), (19, 27), (22, 28), (23, 27), (25, 26), (27, 27), (28, 27), (31, 27), (32, 27), (41, 29), + (42, 29), (43, 29), (55, 29), (57, 29), (60, 29), (62, 29), (69, 27), (70, 27), (71, 27), (74, 27), + (75, 27), (76, 27), (79, 27), (80, 27), (81, 27), (84, 27), (85, 27), (86, 27), (99, 40), + (137, 37), (180, 40), (181, 8), (182, 8), (183, 8), (184, 8), (185, 8), (186, 8), (187, 8), + (188, 8), (189, 8), (190, 8), (191, 8), (192, 8), (193, 8), (194, 8), (195, 8), (196, 8), (197, 8), + (198, 8), (199, 8), (200, 8), (201, 8), (202, 8), (204, 8), (205, 8), (206, 8), (207, 8), (208, 8), + (209, 8), (210, 8), (211, 8), (212, 8), (213, 8), (215, 8), (216, 8), (217, 8), (217, 11), + (218, 8), (218, 9), (218, 10), (218, 11), (218, 12), (219, 11)], + "Macro Zone 3": + [(24, 23), (37, 28), (38, 28), (39, 28), (40, 28), (57, 30), (58, 30), (59, 30), (65, 17), (65, 18), + (65, 19), (66, 17), (66, 18), (66, 19), (67, 17), (67, 18), (67, 19), (68, 17), (68, 18), (68, 19), + (69, 17), (69, 18), (69, 19), (70, 17), (70, 18), (70, 19), (73, 17), (73, 18), (73, 19), (74, 17), + (74, 18), (74, 19), (75, 17), (75, 18), (75, 19), (76, 17), (76, 18), (76, 19), (77, 17), (77, 18), + (77, 19), (78, 17), (78, 18), (78, 19), (85, 43), (95, 17), (95, 18), (95, 19), (95, 20), (96, 17), + (96, 18), (96, 19), (96, 20), (97, 17), (97, 18), (97, 19), (97, 20), (98, 17), (98, 18), (98, 19), + (98, 20), (100, 17), (100, 18), (100, 19), (100, 20), (101, 17), (101, 18), (101, 19), (101, 20), + (103, 42), (104, 42), (105, 42), (106, 42), (107, 42), (116, 42), (117, 42), (118, 42), (119, 42), + (120, 42), (121, 42), (122, 42), (129, 19), (131, 42), (132, 42), (133, 42), (134, 42), (135, 42), + (136, 42), (165, 21), (165, 22), (166, 21), (166, 22), (171, 21), (171, 22), (172, 21), (172, 22), + (176, 20), (176, 21), (176, 22), (179, 20), (179, 21), (179, 22), (183, 21), (183, 22), (184, 21), + (184, 22), (194, 27), (194, 28), (197, 27), (197, 28), (200, 27), (200, 28), (203, 25), (203, 27), + (203, 28), (205, 18), (205, 19), (206, 18), (206, 19)], + "Macro Zone 4": + [(16, 28), (34, 28), (39, 28), (39, 29), (39, 30), (40, 28), (40, 29), (40, 30), (41, 28), (41, 29), + (41, 30), (62, 29), (63, 29), (64, 29), (65, 29), (66, 29), (67, 29), (68, 29), (69, 29), (81, 17), + (81, 18), (82, 17), (82, 18), (83, 17), (83, 18), (84, 17), (84, 18), (85, 17), (85, 18), (86, 17), + (86, 18), (87, 17), (87, 18), (87, 28), (88, 17), (88, 18), (114, 28), (144, 22), (146, 27), + (146, 28), (147, 27), (147, 28), (148, 27), (148, 28), (149, 27), (149, 28), (150, 27), (150, 28), + (151, 27), (151, 28), (152, 27), (152, 28), (153, 27), (153, 28), (154, 27), (154, 28), (155, 27), + (155, 28), (156, 27), (156, 28), (157, 27), (157, 28), (158, 27), (158, 28)], + "Macro Zone Secret Course": + [(21, 24), (70, 27), (70, 28), (71, 27), (71, 28), (72, 27), (72, 28), (73, 27), (73, 28), + (74, 27), (74, 28), (75, 27), (75, 28), (76, 24), (76, 25), (76, 26), (76, 27), (76, 28), + (77, 24), (77, 25), (77, 26), (77, 27), (77, 28), (78, 24), (78, 25), (78, 26), (78, 27), + (78, 28), (79, 24), (79, 25), (79, 26), (79, 27), (80, 25), (80, 26), (81, 25), (81, 26), + (88, 25), (108, 30)], + "Mario's Castle": + [(7, 25), (160, 44), (167, 28), (247, 26)], +} +powerup_coords = { + "Mushroom Zone": [(42, 28), (151, 28), (152, 28), (188, 28)], + "Scenic Course": [(39, 28), (72, 28), (117, 28)], + "Tree Zone 1": [(119, 28), (152, 28)], + "Tree Zone 2": [(43, 10), (61, 9), (51, 28), (130, 7), (182, 3), (136, 43)], + "Tree Zone Secret Course": [(17, 23), (100, 23), (159, 23)], + "Tree Zone 3": [(26, 40), (77, 24)], + "Tree Zone 4": [(28, 27), (105, 25), (136, 22), (171, 10)], + "Tree Zone 5": [(123, 39), (138, 39), (146, 36)], + "Pumpkin Zone 1": [(23, 12), (72, 27), (98, 4), (189, 6)], + "Pumpkin Zone 2": [(144, 23)], + "Pumpkin Zone Secret Course 1": [(14, 15)], + "Pumpkin Zone 3": [(52, 20), (104, 42), (139, 35), (140, 41)], + "Pumpkin Zone Secret Course 2": [(12, 6), (85, 8)], + "Pumpkin Zone 4": [(83, 38), (94, 40), (104, 23)], + "Mario Zone 1": [(18, 44), (98, 38), (145, 42), (164, 20)], + "Mario Zone 2": [(81, 27)], + "Mario Zone 3": [(54, 25), (100, 27), (134, 18), (189, 44), (214, 27)], + "Mario Zone 4": [(20, 25), (124, 12), (179, 12)], + "Turtle Zone 1": [(22, 34), (56, 33), (57, 33), (143, 34), (189, 44)], + "Turtle Zone 2": [(82, 35), (139, 39), ], + "Turtle Zone Secret Course": [(19, 27), (53, 27), (64, 26), (87, 27), (121, 28), (122, 28), (123, 28)], + "Turtle Zone 3": [(39, 24), (94, 26), (152, 23)], + "Hippo Zone": [(3, 3), (2, 20), (15, 26), (16, 26), (29, 21), (86, 22), (137, 13)], + "Space Zone 1": [(75, 24), (114, 22)], + # "Space Zone Secret Course": [], + "Space Zone 2": [(64, 3), (102, 8), (120, 5), (207, 6), (210, 9), (248, 10)], + "Macro Zone 1": [(49, 43), (87, 39), (177, 40), (164, 21), (166, 21), (170, 21), (234, 43)], + "Macro Zone 2": [(25, 26), (99, 40), (137, 37), (180, 40)], + "Macro Zone 3": [(24, 23), (85, 43), (129, 19), (203, 25)], + "Macro Zone 4": [(16, 28), (87, 28), (144, 22)], + "Macro Zone Secret Course": [(21, 24), (88, 25), (108, 30)], + "Mario's Castle": [(7, 25), (160, 44), (167, 28), (247, 26)] +} +for zone, coords_list in powerup_coords.items(): + for coords in coords_list: + coins_coords[zone].remove(coords) + +location_name_to_id = {location_name: ID for ID, location_name in enumerate(locations, START_IDS)} +loc_id = START_IDS + len(locations) +for level, coin_coords in coins_coords.items(): + for i in range(1, len(coin_coords) + 1): + location_name_to_id[f"{level} - {i} Coin{'s' if i > 1 else ''}"] = loc_id + loc_id += 1 + +# eligible_levels = [0, 1, 2, 3, 5, 8, 9, 11, 13, 14, 16, 19, 20, 22, 23, 25, 30, 31] + +level_id_to_name = { + 0: "Mushroom Zone", 25: "Scenic Course", 1: "Tree Zone 1", 2: "Tree Zone 2", 4: "Tree Zone 3", 3: "Tree Zone 4", + 5: "Tree Zone 5", 29: "Tree Zone Secret Course", 17: "Hippo Zone", 18: "Space Zone 1", + 28: "Space Zone Secret Course", 19: "Space Zone 2", 20: "Macro Zone 1", 21: "Macro Zone 2", 22: "Macro Zone 3", + 23: "Macro Zone 4", 30: "Macro Zone Secret Course", 6: "Pumpkin Zone 1", 7: "Pumpkin Zone 2", + 8: "Pumpkin Zone 3", 9: "Pumpkin Zone 4", 27: "Pumpkin Zone Secret Course 1", 31: "Pumpkin Zone Secret Course 2", + 10: "Mario Zone 1", 11: "Mario Zone 2", 12: "Mario Zone 3", 13: "Mario Zone 4", 14: "Turtle Zone 1", + 15: "Turtle Zone 2", 16: "Turtle Zone 3", 26: "Turtle Zone Secret Course", 24: "Mario's Castle" +} + +level_name_to_id = {name: level_id for level_id, name in level_id_to_name.items()} + +auto_scroll_max = { + "Mushroom Zone": 84, + "Hippo Zone": 160, + "Tree Zone 1": 87, + "Tree Zone 2": 68, + "Tree Zone 3": 4, + "Tree Zone 4": 28, + "Tree Zone 5": 22, + "Space Zone 1": 72, + "Space Zone 2": 113, + "Space Zone Secret Course": 96, + "Macro Zone 1": 74, + "Macro Zone 2": 27, + "Macro Zone 3": 63, + "Macro Zone 4": 59, + "Pumpkin Zone 1": (0, 12), + "Pumpkin Zone 2": 23, + "Pumpkin Zone 3": 50, + "Pumpkin Zone 4": 45, + "Pumpkin Zone Secret Course 1": 172, + "Mario Zone 1": 68, + "Mario Zone 3": 29, + "Mario Zone 4": 60, + "Turtle Zone 1": 66, + "Turtle Zone 2": 8, +} diff --git a/worlds/marioland2/logic.py b/worlds/marioland2/logic.py new file mode 100644 index 000000000000..9934535572f9 --- /dev/null +++ b/worlds/marioland2/logic.py @@ -0,0 +1,608 @@ +from .locations import level_name_to_id + + +def is_auto_scroll(state, player, level): + level_id = level_name_to_id[level] + if state.has_any(["Cancel Auto Scroll", f"Cancel Auto Scroll - {level}"], player): + return False + return state.multiworld.worlds[player].auto_scroll_levels[level_id] > 0 + + +def has_pipe_right(state, player): + return state.has_any(["Pipe Traversal - Right", "Pipe Traversal"], player) + + +def has_pipe_left(state, player): + return state.has_any(["Pipe Traversal - Left", "Pipe Traversal"], player) + + +def has_pipe_down(state, player): + return state.has_any(["Pipe Traversal - Down", "Pipe Traversal"], player) + + +def has_pipe_up(state, player): + return state.has_any(["Pipe Traversal - Up", "Pipe Traversal"], player) + + +def has_level_progression(state, item, player, count=1): + return state.count(item, player) + (state.count(item + " x2", player) * 2) >= count + + +def mushroom_zone_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Mushroom Zone") + reachable_coins = 38 + if state.has_any(["Mushroom", "Fire Flower"], player) or not auto_scroll: + # Was able to get all but 1, being lenient. + reachable_coins += 2 + if has_pipe_down(state, player): + # There's 24 in each of the underground sections. + # The first one requires missing some question mark blocks if auto scrolling (the last +4). + # If you go in the second without pipe up, you can get everything except the last 5 plus the ones in the first + # underground section. + reachable_coins += 19 + if has_pipe_up(state, player) or not auto_scroll: + reachable_coins += 5 + if has_pipe_up(state, player): + reachable_coins += 20 + if not auto_scroll: + reachable_coins += 4 + return coins <= reachable_coins + + +def tree_zone_1_coins(state, player, coins): + return coins <= 87 or not is_auto_scroll(state, player, "Tree Zone 1") + + +def tree_zone_2_normal_exit(state, player): + return has_pipe_right(state, player) or state.has("Tree Zone 2 Midway Bell", player) + + +def tree_zone_2_secret_exit(state, player): + return has_pipe_right(state, player) and state.has("Carrot", player) + + +def tree_zone_2_midway_bell(state, player): + return has_pipe_right(state, player) or state.has("Tree Zone 2 Midway Bell", player) + + +def tree_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Tree Zone 2") + reachable_coins = 18 + if has_pipe_right(state, player): + reachable_coins += 38 + if state.has("Carrot", player): + reachable_coins += 12 + if not auto_scroll: + reachable_coins += 30 + elif state.has("Tree Zone 2 Midway Bell", player): + reachable_coins = 30 + if not auto_scroll: + reachable_coins += 8 + return coins <= reachable_coins + + +def tree_zone_3_normal_exit(state, player): + return not is_auto_scroll(state, player, "Tree Zone 3") + + +def tree_zone_3_coins(state, player, coins): + if is_auto_scroll(state, player, "Tree Zone 3"): + return coins <= 4 + if coins <= 19: + return True + elif state.has_any(["Mushroom", "Fire Flower"], player) and coins <= 21: + return True + return state.has("Carrot", player) + + +def tree_zone_4_normal_exit(state, player): + return has_pipe_down(state, player) and tree_zone_4_midway_bell(state, player) + + +def tree_zone_4_midway_bell(state, player): + return ((has_pipe_right(state, player) and has_pipe_up(state, player)) + or state.has("Tree Zone 4 Midway Bell", player)) + + +def tree_zone_4_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Tree Zone 4") + reachable_coins = 0 + if has_pipe_up(state, player): + reachable_coins += 14 + if has_pipe_right(state, player): + reachable_coins += 4 + if has_pipe_down(state, player): + reachable_coins += 10 + if not auto_scroll: + reachable_coins += 46 + elif state.has("Tree Zone 4 Midway Bell", player): + if not auto_scroll: + if has_pipe_left(state, player): + reachable_coins += 18 + if has_pipe_down(state, player): + reachable_coins += 10 + if has_pipe_up(state, player): + reachable_coins += 46 + elif has_pipe_down(state, player): + reachable_coins += 10 + return coins <= reachable_coins + + +def tree_zone_5_boss(state, player): + return has_pipe_right(state, player) and (has_pipe_up(state, player) or state.has("Carrot", player)) + + +def tree_zone_5_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Tree Zone 5") + reachable_coins = 0 + # Not actually sure if these platforms can be randomized / can make the coin blocks unreachable from below + if ((not state.multiworld.worlds[player].options.randomize_platforms) + or state.has_any(["Mushroom", "Fire Flower"], player)): + reachable_coins += 2 + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 2 + if state.has("Carrot", player): + reachable_coins += 18 + if has_pipe_up(state, player) and not auto_scroll: + reachable_coins += 13 + elif has_pipe_up(state, player): + reachable_coins += 13 + return coins <= reachable_coins + + +def pumpkin_zone_1_normal_exit(state, player): + return pumpkin_zone_1_midway_bell(state, player) + + +def pumpkin_zone_1_midway_bell(state, player): + return ((has_pipe_down(state, player) and not is_auto_scroll(state, player, "Pumpkin Zone 1")) + or state.has("Pumpkin Zone 1 Midway Bell", player)) + + +def pumpkin_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 1") + if auto_scroll: + return coins <= 12 and state.has("Pumpkin Zone 1 Midway Bell", player) + reachable_coins = 0 + if state.has("Pumpkin Zone 1 Midway Bell", player) or has_pipe_down(state, player): + reachable_coins += 38 + if has_pipe_up(state, player): + reachable_coins += 2 + return coins <= reachable_coins + + +def pumpkin_zone_2_normal_exit(state, player): + return has_pipe_down(state, player) and has_pipe_up(state, player) and has_pipe_right(state, player) and state.has( + "Water Physics", player) and not is_auto_scroll(state, player, "Pumpkin Zone 2") + + +def pumpkin_zone_2_secret_exit(state, player): + return pumpkin_zone_2_normal_exit(state, player) and state.has_any(["Mushroom", "Fire Flower"], player) + + +def pumpkin_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 2") + reachable_coins = 17 + if has_pipe_down(state, player): + if not auto_scroll: + reachable_coins += 7 + if (has_pipe_up(state, player) or auto_scroll) and state.has("Water Physics", player): + reachable_coins += 6 + if has_pipe_right(state, player) and not auto_scroll: + reachable_coins += 1 + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 5 + return coins <= reachable_coins + + +def pumpkin_zone_secret_course_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone Secret Course 1") + # We'll be a bit forgiving. I was able to reach 43 while small. + if coins <= 40: + return True + if state.has("Carrot", player): + if auto_scroll: + return coins <= 172 + return True + return False + + +def pumpkin_zone_3_secret_exit(state, player): + return state.has("Carrot", player) + + +def pumpkin_zone_3_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 3") + reachable_coins = 38 + if has_pipe_up(state, player) and ((not auto_scroll) or has_pipe_down(state, player)): + reachable_coins += 12 + if has_pipe_down(state, player) and not auto_scroll: + reachable_coins += 11 + return coins <= reachable_coins + + +def pumpkin_zone_4_boss(state, player): + return has_pipe_right(state, player) + + +def pumpkin_zone_4_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 4") + reachable_coins = 29 + if has_pipe_down(state, player): + if auto_scroll: + if has_pipe_up(state, player): + reachable_coins += 16 + else: + reachable_coins += 4 + else: + reachable_coins += 28 + # both sets of coins are down, but you need pipe up to return to go down to the next set in one playthrough + if has_pipe_up(state, player): + reachable_coins += 16 + return coins <= reachable_coins + + +def mario_zone_1_normal_exit(state, player): + if has_pipe_right(state, player): + if state.has_any(["Mushroom", "Fire Flower", "Carrot", "Mario Zone 1 Midway Bell"], player): + return True + if is_auto_scroll(state, player, "Mario Zone 1"): + return True + return False + + +def mario_zone_1_midway_bell(state, player): + # It is possible to get as small mario, but it is a very precise jump and you will die afterward. + return ((state.has_any(["Mushroom", "Fire Flower", "Carrot"], player) and has_pipe_right(state, player)) + or state.has("Mario Zone 1 Midway Bell", player)) + + +def mario_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Mario Zone 1") + reachable_coins = 0 + if has_pipe_right(state, player) or (has_pipe_left(state, player) + and state.has("Mario Zone 1 Midway Bell", player) and not auto_scroll): + reachable_coins += 32 + if has_pipe_right(state, player) and (state.has_any(["Mushroom", "Fire Flower", "Carrot"], player) + or not auto_scroll): + reachable_coins += 8 + # coins from end section. I was able to get 13 as small mario, giving some leniency + if state.has("Carrot", player): + reachable_coins += 28 + else: + reachable_coins += 12 + if state.has("Fire Flower", player) and not auto_scroll: + reachable_coins += 46 + return coins <= reachable_coins + + +def mario_zone_3_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Mario Zone 3") + reachable_coins = 10 + if state.has("Carrot", player): + reachable_spike_coins = 15 + else: + sprites = state.multiworld.worlds[player].sprite_data["Mario Zone 3"] + reachable_spike_coins = min(3, len({sprites[i]["sprite"] == "Claw Grabber" for i in (17, 18, 25)}) + + state.has("Mushroom", player) + state.has("Fire Flower", player)) * 5 + reachable_coins += reachable_spike_coins + if not auto_scroll: + reachable_coins += 10 + if state.has("Fire Flower", player): + reachable_coins += 22 + if auto_scroll: + reachable_coins -= 3 + reachable_spike_coins + return coins <= reachable_coins + + +def mario_zone_4_boss(state, player): + return has_pipe_right(state, player) + + +def mario_zone_4_coins(state, player, coins): + return coins <= 60 or not is_auto_scroll(state, player, "Mario Zone 4") + + +def not_blocked_by_sharks(state, player): + sharks = [state.multiworld.worlds[player].sprite_data["Turtle Zone 1"][i]["sprite"] + for i in (27, 28)].count("Shark") + if state.has("Carrot", player) or not sharks: + return True + if sharks == 2: + return state.has_all(["Mushroom", "Fire Flower"], player) + if sharks == 1: + return state.has_any(["Mushroom", "Fire Flower"], player) + return False + + +def turtle_zone_1_normal_exit(state, player): + return not_blocked_by_sharks(state, player) + + +def turtle_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Turtle Zone 1") + reachable_coins = 30 + if not_blocked_by_sharks(state, player): + reachable_coins += 13 + if auto_scroll: + reachable_coins -= 1 + if state.has("Water Physics", player) or state.has("Carrot", player): + reachable_coins += 10 + if state.has("Carrot", player): + reachable_coins += 24 + if auto_scroll: + reachable_coins -= 10 + return coins <= reachable_coins + + +def turtle_zone_2_normal_exit(state, player): + return (has_pipe_up(state, player) and has_pipe_down(state, player) and has_pipe_right(state, player) and + has_pipe_left(state, player) and state.has("Water Physics", player) + and not is_auto_scroll(state, player, "Turtle Zone 2")) + + +def turtle_zone_2_secret_exit(state, player): + return (has_pipe_up(state, player) and state.has("Water Physics", player) + and not is_auto_scroll(state, player, "Turtle Zone 2")) + + +def turtle_zone_2_midway_bell(state, player): + return ((state.has("Water Physics", player) and not is_auto_scroll(state, player, "Turtle Zone 2")) + or state.has("Turtle Zone 2 Midway Bell", player)) + + +def turtle_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Turtle Zone 2") + reachable_coins = 2 + if auto_scroll: + if state.has("Water Physics", player): + reachable_coins += 6 + else: + reachable_coins += 2 + if state.has("Water Physics", player): + reachable_coins += 20 + elif state.has("Turtle Zone 2 Midway Bell", player): + reachable_coins += 4 + if (has_pipe_right(state, player) and has_pipe_down(state, player) + and state.has_any(["Water Physics", "Turtle Zone 2 Midway Bell"], player)): + reachable_coins += 1 + if has_pipe_left(state, player) and has_pipe_up(state, player): + reachable_coins += 1 + if state.has("Water Physics", player): + reachable_coins += 1 + return coins <= reachable_coins + + +def turtle_zone_secret_course_normal_exit(state, player): + return state.has_any(["Fire Flower", "Carrot"], player) + + +def turtle_zone_secret_course_coins(state, player, coins): + reachable_coins = 53 + if state.has("Carrot", player): + reachable_coins += 44 + elif state.has("Fire Flower", player): + reachable_coins += 36 # was able to get 38, some leniency + return coins <= reachable_coins + + +def turtle_zone_3_boss(state, player): + return has_pipe_right(state, player) + + +def turtle_zone_3_coins(state, player, coins): + return state.has_any(["Water Physics", "Mushroom", "Fire Flower", "Carrot"], player) or coins <= 51 + + +def hippo_zone_normal_or_secret_exit(state, player): + return (state.has_any(["Hippo Bubble", "Water Physics"], player) + or (state.has("Carrot", player) + and not is_auto_scroll(state, player, "Hippo Zone"))) + + +def hippo_zone_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Hippo Zone") + # This is all somewhat forgiving. + reachable_coins = 4 + if auto_scroll: + if state.has("Hippo Bubble", player): + reachable_coins = 160 + elif state.has("Carrot", player): + reachable_coins = 90 + elif state.has("Water Physics", player): + reachable_coins = 28 + else: + if state.has_any(["Water Physics", "Hippo Bubble", "Carrot"], player): + reachable_coins += 108 + if state.has_any(["Mushroom", "Fire Flower", "Hippo Bubble"], player): + reachable_coins += 6 + if state.has_all(["Fire Flower", "Water Physics"], player): + reachable_coins += 1 + if state.has("Hippo Bubble", player): + reachable_coins += 52 + return coins <= reachable_coins + + +def space_zone_1_normal_exit(state, player): + # It is possible, however tricky, to beat the Moon Stage without Carrot or Space Physics. + # However, it requires somewhat precisely jumping off enemies. Enemy shuffle may make this impossible. + # Instead, I will just always make one or the other required, since it is difficult without them anyway. + return state.has_any(["Space Physics", "Carrot"], player) + + +def space_zone_1_secret_exit(state, player): + # One or the other is actually necessary for the secret exit. + return state.has_any(["Space Physics", "Carrot"], player) and not is_auto_scroll(state, player, "Space Zone 1") + + +def space_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Space Zone 1") + if auto_scroll: + reachable_coins = 12 + if state.has_any(["Carrot", "Space Physics"], player): + reachable_coins += 20 + # If you have Space Physics, you can't make it up to the upper section. We have to assume you might have it, + # so the coins up there must be out of logic if there is auto scrolling. + if state.has("Space Physics", player): + reachable_coins += 40 + return coins <= reachable_coins + return (coins <= 21 or (coins <= 50 and state.has_any(["Mushroom", "Fire Flower"], player)) + or state.has_any(["Carrot", "Space Physics"], player)) + + +def space_zone_2_midway_bell(state, player): + return state.has_any(["Space Physics", "Space Zone 2 Midway Bell", "Mushroom", "Fire Flower", "Carrot"], player) + + +def space_zone_2_boss(state, player): + if has_pipe_right(state, player): + if state.has("Space Physics", player): + return True + if (state.has("Space Zone 2 Midway Bell", player) + or not state.multiworld.worlds[player].options.shuffle_midway_bells): + # Reaching the midway bell without space physics requires taking damage once. Reaching the end pipe from the + # midway bell also requires taking damage once. + if state.has_any(["Mushroom", "Fire Flower", "Carrot"], player): + return True + else: + # With no midway bell, you'll have to be able to take damage twice. + if state.has("Mushroom", player) and state.has_any(["Fire Flower", "Carrot"], player): + return True + return False + + +def space_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Space Zone 2") + reachable_coins = 12 + if state.has_any(["Mushroom", "Fire Flower", "Carrot", "Space Physics"], player): + reachable_coins += 15 + if state.has("Space Physics", player) or not auto_scroll: + reachable_coins += 4 # last few bottom row question mark blocks that are hard to get when auto scrolling. + if (state.has("Space Physics", player) or ( + state.has("Mushroom", player) and state.has_any(["Fire Flower", "Carrot"], player))): + reachable_coins += 3 + if state.has("Space Physics", player): + reachable_coins += 79 + if not auto_scroll: + reachable_coins += 21 + return coins <= reachable_coins + + +def space_zone_secret_course_coins(state, player, coins): + return coins <= 96 or not is_auto_scroll(state, player, "Space Zone Secret Course") + + +def macro_zone_1_normal_exit(state, player): + return has_pipe_down(state, player) or state.has("Macro Zone 1 Midway Bell", player) + + +def macro_zone_1_secret_exit(state, player): + return state.has("Fire Flower", player) and has_pipe_up(state, player) and macro_zone_1_midway_bell(state, player) + + +def macro_zone_1_midway_bell(state, player): + return has_pipe_down(state, player) or state.has("Macro Zone 1 Midway Bell", player) + + +def macro_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 1") + reachable_coins = 0 + if has_pipe_down(state, player): + reachable_coins += 69 + if auto_scroll: + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 5 + else: + reachable_coins += 9 + if state.has("Fire Flower", player): + reachable_coins += 19 + elif state.has("Macro Zone 1 Midway Bell", player): + if auto_scroll: + reachable_coins += 16 + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 5 + else: + reachable_coins += 67 + return coins <= reachable_coins + + +def macro_zone_secret_course_coins(state, player, coins): + return state.has_any(["Mushroom", "Fire Flower"], player) + + +def macro_zone_2_normal_exit(state, player): + return (has_pipe_down(state, player) or state.has("Macro Zone 2 Midway Bell", player)) and state.has( + "Water Physics", player) and has_pipe_up(state, player) and not is_auto_scroll(state, player, "Macro Zone 2") + + +def macro_zone_2_midway_bell(state, player): + return ((has_pipe_down(state, player) and state.has("Water Physics", player)) + or state.has("Macro Zone 2 Midway Bell", player)) + + +def macro_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 2") + if coins <= 27: + return True + if has_pipe_up(state, player) and state.has("Water Physics", player) and not auto_scroll: + if has_pipe_down(state, player): + return True + if state.has("Macro Zone 2 Midway Bell", player): + # Cannot return to the first section from the bell + return coins <= 42 + return False + + +def macro_zone_3_normal_exit(state, player): + return ((has_pipe_down(state, player) and has_pipe_up(state, player)) + or state.has("Macro Zone 3 Midway Bell", player)) + + +def macro_zone_3_midway_bell(state, player): + return macro_zone_3_normal_exit(state, player) + + +def macro_zone_3_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 3") + reachable_coins = 7 + if not auto_scroll: + reachable_coins += 17 + if has_pipe_up(state, player) and has_pipe_down(state, player): + if auto_scroll: + reachable_coins += 56 + else: + return True + elif has_pipe_up(state, player): + if auto_scroll: + reachable_coins += 12 + else: + reachable_coins += 36 + elif has_pipe_down(state, player): + reachable_coins += 18 + if state.has("Macro Zone 3 - Midway Bell", player): + reachable_coins = max(reachable_coins, 30) + return coins <= reachable_coins + + +def macro_zone_4_boss(state, player): + return has_pipe_right(state, player) + + +def macro_zone_4_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 4") + reachable_coins = 61 + if auto_scroll: + reachable_coins -= 8 + if state.has("Carrot", player): + reachable_coins += 6 + return coins <= reachable_coins + + +def marios_castle_wario(state, player): + return ((has_pipe_right(state, player) and has_pipe_left(state, player)) + or state.has("Mario's Castle Midway Bell", player)) + + +def marios_castle_midway_bell(state, player): + return ((has_pipe_right(state, player) and has_pipe_left(state, player)) + or state.has("Mario's Castle Midway Bell", player)) diff --git a/worlds/marioland2/options.py b/worlds/marioland2/options.py new file mode 100644 index 000000000000..ace8444b3fb6 --- /dev/null +++ b/worlds/marioland2/options.py @@ -0,0 +1,198 @@ +from Options import Toggle, Choice, NamedRange, Range, PerGameCommonOptions, ItemsAccessibility +from dataclasses import dataclass + + +class ShuffleGoldenCoins(Choice): + """ + Vanilla: Golden Coins are received when defeating bosses. + Shuffle: Shuffle the Golden Coins into the item pool and make bosses location checks. + Mario Coin Fragment Hunt: You start with all Golden Coins except the Mario Coin, which has been fragmented into many pieces. + You will see a Golden Coin being received when defeating bosses regardless of whether you are actually getting a coin. + """ + display_name = "Shuffle Golden Coins" + default = 0 + option_vanilla = 0 + option_shuffle = 1 + option_mario_coin_fragment_hunt = 2 + + +class GoldenCoinsRequired(Range): + """ + Number of Golden Coins required to enter Mario's Castle. Ignored on Mario Coin Fragment Hunt. + """ + display_name = "Golden Coins Required" + range_start = 0 + range_end = 6 + default = 6 + + +class MarioCoinFragmentPercentage(Range): + """ + Percentage of filler items to be replaced with Mario Coin Fragments. Note that the Coinsanity and Coinsanity + Checks options will greatly impact the number of replaceable filler items. + """ + display_name = "Mario Coin Fragment Percentage" + range_start = 1 + range_end = 50 + default = 20 + + +class MarioCoinFragmentsRequiredPercentage(Range): + """ + Percentage of the Mario Coins in the item pool that are required to put the Mario Coin together. + """ + display_name = "Mario Coin Fragments Required Percentage" + range_start = 1 + range_end = 100 + default = 75 + + +class ShuffleMidwayBells(Toggle): + """ + Shuffle Midway Bells into the item pool. You can always start at the beginning of a level after obtaining the + Midway Bell by holding SELECT while entering the level (until you load into the level). + The Midway Bells in levels will trigger location checks whether this option is on or not, but they will only + set the checkpoint if this is off, otherwise you must obtain the Midway Bell item from the item pool. + """ + display_name = "Shuffle Midway Bells" + + +class MariosCastleMidwayBell(Toggle): + """ + Adds a Midway Bell to the final stage, just before the Wario fight. + """ + display_name = "Mario's Castle Midway Bell" + + +class Coinsanity(Toggle): + """ + Shuffles the singular coins found freestanding and in question mark blocks into the item pool, and adds location + checks made by obtaining a sufficient number of coins in particular levels within a single playthrough. + """ + display_name = "Coinsanity" + + +class CoinsanityChecks(Range): + """ + Number of Coinsanity checks. + A higher number means more checks, and smaller coin amounts per coin item in the item pool. + If Accessibility is set to Full, auto-scroll levels may have a lower maximum count, which may lead to this + value being limited. + """ + display_name = "Coinsanity Checks" + range_start = 31 + range_end = 2599 + default = 150 + + +class DifficultyMode(Choice): + """ + Play in normal or easy mode. You can also start in Normal Mode with an "upgrade" to Easy Mode in the item pool, + or start in Easy Mode with a Normal Mode "trap" in the item pool. + """ + display_name = "Difficulty Mode" + option_normal = 0 + option_easy = 1 + option_normal_to_easy = 2 + option_easy_to_normal = 3 + default = 0 + + +class ShufflePipeTraversal(Choice): + """ + Single: Shuffle a Pipe Traversal item into the item pool, which is required to enter any pipes. + Split: Shuffle 4 Pipe Traversal items, one required for entering pipes from each direction. + Note that being unable to enter pipes is very limiting and affects nearly half of all levels. + """ + display_name = "Shuffle Pipe Traversal" + option_off = 0 + option_single = 1 + option_split = 2 + default = 0 + + +class RandomizeEnemies(Toggle): + """ + Randomize enemies throughout levels. + """ + display_name = "Randomize Enemies" + + +class RandomizePlatforms(Toggle): + """ + Randomize platforms throughout levels. + """ + display_name = "Randomize Platforms" + + +class AutoScrollChances(NamedRange): + """ + Chance per eligible level to be made into an auto scroll level. Can also set to Vanilla to leave them unchanged. + """ + display_name = "Auto Scroll Chance" + range_start = 0 + range_end = 100 + special_range_names = {"vanilla": -1, "none": 0, "all": 100} + default = -1 + + +class AutoScrollMode(Choice): + """ + Always: Any auto scroll levels will always auto-scroll. + Global Trap Item: Auto scroll levels will only auto-scroll after obtaining the Auto Scroll trap item. + Level Trap Items: As with Trap Item, but there is a separate trap item for each auto scroll level. + Global Cancel Item: Auto Scroll levels will stop auto-scrolling after obtaining the Auto Scroll Cancel item. + Level Cancel Items: As with Cancel Item, but there is a separate cancel item for each auto scroll level. + Chaos: Each level will randomly always auto scroll, have an Auto Scroll Trap, or have an Auto Scroll Cancel item. + The effects of Trap and Cancel items are permanent! If Accessibility is not set to Full, + Traps may cause locations to become permanently unreachable. + With individual level items, the number of auto scroll levels may be limited by the available space in the item + pool. + """ + display_name = "Auto Scroll Mode" + option_always = 0 + option_global_trap_item = 1 + option_level_trap_items = 2 + option_global_cancel_item = 3 + option_level_cancel_items = 4 + option_chaos = 5 + default = 0 + + +class RandomizeMusic(Toggle): + """ + Randomize the music that plays in levels and overworld areas. + """ + display_name = "Randomize Music" + + +class EnergyLink(Toggle): + """ + All extra lives beyond 1 are transferred into the server's shared EnergyLink storage. If you drop to 0, + 1 will be replenished if there is sufficient energy stored. + """ + display_name = "Energy Link" + default = 1 + + + + +@dataclass +class SML2Options(PerGameCommonOptions): + accessibility: ItemsAccessibility + shuffle_golden_coins: ShuffleGoldenCoins + required_golden_coins: GoldenCoinsRequired + mario_coin_fragment_percentage: MarioCoinFragmentPercentage + mario_coin_fragments_required_percentage: MarioCoinFragmentsRequiredPercentage + coinsanity: Coinsanity + coinsanity_checks: CoinsanityChecks + shuffle_midway_bells: ShuffleMidwayBells + marios_castle_midway_bell: MariosCastleMidwayBell + shuffle_pipe_traversal: ShufflePipeTraversal + auto_scroll_mode: AutoScrollMode + auto_scroll_chances: AutoScrollChances + difficulty_mode: DifficultyMode + randomize_enemies: RandomizeEnemies + randomize_platforms: RandomizePlatforms + randomize_music: RandomizeMusic + energy_link: EnergyLink diff --git a/worlds/marioland2/rom.py b/worlds/marioland2/rom.py new file mode 100644 index 000000000000..2a19a9cb8cad --- /dev/null +++ b/worlds/marioland2/rom.py @@ -0,0 +1,146 @@ +import hashlib +import os +import pkgutil + +import Utils + +from worlds.Files import APProcedurePatch, APTokenMixin, APTokenTypes +from settings import get_settings + +from .rom_addresses import rom_addresses +from .sprites import sprite_name_to_id + + +def randomize_music(patch, random): + # overworld + overworld_music_tracks = [0x05, 0x06, 0x0D, 0x0E, 0x10, 0x12, 0x1B, 0x1C, 0x1E] + random.shuffle(overworld_music_tracks) + for i, track in zip([0x3004F, 0x3EA9B, 0x3D186, 0x3D52B, 0x3D401, 0x3D297, 0x3D840, 0x3D694, 0x3D758], + overworld_music_tracks): + patch.write_bytes(i, track) + # levels + for i in range(0x5619, 0x5899, 0x14): + patch.write_bytes(i, random.choice([0x01, 0x0B, 0x11, 0x13, 0x14, 0x17, 0x1D, 0x1F, 0x28])) + + +def generate_output(self, output_directory: str): + + patch = SuperMarioLand2ProcedurePatch(player=self.player, player_name=self.player_name) + + patch.write_file("basepatch.bsdiff4", pkgutil.get_data(__name__, "basepatch.bsdiff4")) + random = self.random + + if self.options.marios_castle_midway_bell: + # Remove Question Mark Block + patch.write_bytes(0x4F012, 0x5D) + # Fix level pointer to read midway bell flag + patch.write_bytes(0x3E569, 0x18) + patch.write_bytes(0x3E56A, 0x18) + # Position and screen coordinates + patch.write_bytes(0x383B, [0xD4, 0x01, 0x4D, 0x0A, 0xC0, 0x01, 0x50, 0x0A]) + + if self.options.coinsanity: + # Add platform to return to start of Pumpkin Zone Secret Course 1 + patch.write_bytes(0x258B6, 0x3B) + patch.write_bytes(0x258F8, 0x7a) + patch.write_bytes(0x2594D, 0x67) + patch.write_bytes(0x259A8, 0x68) + patch.write_bytes(0x259A9, 0x60) + + i = 0xe077 + for level, sprites in self.sprite_data.items(): + for sprite_data in sprites: + sprite_id = sprite_name_to_id[sprite_data["sprite"]] + data = [((sprite_id & 0b01000000) >> 2) | ((sprite_id & 0b00111000) << 2) | sprite_data["screen"], + ((sprite_id & 0b00000111) << 5) | sprite_data["x"], + sprite_data["misc"] | sprite_data["y"]] + patch.write_bytes(i, data) + i += 3 + patch.write_bytes(i, 255) + i += 1 + + if self.options.randomize_music: + randomize_music(patch, random) + + if self.options.shuffle_golden_coins: + patch.write_bytes(rom_addresses["Coin_Shuffle"], 0x40) + if self.options.shuffle_midway_bells: + patch.write_bytes(rom_addresses["Disable_Midway_Bell"], 0xC9) + + if self.options.coinsanity: + for section in ("A", "B"): + for i in range(0, 30): + patch.write_bytes(rom_addresses[f"Coinsanity_{section}"] + i, 0x00) + + star_count = max(len([loc for loc in self.multiworld.get_filled_locations() if loc.item.player == self.player + and loc.item.name == "Super Star Duration Increase"]), 1) + patch.write_bytes(rom_addresses["Star_Count"], star_count // 256) + patch.write_bytes(rom_addresses["Star_Count"] + 1, star_count - (star_count // 256)) + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + patch.write_bytes(rom_addresses["Coins_Required"], self.coin_fragments_required // 256) + patch.write_bytes(rom_addresses["Coins_Required"] + 1, self.coin_fragments_required % 256) + patch.write_bytes(rom_addresses["Required_Golden_Coins"], 6) + else: + patch.write_bytes(rom_addresses["Coins_Required"] + 1, self.options.required_golden_coins.value) + patch.write_bytes(rom_addresses["Required_Golden_Coins"], self.options.required_golden_coins.value) + patch.write_bytes(rom_addresses["Midway_Bells"], self.options.shuffle_midway_bells.value) + patch.write_bytes(rom_addresses["Energy_Link"], self.options.energy_link.value) + patch.write_bytes(rom_addresses["Difficulty_Mode"], self.options.difficulty_mode.value) + patch.write_bytes(rom_addresses["Coin_Mode"], self.options.shuffle_golden_coins.value) + + for level, i in enumerate(self.auto_scroll_levels): + # We set 0 if no auto scroll or auto scroll trap, so it defaults to no auto scroll. 1 if always or cancel items. + patch.write_bytes(rom_addresses["Auto_Scroll_Levels"] + level, max(0, i - 1)) + patch.write_bytes(rom_addresses["Auto_Scroll_Levels_B"] + level, i) + + if self.options.energy_link: + # start with 1 life if Energy Link is on so that you don't deposit lives at the start of the game. + patch.write_bytes(rom_addresses["Starting_Lives"], 1) + + rom_name = bytearray(f'AP{Utils.__version__.replace(".", "")[0:3]}_{self.player}_{self.multiworld.seed:11}\0', + 'utf8')[:21] + rom_name.extend([0] * (21 - len(rom_name))) + patch.write_bytes(0x77777, rom_name) + patch.write_file("tokens.bin", patch.get_token_binary()) + patch.write(os.path.join(output_directory, + f"{self.multiworld.get_out_file_name_base(self.player)}{patch.patch_file_ending}")) + + +class SuperMarioLand2ProcedurePatch(APProcedurePatch, APTokenMixin): + hash = "a8413347d5df8c9d14f97f0330d67bce" + patch_file_ending = ".apsml2" + game = "Super Mario Land 2" + result_file_ending = ".gb" + procedure = [ + ("apply_bsdiff4", ["basepatch.bsdiff4"]), + ("apply_tokens", ["tokens.bin"]), + ] + + @classmethod + def get_source_data(cls) -> bytes: + return get_base_rom_bytes() + + def write_bytes(self, offset, value): + if isinstance(value, int): + value = [value] + self.write_token(APTokenTypes.WRITE, offset, bytes(value)) + + +def get_base_rom_bytes(): + file_name = get_base_rom_path() + with open(file_name, "rb") as file: + base_rom_bytes = bytes(file.read()) + + basemd5 = hashlib.md5() + basemd5.update(base_rom_bytes) + if SuperMarioLand2ProcedurePatch.hash != basemd5.hexdigest(): + raise Exception("Supplied Base Rom does not match known MD5 for Super Mario Land 1.0. " + "Get the correct game and version, then dump it") + return base_rom_bytes + + +def get_base_rom_path(): + file_name = get_settings()["sml2_options"]["rom_file"] + if not os.path.exists(file_name): + file_name = Utils.user_path(file_name) + return file_name \ No newline at end of file diff --git a/worlds/marioland2/rom_addresses.py b/worlds/marioland2/rom_addresses.py new file mode 100644 index 000000000000..e4b4f69cd71e --- /dev/null +++ b/worlds/marioland2/rom_addresses.py @@ -0,0 +1,39 @@ +rom_addresses = { + "Space_Physics": 0x4e7, + "Pipe_Traversal_A": 0x11a4, + "Pipe_Traversal_SFX_A": 0x11a9, + "Pipe_Traversal_B": 0x11d6, + "Pipe_Traversal_SFX_B": 0x11e7, + "Pipe_Traversal_C": 0x1226, + "Pipe_Traversal_SFX_C": 0x123f, + "Pipe_Traversal_D": 0x1256, + "Pipe_Traversal_SFX_D": 0x125b, + "Enable_Swim": 0x1d17, + "Coinsanity_B": 0x1d86, + "Auto_Scroll_Levels": 0x1f71, + "Starting_Lives": 0x2920, + "Get_Hurt_To_Big_Mario": 0x31c7, + "Get_Mushroom_A": 0x345c, + "Get_Fire_Flower_A": 0x346d, + "Get_Carrot_A": 0x347e, + "Invincibility_Star_A": 0x349e, + "Invincibility_Star_B": 0x34a3, + "Enable_Bubble": 0x34e5, + "Coinsanity_A": 0x591f, + "Coin_Shuffle": 0x304ce, + "Required_Golden_Coins": 0x306e9, + "Disable_Midway_Bell": 0x3ef1e, + "Get_Carrot_C": 0x6092f, + "Get_Mushroom_C": 0x60930, + "Get_Fire_Flower_C": 0x60933, + "Get_Mushroom_B": 0x60ddb, + "Get_Carrot_B": 0x60de7, + "Get_Fire_Flower_B": 0x60df3, + "Coins_Required": 0x80139, + "Difficulty_Mode": 0x8013b, + "Star_Count": 0x8013c, + "Midway_Bells": 0x8013e, + "Energy_Link": 0x8013f, + "Coin_Mode": 0x80140, + "Auto_Scroll_Levels_B": 0x80141, +} diff --git a/worlds/marioland2/sprite_randomizer.py b/worlds/marioland2/sprite_randomizer.py new file mode 100644 index 000000000000..8440da2b37f6 --- /dev/null +++ b/worlds/marioland2/sprite_randomizer.py @@ -0,0 +1,131 @@ +# Based on SML2R enemy and platform randomizer +# # https://github.com/slashinfty/sml2r-node/blob/862128c73d336d6cbfbf6290c09f3eff103688e8/src/index.ts#L284 + +def randomize_enemies(sprite_data, random): + for level, level_sprite_data in sprite_data.items(): + shuffle = () + if level in ("Mushroom Zone", "Macro Zone 4"): + shuffle = ("Koopa Troopa", "Goomba", "Paragoomba (Vertical)", "Paragoomba (Diagonal)") + elif level in ("Scenic Course", "Pumpkin Zone Secret Course 1"): + shuffle = ("Goomba", "Paragoomba (Vertical)", "Paragoomba (Diagonal)") + elif level == "Tree Zone 1": + shuffle = ("Money Bag/Bopping Toady", "Ragumo/Aqua Kuribo", "Pencil/Spikey", "Kyotonbo") + elif level == "Tree Zone 2": + shuffle = ("Noko Bombette/Bear", "No 48/Mogyo") + elif level == "Tree Zone 3": + shuffle = ("Battle Beetle", "Be", "Ant") + elif level == "Tree Zone 5": + shuffle = ("Paragoomba (Diagonal)", "Dondon", "Paragoomba (Vertical)") + elif level == "Pumpkin Zone 2": + shuffle = ("Boo/Bomubomu", "Kyororo", "Honebon/F Boy", "Karakara", "Star (Vertical)/Blurp (Horizontal)", + "Star (Horizontal)/Blurp (Vertical)") + elif level == "Pumpkin Zone 3": + shuffle = ("Boo/Bomubomu", "Unibo/Terekuribo") + elif level == "Mario Zone 1": + shuffle = ("Koopa Troopa", "Neiji/Buichi", "Tatenoko") + elif level == "Mario Zone 2": + shuffle = ("Paragoomba (Diagonal)", "Goomba", "Paragoomba (Vertical)", "Noko Bombette/Bear", + "Boo/Bomubomu") + elif level == "Turtle Zone 1": + shuffle = ("Horizontal Blurp", "Shark", "Cheep Cheep (Vertical)", "Paragoomba (Diagonal)", "Goomba", + "Spiny Cheep Cheep", "Paragoomba (Vertical)", + "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)") + elif level == "Hippo Zone": + shuffle = ("Horizontal Blurp", "Dondon", "Unibo/Terekuribo", "Toriuo") + elif level == "Space Zone 2": + shuffle = ("Tosenbo/Pikku", "Star (Vertical)/Blurp (Horizontal)", "Star (Horizontal)/Blurp (Vertical)") + elif level == "Macro Zone 1": + shuffle = ("Kyotonbo", "Goronto", "Dokanto", "Chikunto") + elif level == "Macro Zone 2": + shuffle = ("Cheep Cheep (Vertical)", "Battle Beetle", "Be", + "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "Ant") + elif level == "Macro Zone 3": + shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Goomba", "Be", "Paragoomba (Vertical)", + "Honebon/F Boy") + elif level == "Pumpkin Zone Secret Course 2": + shuffle = ("Koopa Troopa", "Goomba") + for sprite in level_sprite_data: + if level == "Pumpkin Zone 1": + if sprite["sprite"] == "Falling Spike": + shuffle = ("Boo/Bomubomu", "Falling Spike", "Kurokyura/Jack-in-the-Box", "Masked Ghoul/Bullet Bill") + elif sprite["sprite"] == "Falling Spike on Chain": + shuffle = ("Boo/Bomubomu", "Falling Spike on Chain", "Kurokyura/Jack-in-the-Box", + "Masked Ghoul/Bullet Bill") + else: + shuffle = ("Boo/Bomubomu", "Kurokyura/Jack-in-the-Box", "Masked Ghoul/Bullet Bill") + elif level == "Pumpkin Zone 4": + if sprite["sprite"] == "Falling Spike on Chain": + shuffle = ("Boo/Bomubomu", "Falling Spike on Chain", "Masked Ghoul/Bullet Bill", "Rerere/Poro", + "Tosenbo/Pikku") + else: + shuffle = ("Boo/Bomubomu", "Masked Ghoul/Bullet Bill", "Rerere/Poro", "Tosenbo/Pikku") + elif level == "Mario Zone 3": + if sprite["sprite"] == "Claw Grabber": + shuffle = ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto", "Claw Grabber", + "Masked Ghoul/Bullet Bill") + elif sprite["sprite"] in ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto"): + shuffle = ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto", "Masked Ghoul/Bullet Bill") + else: + shuffle = () + elif level == "Mario Zone 4": + if sprite["sprite"] == "Spinning Spike/Tamara": + shuffle = ("Goomba", "Spinning Spike/Tamara", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill") + elif sprite["sprite"] == "Moving Saw (Floor)": + shuffle = ("Goomba", "Moving Saw (Floor)", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill") + else: + shuffle = ("Goomba", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill") + elif level == "Turtle Zone 3": + if sprite["sprite"] == "Pencil/Spikey": + shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Ragumo/Aqua Kuribo", "Pencil/Spikey", + "Paragoomba (Vertical)", "Honebon/F Boy") + else: + shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Ragumo/Aqua Kuribo", + "Paragoomba (Vertical)", "Honebon/F Boy") + elif level == "Space Zone 1": + if sprite["sprite"] == "Boo/Bomubomu": + shuffle = ("Boo/Bomubomu", "No 48/Mogyo") + else: + shuffle = ("Boo/Bomubomu", "No 48/Mogyo", "Rerere/Poro") + elif level == "Mario's Castle": + if sprite["sprite"] in ("Fire Pakkun Zo (Large)", "Fire Pakkun Zo (Left)"): + shuffle = ("Fire Pakkun Zo (Large)", "Fire Pakkun Zo (Left)") + else: + shuffle = ("Spike Ball (Large)", "Spike Ball (Small)") + elif level == "Tree Zone 4": + # Deviation from SML2R: No Buichis placed into non-Buichi locations, as they can place under the + # underground question mark blocks. Potentially could make a list of which ones are allowed to become + # Buichis? + if sprite["sprite"] in ("Runaway Heart Block/Bibi", "Piranha Plant (Downward)/Grubby", + "Spinning Platform (Horizontal)/Skeleton Bee", + "Spinning Spike (Horizontal)/Unera"): + shuffle = ("Runaway Heart Block/Bibi", "Piranha Plant (Downward)/Grubby", + "Spinning Platform (Horizontal)/Skeleton Bee", "Spinning Spike (Horizontal)/Unera") + elif sprite["sprite"] == "Neiji/Buichi": + shuffle = ("Runaway Heart Block/Bibi", "Neiji/Buichi", "Piranha Plant (Downward)/Grubby", + "Spinning Platform (Horizontal)/Skeleton Bee", "Spinning Spike (Horizontal)/Unera") + else: + shuffle = () + if sprite["sprite"] in ("Piranha Plant", "Fire Piranha Plant"): + if level not in ("Pumpkin Zone 2", "Pumpkin Zone 4", "Macro Zone 3"): + shuffle = ("Piranha Plant", "Fire Piranha Plant") + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) + elif level == "Mario's Castle" and sprite["sprite"] == "Karamenbo" and not random.randint(0, 9): + sprite["y"] += 1 + + +def randomize_platforms(sprite_data, random): + shuffle = ("Moving Platform (Small, Vertical)", "Moving Platform (Large, Vertical)", + "Moving Platform (Small, Horizontal)", "Moving Platform (Large, Horizontal)", + "Moving Platform (Large, Diagonal)", "Falling Platform") + for sprite in sprite_data["Tree Zone 3"]: + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) + shuffle = ("Cloud Platform (Horizontal)", "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)") + for sprite in sprite_data["Tree Zone 5"]: + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) + shuffle = ("Falling Bone Platform", "Rising Bone Platform", "Skull Platform") + for sprite in sprite_data["Mario's Castle"]: + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) diff --git a/worlds/marioland2/sprites.py b/worlds/marioland2/sprites.py new file mode 100644 index 000000000000..33a14731295e --- /dev/null +++ b/worlds/marioland2/sprites.py @@ -0,0 +1,1016 @@ +sprite_name_to_id = { + "Ant": 93, "Ragumo/Aqua Kuribo": 32, "Battle Beetle": 51, "Be": 52, "Noko Bombette/Bear": 68, + "Runaway Heart Block/Bibi": 53, "Star (Vertical)/Blurp (Horizontal)": 94, + "Star (Horizontal)/Blurp (Vertical)": 95, "Boo/Bomubomu": 77, + "Money Bag/Bopping Toady": 31, "Neiji/Buichi": 64, "Masked Ghoul/Bullet Bill": 83, + "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)": 61, "Cheep Cheep (Vertical)": 7, + "Chikunto": 39, "Dokanto": 37, "Dondon": 57, "Honebon/F Boy": 85, "Fire Pakkun Zo (Large)": 104, + "Fire Pakkun Zo (Left)": 105, "Fire Pakkun Zo (Right)": 106, "Fire Piranha Plant": 13, "Floating Face": 100, + "Genkottsu (1.5 Tiles)": 99, "Genkottsu (2 Tiles)": 98, "Goomba": 9, "Goronto": 35, + "Piranha Plant (Downward)/Grubby": 66, "Kurokyura/Jack-in-the-Box": 81, + "Karakara": 86, "Karamenbo": 102, "Kiddokatto": 72, "Koopa Troopa": 1, "Kyororo": 84, "Kyotonbo": 34, + "No 48/Mogyo": 88, "Paragoomba (Diagonal)": 8, "Paragoomba (Vertical)": 58, "Tosenbo/Pikku": 92, + "Piranha Plant": 12, "Rerere/Poro": 90, "Shark": 6, + "Spinning Platform (Horizontal)/Skeleton Bee": 62, "Pencil/Spikey": 33, + "Spiny Cheep Cheep": 11, "Spinning Spike/Tamara": 67, "Tatenoko": 75, "Unibo/Terekuribo": 87, + "Toriuo": 91, "Spinning Spike (Horizontal)/Unera": 65, "Claw Grabber": 73, + "Diagonal Ball on Chain": 71, "Falling Spike": 78, "Falling Spike on Chain": 79, "Spinning Spike (Vertical)": 80, + "Spike Ball (Large)": 110, "Spike Ball (Small)": 111, "Moving Saw (Ceiling)": 74, "Moving Saw (Floor)": 76, + "Moving Platform (Small, Vertical)": 40, "Moving Platform (Large, Vertical)": 41, + "Moving Platform (Small, Horizontal)": 42, "Moving Platform (Large, Horizontal)": 43, + "Moving Platform (Large, Diagonal)": 45, "Falling Platform": 46, "Rising Platform": 47, + "Rotating Platform (Small)": 48, "Owl Platform (Vertical)": 55, "Cloud Platform (Horizontal)": 56, + "Spinning Platform (Vertical)": 63, "Falling Bone Platform": 96, "Rising Bone Platform": 97, "Skull Platform": 103, + "Propeller Platform": 107, "Heart": 15, "Mushroom": 27, "Flower": 28, "Carrot": 29, "Star": 30, + "Mushroom Block": 17, "Flower Block": 18, "Carrot Block": 19, "Star Block": 20, "Heart Block": 21, + "Money Bag Block": 25, "Bubble": 24, "Midway Bell": 23, "Bonus Bell": 22, "Horizontal Blurp": 5, + "Big Diagonal Moving Platform": 44} + +sprite_id_to_name = {a: b for b, a in sprite_name_to_id.items()} + +level_sprites = { + "Mushroom Zone": [ + {"screen": 1, "sprite": "Goomba", "x": 27, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 9, "y": 24, "misc": 32}, + {"screen": 2, "sprite": "Mushroom Block", "x": 21, "y": 23, "misc": 32}, + {"screen": 4, "sprite": "Goomba", "x": 7, "y": 26, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 11, "y": 18, "misc": 32}, + {"screen": 6, "sprite": "Paragoomba (Diagonal)", "x": 19, "y": 22, "misc": 160}, + {"screen": 8, "sprite": "Piranha Plant", "x": 6, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Piranha Plant", "x": 22, "y": 30, "misc": 160}, + {"screen": 9, "sprite": "Heart Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 9, "sprite": "Star Block", "x": 17, "y": 23, "misc": 32}, + {"screen": 10, "sprite": "Goomba", "x": 5, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Goomba", "x": 17, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Midway Bell", "x": 29, "y": 20, "misc": 32}, + {"screen": 11, "sprite": "Goomba", "x": 1, "y": 30, "misc": 32}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 13, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 20, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Flower Block", "x": 25, "y": 23, "misc": 32}, + {"screen": 12, "sprite": "Heart", "x": 15, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Goomba", "x": 3, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Piranha Plant", "x": 16, "y": 30, "misc": 32}, + {"screen": 14, "sprite": "Goomba", "x": 11, "y": 22, "misc": 32}, + {"screen": 14, "sprite": "Koopa Troopa", "x": 20, "y": 22, "misc": 160}, + {"screen": 15, "sprite": "Bonus Bell", "x": 21, "y": 13, "misc": 32}], + "Tree Zone 1": [ + {"screen": 1, "sprite": "Star Block", "x": 17, "y": 21, "misc": 32}, + {"screen": 2, "sprite": "Ragumo/Aqua Kuribo", "x": 5, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Heart", "x": 19, "y": 30, "misc": 0}, + {"screen": 2, "sprite": "Ragumo/Aqua Kuribo", "x": 23, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Money Bag/Bopping Toady", "x": 1, "y": 30, "misc": 160}, + {"screen": 3, "sprite": "Money Bag/Bopping Toady", "x": 20, "y": 24, "misc": 160}, + {"screen": 4, "sprite": "Money Bag/Bopping Toady", "x": 9, "y": 24, "misc": 32}, + {"screen": 4, "sprite": "Heart", "x": 13, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Money Bag/Bopping Toady", "x": 31, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Pencil/Spikey", "x": 3, "y": 24, "misc": 160}, + {"screen": 5, "sprite": "Kyotonbo", "x": 21, "y": 22, "misc": 160}, + {"screen": 6, "sprite": "Money Bag/Bopping Toady", "x": 11, "y": 24, "misc": 160}, + {"screen": 6, "sprite": "Money Bag/Bopping Toady", "x": 23, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Pencil/Spikey", "x": 28, "y": 24, "misc": 160}, + {"screen": 7, "sprite": "Heart Block", "x": 29, "y": 5, "misc": 32}, + {"screen": 8, "sprite": "Midway Bell", "x": 13, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Money Bag/Bopping Toady", "x": 29, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Ragumo/Aqua Kuribo", "x": 10, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Kyotonbo", "x": 15, "y": 10, "misc": 160}, + {"screen": 9, "sprite": "Mushroom Block", "x": 17, "y": 23, "misc": 32}, + {"screen": 10, "sprite": "Kyotonbo", "x": 3, "y": 10, "misc": 160}, + {"screen": 10, "sprite": "Pencil/Spikey", "x": 19, "y": 24, "misc": 160}, + {"screen": 10, "sprite": "Star Block", "x": 25, "y": 21, "misc": 32}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 7, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 27, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 31, "y": 24, "misc": 32}, + {"screen": 12, "sprite": "Money Bag/Bopping Toady", "x": 15, "y": 24, "misc": 32}, + {"screen": 13, "sprite": "Ragumo/Aqua Kuribo", "x": 3, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Money Bag/Bopping Toady", "x": 23, "y": 24, "misc": 32}, + {"screen": 14, "sprite": "Money Bag/Bopping Toady", "x": 15, "y": 30, "misc": 160}, + {"screen": 14, "sprite": "Kyotonbo", "x": 31, "y": 24, "misc": 160}, + {"screen": 15, "sprite": "Bonus Bell", "x": 19, "y": 13, "misc": 32}, + {"screen": 15, "sprite": "Heart Block", "x": 25, "y": 15, "misc": 32}], + "Tree Zone 2": [ + {"screen": 2, "sprite": "No 48/Mogyo", "x": 9, "y": 30, "misc": 0}, + {"screen": 2, "sprite": "Mushroom Block", "x": 23, "y": 19, "misc": 0}, + {"screen": 2, "sprite": "No 48/Mogyo", "x": 27, "y": 30, "misc": 0}, + {"screen": 3, "sprite": "Mushroom Block", "x": 7, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "No 48/Mogyo", "x": 15, "y": 28, "misc": 160}, + {"screen": 3, "sprite": "Heart Block", "x": 27, "y": 17, "misc": 0}, + {"screen": 4, "sprite": "No 48/Mogyo", "x": 3, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "No 48/Mogyo", "x": 17, "y": 28, "misc": 160}, + {"screen": 5, "sprite": "Noko Bombette/Bear", "x": 1, "y": 30, "misc": 128}, + {"screen": 5, "sprite": "No 48/Mogyo", "x": 7, "y": 28, "misc": 32}, + {"screen": 6, "sprite": "Falling Platform", "x": 22, "y": 22, "misc": 0}, + {"screen": 7, "sprite": "Midway Bell", "x": 3, "y": 14, "misc": 0}, + {"screen": 7, "sprite": "No 48/Mogyo", "x": 15, "y": 30, "misc": 0}, + {"screen": 7, "sprite": "No 48/Mogyo", "x": 17, "y": 8, "misc": 32}, + {"screen": 7, "sprite": "Money Bag Block", "x": 19, "y": 19, "misc": 32}, + {"screen": 7, "sprite": "No 48/Mogyo", "x": 19, "y": 0, "misc": 32}, + {"screen": 8, "sprite": "Mushroom Block", "x": 5, "y": 13, "misc": 0}, + {"screen": 8, "sprite": "Noko Bombette/Bear", "x": 11, "y": 24, "misc": 0}, + {"screen": 8, "sprite": "Carrot Block", "x": 17, "y": 21, "misc": 64}, + {"screen": 9, "sprite": "Noko Bombette/Bear", "x": 3, "y": 30, "misc": 64}, + {"screen": 9, "sprite": "Noko Bombette/Bear", "x": 23, "y": 30, "misc": 64}, + {"screen": 10, "sprite": "Noko Bombette/Bear", "x": 11, "y": 30, "misc": 64}, + {"screen": 10, "sprite": "Noko Bombette/Bear", "x": 31, "y": 30, "misc": 64}, + {"screen": 11, "sprite": "Money Bag Block", "x": 5, "y": 19, "misc": 0}, + {"screen": 11, "sprite": "Mushroom Block", "x": 13, "y": 5, "misc": 0}, + {"screen": 11, "sprite": "Heart", "x": 19, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 3, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 5, "y": 16, "misc": 0}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 13, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Heart", "x": 27, "y": 8, "misc": 32}, + {"screen": 14, "sprite": "Bonus Bell", "x": 21, "y": 15, "misc": 32}], + "Tree Zone 4": [ + {"screen": 1, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 11, "y": 26, "misc": 160}, + {"screen": 1, "sprite": "Runaway Heart Block/Bibi", "x": 20, "y": 24, "misc": 0}, + {"screen": 1, "sprite": "Flower Block", "x": 25, "y": 21, "misc": 32}, + {"screen": 2, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 16, "y": 24, "misc": 128}, + {"screen": 3, "sprite": "Neiji/Buichi", "x": 18, "y": 18, "misc": 0}, + {"screen": 3, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 28, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Neiji/Buichi", "x": 4, "y": 18, "misc": 0}, + {"screen": 4, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 12, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Neiji/Buichi", "x": 22, "y": 18, "misc": 0}, + {"screen": 4, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 28, "y": 30, "misc": 0}, + {"screen": 5, "sprite": "Neiji/Buichi", "x": 8, "y": 18, "misc": 128}, + {"screen": 6, "sprite": "Runaway Heart Block/Bibi", "x": 12, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 13, "y": 12, "misc": 160}, + {"screen": 6, "sprite": "Mushroom Block", "x": 19, "y": 17, "misc": 32}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 23, "y": 28, "misc": 128}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 25, "y": 18, "misc": 160}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 31, "y": 24, "misc": 160}, + {"screen": 7, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 2, "y": 24, "misc": 0}, + {"screen": 7, "sprite": "Runaway Heart Block/Bibi", "x": 28, "y": 24, "misc": 128}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 1, "y": 12, "misc": 32}, + {"screen": 8, "sprite": "Piranha Plant (Downward)/Grubby", "x": 5, "y": 28, "misc": 0}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 5, "y": 18, "misc": 32}, + {"screen": 8, "sprite": "Runaway Heart Block/Bibi", "x": 14, "y": 24, "misc": 0}, + {"screen": 8, "sprite": "Star Block", "x": 17, "y": 11, "misc": 32}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 19, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Star Block", "x": 17, "y": 19, "misc": 0}, + {"screen": 9, "sprite": "Piranha Plant (Downward)/Grubby", "x": 21, "y": 20, "misc": 0}, + {"screen": 9, "sprite": "Spinning Spike/Tamara", "x": 23, "y": 27, "misc": 0}, + {"screen": 10, "sprite": "Midway Bell", "x": 0, "y": 18, "misc": 0}, + {"screen": 10, "sprite": "Spinning Spike/Tamara", "x": 5, "y": 27, "misc": 0}, + {"screen": 10, "sprite": "Piranha Plant (Downward)/Grubby", "x": 11, "y": 20, "misc": 0}, + {"screen": 10, "sprite": "Spinning Spike/Tamara", "x": 17, "y": 27, "misc": 0}, + {"screen": 10, "sprite": "Mushroom Block", "x": 23, "y": 19, "misc": 0}, + {"screen": 12, "sprite": "Runaway Heart Block/Bibi", "x": 2, "y": 24, "misc": 32}, + {"screen": 12, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 28, "y": 24, "misc": 32}, + {"screen": 13, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 32}], + "Tree Zone 3": [ + {"screen": 0, "sprite": "Moving Platform (Large, Vertical)", "x": 19, "y": 10, "misc": 32}, + {"screen": 0, "sprite": "Carrot Block", "x": 25, "y": 25, "misc": 0}, + {"screen": 0, "sprite": "Ant", "x": 28, "y": 18, "misc": 32}, + {"screen": 1, "sprite": "Ant", "x": 0, "y": 22, "misc": 64}, + {"screen": 1, "sprite": "Battle Beetle", "x": 10, "y": 24, "misc": 64}, + {"screen": 1, "sprite": "Moving Platform (Large, Diagonal)", "x": 11, "y": 22, "misc": 32}, + {"screen": 1, "sprite": "Fire Piranha Plant", "x": 18, "y": 20, "misc": 128}, + {"screen": 1, "sprite": "Cheep Cheep (Vertical)", "x": 18, "y": 21, "misc": 0}, + {"screen": 1, "sprite": "Mushroom Block", "x": 21, "y": 15, "misc": 64}, + {"screen": 1, "sprite": "Heart Block", "x": 21, "y": 7, "misc": 64}, + {"screen": 1, "sprite": "Be", "x": 30, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Piranha Plant", "x": 4, "y": 24, "misc": 192}, + {"screen": 2, "sprite": "Be", "x": 14, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Fire Piranha Plant", "x": 20, "y": 24, "misc": 192}, + {"screen": 2, "sprite": "Falling Platform", "x": 24, "y": 27, "misc": 0}, + {"screen": 2, "sprite": "Heart Block", "x": 25, "y": 19, "misc": 0}, + {"screen": 3, "sprite": "Falling Platform", "x": 0, "y": 25, "misc": 0}, + {"screen": 3, "sprite": "Falling Platform", "x": 0, "y": 31, "misc": 32}, + {"screen": 3, "sprite": "Cheep Cheep (Vertical)", "x": 4, "y": 15, "misc": 64}, + {"screen": 3, "sprite": "Falling Platform", "x": 8, "y": 31, "misc": 32}, + {"screen": 3, "sprite": "Ant", "x": 20, "y": 30, "misc": 0}, + {"screen": 3, "sprite": "Heart Block", "x": 27, "y": 17, "misc": 32}, + {"screen": 3, "sprite": "Heart Block", "x": 29, "y": 5, "misc": 32}, + {"screen": 4, "sprite": "Fire Piranha Plant", "x": 4, "y": 22, "misc": 192}, + {"screen": 4, "sprite": "Moving Platform (Small, Horizontal)", "x": 8, "y": 19, "misc": 0}, + {"screen": 4, "sprite": "Ant", "x": 12, "y": 20, "misc": 64}, + {"screen": 4, "sprite": "Moving Platform (Small, Vertical)", "x": 14, "y": 2, "misc": 64}, + {"screen": 4, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 0}, + {"screen": 4, "sprite": "Money Bag Block", "x": 27, "y": 15, "misc": 32}, + {"screen": 4, "sprite": "Heart Block", "x": 27, "y": 17, "misc": 64}], + "Tree Zone 5": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 15, "y": 17, "misc": 64}, + {"screen": 1, "sprite": "Rotating Platform (Small)", "x": 15, "y": 19, "misc": 64}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 2, "y": 26, "misc": 192}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 16, "y": 26, "misc": 192}, + {"screen": 2, "sprite": "Heart Block", "x": 17, "y": 13, "misc": 64}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 26, "y": 26, "misc": 192}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 6, "y": 22, "misc": 192}, + {"screen": 3, "sprite": "Owl Platform (Vertical)", "x": 23, "y": 28, "misc": 64}, + {"screen": 4, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 11, "y": 19, "misc": 64}, + {"screen": 5, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 1, "y": 21, "misc": 64}, + {"screen": 5, "sprite": "Cloud Platform (Horizontal)", "x": 18, "y": 20, "misc": 64}, + {"screen": 5, "sprite": "Cloud Platform (Horizontal)", "x": 26, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Cloud Platform (Horizontal)", "x": 2, "y": 20, "misc": 64}, + {"screen": 6, "sprite": "Midway Bell", "x": 18, "y": 20, "misc": 64}, + {"screen": 6, "sprite": "Heart Block", "x": 23, "y": 21, "misc": 64}, + {"screen": 6, "sprite": "Dondon", "x": 30, "y": 14, "misc": 64}, + {"screen": 7, "sprite": "Carrot Block", "x": 9, "y": 19, "misc": 64}, + {"screen": 7, "sprite": "Rotating Platform (Small)", "x": 9, "y": 21, "misc": 64}, + {"screen": 7, "sprite": "Heart Block", "x": 23, "y": 13, "misc": 64}, + {"screen": 7, "sprite": "Rotating Platform (Small)", "x": 23, "y": 23, "misc": 64}, + {"screen": 8, "sprite": "Mushroom Block", "x": 21, "y": 13, "misc": 64}, + {"screen": 9, "sprite": "Star Block", "x": 5, "y": 7, "misc": 64}, + {"screen": 9, "sprite": "Paragoomba (Vertical)", "x": 7, "y": 14, "misc": 64}, + {"screen": 9, "sprite": "Paragoomba (Vertical)", "x": 27, "y": 20, "misc": 64}, + {"screen": 9, "sprite": "Paragoomba (Vertical)", "x": 31, "y": 16, "misc": 64}, + {"screen": 10, "sprite": "Cloud Platform (Horizontal)", "x": 20, "y": 22, "misc": 64}, + {"screen": 10, "sprite": "Paragoomba (Vertical)", "x": 31, "y": 18, "misc": 64}, + {"screen": 11, "sprite": "Cloud Platform (Horizontal)", "x": 8, "y": 22, "misc": 64}, + {"screen": 11, "sprite": "Paragoomba (Vertical)", "x": 16, "y": 25, "misc": 64}], + "Pumpkin Zone 1": [ + {"screen": 1, "sprite": "Falling Spike on Chain", "x": 9, "y": 14, "misc": 160}, + {"screen": 1, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 0}, + {"screen": 1, "sprite": "Masked Ghoul/Bullet Bill", "x": 19, "y": 30, "misc": 0}, + {"screen": 1, "sprite": "Falling Spike on Chain", "x": 27, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Falling Spike on Chain", "x": 17, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Falling Spike on Chain", "x": 23, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Falling Spike on Chain", "x": 29, "y": 22, "misc": 32}, + {"screen": 3, "sprite": "Masked Ghoul/Bullet Bill", "x": 1, "y": 30, "misc": 160}, + {"screen": 3, "sprite": "Masked Ghoul/Bullet Bill", "x": 21, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 5, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Carrot Block", "x": 17, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 21, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Falling Spike", "x": 27, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Boo/Bomubomu", "x": 1, "y": 28, "misc": 0}, + {"screen": 6, "sprite": "Masked Ghoul/Bullet Bill", "x": 2, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Heart Block", "x": 5, "y": 7, "misc": 0}, + {"screen": 6, "sprite": "Boo/Bomubomu", "x": 9, "y": 28, "misc": 128}, + {"screen": 6, "sprite": "Fire Piranha Plant", "x": 16, "y": 2, "misc": 192}, + {"screen": 6, "sprite": "Midway Bell", "x": 24, "y": 22, "misc": 32}, + {"screen": 7, "sprite": "Falling Spike", "x": 1, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Masked Ghoul/Bullet Bill", "x": 9, "y": 30, "misc": 160}, + {"screen": 7, "sprite": "Falling Spike", "x": 27, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Masked Ghoul/Bullet Bill", "x": 31, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Piranha Plant", "x": 16, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Masked Ghoul/Bullet Bill", "x": 17, "y": 24, "misc": 160}, + {"screen": 8, "sprite": "Fire Piranha Plant", "x": 24, "y": 30, "misc": 160}, + {"screen": 9, "sprite": "Masked Ghoul/Bullet Bill", "x": 7, "y": 22, "misc": 160}, + {"screen": 9, "sprite": "Falling Spike on Chain", "x": 11, "y": 10, "misc": 160}, + {"screen": 9, "sprite": "Piranha Plant", "x": 20, "y": 14, "misc": 32}, + {"screen": 9, "sprite": "Falling Spike on Chain", "x": 23, "y": 30, "misc": 128}, + {"screen": 10, "sprite": "Cheep Cheep (Vertical)", "x": 30, "y": 11, "misc": 160}, + {"screen": 11, "sprite": "Cheep Cheep (Vertical)", "x": 6, "y": 19, "misc": 32}, + {"screen": 11, "sprite": "Kurokyura/Jack-in-the-Box", "x": 11, "y": 30, "misc": 0}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 3, "misc": 32}, + {"screen": 11, "sprite": "Heart Block", "x": 27, "y": 11, "misc": 0}], + "Pumpkin Zone 2": [ + {"screen": 1, "sprite": "Karakara", "x": 7, "y": 30, "misc": 160}, + {"screen": 1, "sprite": "Karakara", "x": 15, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Karakara", "x": 23, "y": 30, "misc": 160}, + {"screen": 2, "sprite": "Piranha Plant", "x": 20, "y": 30, "misc": 160}, + {"screen": 3, "sprite": "Honebon/F Boy", "x": 4, "y": 11, "misc": 160}, + {"screen": 3, "sprite": "Cheep Cheep (Vertical)", "x": 4, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 13, "y": 28, "misc": 192}, + {"screen": 3, "sprite": "Mushroom Block", "x": 17, "y": 21, "misc": 64}, + {"screen": 4, "sprite": "Kyororo", "x": 29, "y": 30, "misc": 160}, + {"screen": 5, "sprite": "Honebon/F Boy", "x": 6, "y": 24, "misc": 32}, + {"screen": 5, "sprite": "Kyororo", "x": 13, "y": 30, "misc": 160}, + {"screen": 5, "sprite": "Kyororo", "x": 29, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Midway Bell", "x": 1, "y": 16, "misc": 32}, + {"screen": 6, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 21, "y": 30, "misc": 192}, + {"screen": 6, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 28, "y": 25, "misc": 64}, + {"screen": 7, "sprite": "Mushroom", "x": 3, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Boo/Bomubomu", "x": 9, "y": 13, "misc": 160}, + {"screen": 7, "sprite": "Boo/Bomubomu", "x": 13, "y": 21, "misc": 160}, + {"screen": 7, "sprite": "Heart", "x": 29, "y": 14, "misc": 32}, + {"screen": 8, "sprite": "Carrot", "x": 7, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Flower", "x": 13, "y": 14, "misc": 32}, + {"screen": 8, "sprite": "Heart", "x": 19, "y": 20, "misc": 32}, + {"screen": 9, "sprite": "Star Block", "x": 1, "y": 13, "misc": 32}, + {"screen": 9, "sprite": "Kyororo", "x": 19, "y": 30, "misc": 64}, + {"screen": 9, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 20, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Kyororo", "x": 21, "y": 16, "misc": 32}, + {"screen": 10, "sprite": "Kyororo", "x": 5, "y": 14, "misc": 32}, + {"screen": 10, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 7, "y": 28, "misc": 32}, + {"screen": 10, "sprite": "Kyororo", "x": 22, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 0, "y": 26, "misc": 192}, + {"screen": 11, "sprite": "Falling Spike", "x": 5, "y": 24, "misc": 64}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 7, "y": 30, "misc": 32}, + {"screen": 11, "sprite": "Kyororo", "x": 10, "y": 16, "misc": 32}, + {"screen": 11, "sprite": "Falling Spike", "x": 15, "y": 24, "misc": 64}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 19, "y": 28, "misc": 192}, + {"screen": 12, "sprite": "Karakara", "x": 9, "y": 30, "misc": 32}, + {"screen": 12, "sprite": "Karakara", "x": 17, "y": 30, "misc": 32}, + {"screen": 12, "sprite": "Karakara", "x": 25, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Karakara", "x": 19, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Bonus Bell", "x": 21, "y": 11, "misc": 32}], + "Pumpkin Zone 3": [ + {"screen": 1, "sprite": "Unibo/Terekuribo", "x": 21, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Unibo/Terekuribo", "x": 21, "y": 20, "misc": 160}, + {"screen": 3, "sprite": "Carrot Block", "x": 9, "y": 7, "misc": 32}, + {"screen": 3, "sprite": "Boo/Bomubomu", "x": 19, "y": 23, "misc": 32}, + {"screen": 4, "sprite": "Boo/Bomubomu", "x": 1, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Boo/Bomubomu", "x": 19, "y": 14, "misc": 160}, + {"screen": 6, "sprite": "Moving Platform (Small, Horizontal)", "x": 0, "y": 8, "misc": 64}, + {"screen": 6, "sprite": "Moving Platform (Small, Horizontal)", "x": 0, "y": 14, "misc": 64}, + {"screen": 6, "sprite": "Flower Block", "x": 17, "y": 19, "misc": 64}, + {"screen": 7, "sprite": "Unibo/Terekuribo", "x": 1, "y": 26, "misc": 32}, + {"screen": 7, "sprite": "Boo/Bomubomu", "x": 17, "y": 18, "misc": 64}, + {"screen": 8, "sprite": "Fire Piranha Plant", "x": 16, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Heart Block", "x": 23, "y": 5, "misc": 64}, + {"screen": 8, "sprite": "Flower Block", "x": 25, "y": 17, "misc": 64}, + {"screen": 9, "sprite": "Midway Bell", "x": 5, "y": 22, "misc": 32}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 19, "y": 22, "misc": 160}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 2, "y": 27, "misc": 32}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 25, "y": 14, "misc": 160}, + {"screen": 11, "sprite": "Carrot Block", "x": 7, "y": 13, "misc": 32}, + {"screen": 11, "sprite": "Boo/Bomubomu", "x": 23, "y": 18, "misc": 160}, + {"screen": 13, "sprite": "Boo/Bomubomu", "x": 3, "y": 28, "misc": 32}, + {"screen": 13, "sprite": "Boo/Bomubomu", "x": 12, "y": 5, "misc": 64}, + {"screen": 14, "sprite": "Unibo/Terekuribo", "x": 3, "y": 28, "misc": 160}, + {"screen": 14, "sprite": "Boo/Bomubomu", "x": 5, "y": 18, "misc": 192}, + {"screen": 14, "sprite": "Unibo/Terekuribo", "x": 14, "y": 24, "misc": 32}, + {"screen": 14, "sprite": "Bonus Bell", "x": 21, "y": 13, "misc": 64}], + "Pumpkin Zone 4": [ + {"screen": 1, "sprite": "Tosenbo/Pikku", "x": 19, "y": 30, "misc": 160}, + {"screen": 1, "sprite": "Piranha Plant", "x": 24, "y": 0, "misc": 64}, + {"screen": 2, "sprite": "Boo/Bomubomu", "x": 9, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Boo/Bomubomu", "x": 24, "y": 21, "misc": 160}, + {"screen": 3, "sprite": "Boo/Bomubomu", "x": 23, "y": 26, "misc": 160}, + {"screen": 3, "sprite": "Falling Spike on Chain", "x": 29, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Falling Spike on Chain", "x": 3, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Falling Spike on Chain", "x": 9, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Tosenbo/Pikku", "x": 28, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Mushroom Block", "x": 7, "y": 11, "misc": 64}, + {"screen": 5, "sprite": "Boo/Bomubomu", "x": 17, "y": 26, "misc": 192}, + {"screen": 5, "sprite": "Heart Block", "x": 29, "y": 15, "misc": 64}, + {"screen": 6, "sprite": "Carrot Block", "x": 17, "y": 13, "misc": 32}, + {"screen": 7, "sprite": "Midway Bell", "x": 15, "y": 24, "misc": 32}, + {"screen": 8, "sprite": "Falling Spike on Chain", "x": 3, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Rerere/Poro", "x": 10, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Falling Spike on Chain", "x": 17, "y": 22, "misc": 160}, + {"screen": 8, "sprite": "Falling Spike on Chain", "x": 27, "y": 22, "misc": 160}, + {"screen": 9, "sprite": "Rerere/Poro", "x": 3, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Falling Spike on Chain", "x": 9, "y": 22, "misc": 160}, + {"screen": 10, "sprite": "Masked Ghoul/Bullet Bill", "x": 19, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Masked Ghoul/Bullet Bill", "x": 25, "y": 26, "misc": 160}, + {"screen": 10, "sprite": "Masked Ghoul/Bullet Bill", "x": 31, "y": 22, "misc": 32}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 5, "y": 18, "misc": 32}, + {"screen": 12, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 16, "misc": 192}, + {"screen": 12, "sprite": "Masked Ghoul/Bullet Bill", "x": 25, "y": 16, "misc": 192}, + {"screen": 13, "sprite": "Masked Ghoul/Bullet Bill", "x": 6, "y": 16, "misc": 192}, + {"screen": 13, "sprite": "Flower Block", "x": 13, "y": 23, "misc": 32}, + {"screen": 13, "sprite": "Masked Ghoul/Bullet Bill", "x": 18, "y": 16, "misc": 192}, + {"screen": 13, "sprite": "Money Bag Block", "x": 25, "y": 23, "misc": 32}, + {"screen": 14, "sprite": "Boo/Bomubomu", "x": 13, "y": 30, "misc": 160}], + "Mario Zone 1": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 5, "y": 23, "misc": 64}, + {"screen": 1, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 7, "y": 9, "misc": 64}, + {"screen": 1, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 13, "y": 13, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 13, "y": 30, "misc": 192}, + {"screen": 1, "sprite": "Spinning Spike (Vertical)", "x": 19, "y": 22, "misc": 0}, + {"screen": 1, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 19, "y": 15, "misc": 32}, + {"screen": 2, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 13, "y": 27, "misc": 64}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 25, "y": 18, "misc": 64}, + {"screen": 3, "sprite": "Spinning Platform (Vertical)", "x": 1, "y": 18, "misc": 64}, + {"screen": 3, "sprite": "Spinning Platform (Vertical)", "x": 7, "y": 18, "misc": 64}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 19, "y": 26, "misc": 192}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 31, "y": 14, "misc": 192}, + {"screen": 4, "sprite": "Spinning Platform (Vertical)", "x": 23, "y": 20, "misc": 64}, + {"screen": 4, "sprite": "Tatenoko", "x": 26, "y": 15, "misc": 192}, + {"screen": 4, "sprite": "Spinning Platform (Vertical)", "x": 29, "y": 20, "misc": 64}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 11, "y": 16, "misc": 192}, + {"screen": 5, "sprite": "Spinning Platform (Vertical)", "x": 19, "y": 22, "misc": 64}, + {"screen": 5, "sprite": "Spinning Platform (Vertical)", "x": 23, "y": 22, "misc": 64}, + {"screen": 6, "sprite": "Carrot Block", "x": 5, "y": 11, "misc": 64}, + {"screen": 6, "sprite": "Midway Bell", "x": 16, "y": 12, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 19, "y": 20, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 21, "y": 24, "misc": 192}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 12, "y": 30, "misc": 64}, + {"screen": 8, "sprite": "Heart Block", "x": 13, "y": 17, "misc": 64}, + {"screen": 9, "sprite": "Mushroom Block", "x": 3, "y": 19, "misc": 64}, + {"screen": 9, "sprite": "Neiji/Buichi", "x": 3, "y": 0, "misc": 96}, + {"screen": 9, "sprite": "Neiji/Buichi", "x": 11, "y": 0, "misc": 224}, + {"screen": 9, "sprite": "Neiji/Buichi", "x": 19, "y": 0, "misc": 224}, + {"screen": 9, "sprite": "Heart Block", "x": 27, "y": 7, "misc": 32}, + {"screen": 9, "sprite": "Spinning Platform (Vertical)", "x": 29, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Tatenoko", "x": 4, "y": 13, "misc": 32}, + {"screen": 10, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 7, "y": 21, "misc": 64}, + {"screen": 10, "sprite": "Carrot Block", "x": 9, "y": 7, "misc": 32}, + {"screen": 10, "sprite": "Spinning Platform (Vertical)", "x": 9, "y": 18, "misc": 32}, + {"screen": 10, "sprite": "Bonus Bell", "x": 19, "y": 17, "misc": 64}], + "Mario Zone 2": [ + {"screen": 1, "sprite": "Boo/Bomubomu", "x": 9, "y": 28, "misc": 32}, + {"screen": 1, "sprite": "Boo/Bomubomu", "x": 31, "y": 22, "misc": 160}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 6, "y": 18, "misc": 160}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 15, "y": 21, "misc": 160}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 3, "y": 20, "misc": 160}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 12, "y": 18, "misc": 160}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 28, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Mushroom Block", "x": 3, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Heart", "x": 8, "y": 28, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 9, "y": 20, "misc": 192}, + {"screen": 5, "sprite": "Carrot Block", "x": 17, "y": 11, "misc": 64}, + {"screen": 5, "sprite": "Goomba", "x": 25, "y": 26, "misc": 192}, + {"screen": 5, "sprite": "Money Bag Block", "x": 27, "y": 19, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 3, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Star Block", "x": 7, "y": 11, "misc": 64}, + {"screen": 7, "sprite": "Noko Bombette/Bear", "x": 6, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Midway Bell", "x": 5, "y": 18, "misc": 32}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 21, "y": 28, "misc": 160}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 31, "y": 16, "misc": 32}, + {"screen": 9, "sprite": "Mushroom Block", "x": 11, "y": 15, "misc": 32}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 19, "y": 20, "misc": 160}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 5, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Mushroom", "x": 1, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Goomba", "x": 9, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Flower", "x": 17, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Carrot", "x": 25, "y": 14, "misc": 32}, + {"screen": 12, "sprite": "Boo/Bomubomu", "x": 12, "y": 16, "misc": 32}, + {"screen": 12, "sprite": "Boo/Bomubomu", "x": 24, "y": 20, "misc": 160}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 16, "y": 28, "misc": 32}, + {"screen": 14, "sprite": "Noko Bombette/Bear", "x": 12, "y": 28, "misc": 32}, + {"screen": 14, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 32}], + "Mario Zone 3": [ + {"screen": 1, "sprite": "Kurokyura/Jack-in-the-Box", "x": 15, "y": 23, "misc": 160}, + {"screen": 1, "sprite": "Kiddokatto", "x": 21, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Masked Ghoul/Bullet Bill", "x": 4, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Diagonal Ball on Chain", "x": 9, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Diagonal Ball on Chain", "x": 1, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Mushroom Block", "x": 13, "y": 17, "misc": 32}, + {"screen": 3, "sprite": "Diagonal Ball on Chain", "x": 25, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 24, "misc": 160}, + {"screen": 4, "sprite": "Diagonal Ball on Chain", "x": 27, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 24, "misc": 160}, + {"screen": 6, "sprite": "Carrot Block", "x": 9, "y": 21, "misc": 32}, + {"screen": 6, "sprite": "Kiddokatto", "x": 25, "y": 30, "misc": 160}, + {"screen": 7, "sprite": "Masked Ghoul/Bullet Bill", "x": 26, "y": 28, "misc": 32}, + {"screen": 7, "sprite": "Midway Bell", "x": 27, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Kurokyura/Jack-in-the-Box", "x": 11, "y": 21, "misc": 32}, + {"screen": 8, "sprite": "Heart Block", "x": 13, "y": 3, "misc": 32}, + {"screen": 8, "sprite": "Kiddokatto", "x": 31, "y": 30, "misc": 160}, + {"screen": 9, "sprite": "Claw Grabber", "x": 23, "y": 28, "misc": 32}, + {"screen": 10, "sprite": "Claw Grabber", "x": 13, "y": 28, "misc": 32}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 4, "y": 28, "misc": 64}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 5, "y": 20, "misc": 160}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 8, "y": 12, "misc": 192}, + {"screen": 11, "sprite": "Kiddokatto", "x": 26, "y": 20, "misc": 32}, + {"screen": 11, "sprite": "Heart Block", "x": 27, "y": 23, "misc": 64}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 28, "y": 18, "misc": 192}, + {"screen": 12, "sprite": "Claw Grabber", "x": 11, "y": 28, "misc": 32}, + {"screen": 12, "sprite": "Kiddokatto", "x": 21, "y": 20, "misc": 32}, + {"screen": 13, "sprite": "Mushroom Block", "x": 13, "y": 21, "misc": 32}, + {"screen": 13, "sprite": "Masked Ghoul/Bullet Bill", "x": 18, "y": 28, "misc": 160}, + {"screen": 13, "sprite": "Kurokyura/Jack-in-the-Box", "x": 25, "y": 21, "misc": 32}, + {"screen": 14, "sprite": "Diagonal Ball on Chain", "x": 9, "y": 30, "misc": 32}, + {"screen": 14, "sprite": "Masked Ghoul/Bullet Bill", "x": 26, "y": 24, "misc": 160}, + {"screen": 15, "sprite": "Claw Grabber", "x": 3, "y": 18, "misc": 32}, + {"screen": 15, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 32}], + "Mario Zone 4": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 9, "y": 17, "misc": 32}, + {"screen": 1, "sprite": "Spinning Spike/Tamara", "x": 9, "y": 25, "misc": 160}, + {"screen": 1, "sprite": "Spinning Spike/Tamara", "x": 29, "y": 25, "misc": 32}, + {"screen": 2, "sprite": "Masked Ghoul/Bullet Bill", "x": 12, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Spinning Spike/Tamara", "x": 29, "y": 21, "misc": 160}, + {"screen": 3, "sprite": "Spinning Spike/Tamara", "x": 15, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 26, "misc": 160}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 24, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Masked Ghoul/Bullet Bill", "x": 2, "y": 26, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 22, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 2, "y": 14, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 14, "y": 8, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 26, "y": 2, "misc": 32}, + {"screen": 7, "sprite": "Spinning Spike/Tamara", "x": 9, "y": 25, "misc": 160}, + {"screen": 7, "sprite": "Spinning Spike/Tamara", "x": 15, "y": 21, "misc": 32}, + {"screen": 7, "sprite": "Spinning Spike/Tamara", "x": 21, "y": 25, "misc": 160}, + {"screen": 7, "sprite": "Mushroom Block", "x": 25, "y": 23, "misc": 0}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 17, "y": 26, "misc": 128}, + {"screen": 8, "sprite": "Masked Ghoul/Bullet Bill", "x": 30, "y": 24, "misc": 0}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 11, "y": 30, "misc": 128}, + {"screen": 9, "sprite": "Midway Bell", "x": 16, "y": 24, "misc": 0}, + {"screen": 9, "sprite": "Goomba", "x": 26, "y": 30, "misc": 0}, + {"screen": 10, "sprite": "Moving Saw (Ceiling)", "x": 17, "y": 26, "misc": 0}, + {"screen": 10, "sprite": "Moving Saw (Floor)", "x": 19, "y": 22, "misc": 128}, + {"screen": 11, "sprite": "Mushroom Block", "x": 7, "y": 23, "misc": 0}, + {"screen": 11, "sprite": "Moving Saw (Ceiling)", "x": 25, "y": 26, "misc": 128}, + {"screen": 11, "sprite": "Moving Saw (Floor)", "x": 27, "y": 22, "misc": 0}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 29, "y": 30, "misc": 0}, + {"screen": 13, "sprite": "Moving Saw (Floor)", "x": 9, "y": 28, "misc": 128}, + {"screen": 13, "sprite": "Moving Saw (Floor)", "x": 19, "y": 28, "misc": 0}, + {"screen": 14, "sprite": "Spinning Spike/Tamara", "x": 13, "y": 25, "misc": 0}, + {"screen": 14, "sprite": "Goomba", "x": 21, "y": 30, "misc": 128}], + "Turtle Zone 1": [ + {"screen": 1, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 2, "y": 16, "misc": 192}, + {"screen": 1, "sprite": "Horizontal Blurp", "x": 12, "y": 21, "misc": 64}, + {"screen": 1, "sprite": "Mushroom Block", "x": 13, "y": 3, "misc": 64}, + {"screen": 2, "sprite": "Horizontal Blurp", "x": 1, "y": 18, "misc": 64}, + {"screen": 2, "sprite": "Spiny Cheep Cheep", "x": 11, "y": 26, "misc": 64}, + {"screen": 2, "sprite": "Cheep Cheep (Vertical)", "x": 26, "y": 28, "misc": 192}, + {"screen": 3, "sprite": "Goomba", "x": 3, "y": 8, "misc": 64}, + {"screen": 3, "sprite": "Goomba", "x": 17, "y": 8, "misc": 64}, + {"screen": 3, "sprite": "Star Block", "x": 17, "y": 1, "misc": 64}, + {"screen": 3, "sprite": "Cheep Cheep (Vertical)", "x": 18, "y": 28, "misc": 192}, + {"screen": 3, "sprite": "Heart Block", "x": 19, "y": 1, "misc": 64}, + {"screen": 3, "sprite": "Shark", "x": 27, "y": 26, "misc": 192}, + {"screen": 4, "sprite": "Paragoomba (Diagonal)", "x": 1, "y": 4, "misc": 64}, + {"screen": 4, "sprite": "Goomba", "x": 10, "y": 8, "misc": 64}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 1, "y": 16, "misc": 64}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 9, "y": 22, "misc": 192}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 16, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Shark", "x": 12, "y": 21, "misc": 64}, + {"screen": 6, "sprite": "Midway Bell", "x": 21, "y": 18, "misc": 64}, + {"screen": 6, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 25, "y": 16, "misc": 64}, + {"screen": 7, "sprite": "Spiny Cheep Cheep", "x": 21, "y": 17, "misc": 64}, + {"screen": 7, "sprite": "Horizontal Blurp", "x": 25, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Cheep Cheep (Vertical)", "x": 7, "y": 20, "misc": 64}, + {"screen": 8, "sprite": "Shark", "x": 15, "y": 14, "misc": 192}, + {"screen": 8, "sprite": "Spiny Cheep Cheep", "x": 25, "y": 24, "misc": 192}, + {"screen": 8, "sprite": "Mushroom Block", "x": 31, "y": 3, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 15, "y": 24, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 23, "y": 20, "misc": 192}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 29, "y": 26, "misc": 192}, + {"screen": 10, "sprite": "Shark", "x": 10, "y": 18, "misc": 192}, + {"screen": 10, "sprite": "Money Bag Block", "x": 11, "y": 31, "misc": 32}, + {"screen": 11, "sprite": "Shark", "x": 5, "y": 22, "misc": 64}, + {"screen": 11, "sprite": "Horizontal Blurp", "x": 16, "y": 28, "misc": 192}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 9, "misc": 64}, + {"screen": 11, "sprite": "Heart Block", "x": 27, "y": 23, "misc": 64}], + "Turtle Zone 2": [ + {"screen": 0, "sprite": "Shark", "x": 17, "y": 12, "misc": 192}, + {"screen": 0, "sprite": "Carrot Block", "x": 21, "y": 19, "misc": 64}, + {"screen": 0, "sprite": "Masked Ghoul/Bullet Bill", "x": 22, "y": 28, "misc": 192}, + {"screen": 1, "sprite": "Honebon/F Boy", "x": 13, "y": 12, "misc": 192}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 19, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Karakara", "x": 28, "y": 27, "misc": 64}, + {"screen": 2, "sprite": "Shark", "x": 7, "y": 10, "misc": 64}, + {"screen": 2, "sprite": "Karakara", "x": 17, "y": 27, "misc": 64}, + {"screen": 2, "sprite": "Karakara", "x": 23, "y": 22, "misc": 64}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 25, "y": 14, "misc": 32}, + {"screen": 3, "sprite": "Karakara", "x": 2, "y": 1, "misc": 64}, + {"screen": 3, "sprite": "Karakara", "x": 6, "y": 14, "misc": 192}, + {"screen": 3, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 24, "misc": 192}, + {"screen": 3, "sprite": "Flower Block", "x": 21, "y": 11, "misc": 64}, + {"screen": 4, "sprite": "Pencil/Spikey", "x": 7, "y": 26, "misc": 192}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 10, "y": 14, "misc": 160}, + {"screen": 4, "sprite": "Pencil/Spikey", "x": 11, "y": 26, "misc": 192}, + {"screen": 4, "sprite": "Karakara", "x": 21, "y": 22, "misc": 64}, + {"screen": 4, "sprite": "Karakara", "x": 28, "y": 12, "misc": 192}, + {"screen": 5, "sprite": "Pencil/Spikey", "x": 1, "y": 24, "misc": 192}, + {"screen": 5, "sprite": "Star Block", "x": 5, "y": 5, "misc": 64}, + {"screen": 5, "sprite": "Masked Ghoul/Bullet Bill", "x": 26, "y": 24, "misc": 192}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 30, "y": 10, "misc": 32}, + {"screen": 6, "sprite": "Masked Ghoul/Bullet Bill", "x": 6, "y": 28, "misc": 64}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 10, "y": 22, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 14, "y": 26, "misc": 32}, + {"screen": 6, "sprite": "Midway Bell", "x": 15, "y": 4, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 18, "y": 10, "misc": 64}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 26, "y": 2, "misc": 64}, + {"screen": 7, "sprite": "Karakara", "x": 8, "y": 14, "misc": 160}, + {"screen": 7, "sprite": "Karakara", "x": 19, "y": 27, "misc": 192}, + {"screen": 8, "sprite": "Flower", "x": 5, "y": 4, "misc": 64}, + {"screen": 8, "sprite": "Heart Block", "x": 7, "y": 3, "misc": 64}, + {"screen": 8, "sprite": "Pencil/Spikey", "x": 11, "y": 24, "misc": 32}, + {"screen": 8, "sprite": "Money Bag Block", "x": 23, "y": 13, "misc": 64}, + {"screen": 9, "sprite": "Pencil/Spikey", "x": 9, "y": 24, "misc": 192}, + {"screen": 9, "sprite": "Pencil/Spikey", "x": 19, "y": 24, "misc": 64}, + {"screen": 10, "sprite": "Rising Platform", "x": 4, "y": 22, "misc": 64}, + {"screen": 10, "sprite": "Rising Platform", "x": 10, "y": 16, "misc": 64}, + {"screen": 10, "sprite": "Bonus Bell", "x": 21, "y": 9, "misc": 64}, + {"screen": 12, "sprite": "Pencil/Spikey", "x": 5, "y": 24, "misc": 192}, + {"screen": 12, "sprite": "Pencil/Spikey", "x": 9, "y": 24, "misc": 192}, + {"screen": 12, "sprite": "Karakara", "x": 19, "y": 24, "misc": 64}, + {"screen": 12, "sprite": "Karakara", "x": 26, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Karakara", "x": 1, "y": 26, "misc": 192}, + {"screen": 13, "sprite": "Pencil/Spikey", "x": 15, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Honebon/F Boy", "x": 24, "y": 28, "misc": 192}, + {"screen": 14, "sprite": "Pencil/Spikey", "x": 1, "y": 24, "misc": 192}, + {"screen": 14, "sprite": "Shark", "x": 14, "y": 26, "misc": 64}], + "Turtle Zone 3": [ + {"screen": 1, "sprite": "Ragumo/Aqua Kuribo", "x": 1, "y": 26, "misc": 160}, + {"screen": 1, "sprite": "Ragumo/Aqua Kuribo", "x": 31, "y": 22, "misc": 160}, + {"screen": 2, "sprite": "Carrot Block", "x": 15, "y": 15, "misc": 32}, + {"screen": 2, "sprite": "Pencil/Spikey", "x": 29, "y": 14, "misc": 160}, + {"screen": 3, "sprite": "Pencil/Spikey", "x": 13, "y": 22, "misc": 160}, + {"screen": 3, "sprite": "Pencil/Spikey", "x": 21, "y": 26, "misc": 32}, + {"screen": 4, "sprite": "Ragumo/Aqua Kuribo", "x": 5, "y": 24, "misc": 32}, + {"screen": 5, "sprite": "Paragoomba (Vertical)", "x": 0, "y": 24, "misc": 160}, + {"screen": 5, "sprite": "Midway Bell", "x": 12, "y": 18, "misc": 32}, + {"screen": 5, "sprite": "Ragumo/Aqua Kuribo", "x": 27, "y": 20, "misc": 32}, + {"screen": 5, "sprite": "Mushroom Block", "x": 29, "y": 19, "misc": 32}, + {"screen": 6, "sprite": "Honebon/F Boy", "x": 1, "y": 30, "misc": 160}, + {"screen": 6, "sprite": "Ragumo/Aqua Kuribo", "x": 7, "y": 20, "misc": 160}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 24, "y": 20, "misc": 160}, + {"screen": 7, "sprite": "Ragumo/Aqua Kuribo", "x": 6, "y": 28, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 27, "y": 28, "misc": 160}, + {"screen": 8, "sprite": "Ragumo/Aqua Kuribo", "x": 7, "y": 28, "misc": 160}, + {"screen": 8, "sprite": "Ragumo/Aqua Kuribo", "x": 19, "y": 28, "misc": 32}, + {"screen": 9, "sprite": "Mushroom Block", "x": 17, "y": 13, "misc": 32}, + {"screen": 9, "sprite": "Honebon/F Boy", "x": 27, "y": 22, "misc": 160}, + {"screen": 9, "sprite": "Money Bag Block", "x": 29, "y": 11, "misc": 32}, + {"screen": 11, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 24, "misc": 160}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 19, "y": 30, "misc": 160}], + "Hippo Zone": [ + {"screen": 0, "sprite": "Money Bag Block", "x": 5, "y": 7, "misc": 32}, + {"screen": 0, "sprite": "Heart Block", "x": 7, "y": 5, "misc": 0}, + {"screen": 0, "sprite": "Heart Block", "x": 31, "y": 19, "misc": 32}, + {"screen": 1, "sprite": "Heart Block", "x": 1, "y": 19, "misc": 32}, + {"screen": 1, "sprite": "Bubble", "x": 6, "y": 24, "misc": 0}, + {"screen": 1, "sprite": "Mushroom Block", "x": 27, "y": 9, "misc": 32}, + {"screen": 2, "sprite": "Toriuo", "x": 11, "y": 8, "misc": 160}, + {"screen": 2, "sprite": "Unibo/Terekuribo", "x": 25, "y": 26, "misc": 128}, + {"screen": 2, "sprite": "Toriuo", "x": 29, "y": 8, "misc": 160}, + {"screen": 3, "sprite": "Toriuo", "x": 11, "y": 8, "misc": 32}, + {"screen": 3, "sprite": "Unibo/Terekuribo", "x": 17, "y": 26, "misc": 128}, + {"screen": 3, "sprite": "Heart Block", "x": 17, "y": 25, "misc": 0}, + {"screen": 4, "sprite": "Toriuo", "x": 3, "y": 8, "misc": 160}, + {"screen": 4, "sprite": "Unibo/Terekuribo", "x": 9, "y": 26, "misc": 128}, + {"screen": 4, "sprite": "Toriuo", "x": 21, "y": 8, "misc": 32}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 6, "y": 10, "misc": 160}, + {"screen": 5, "sprite": "Mushroom Block", "x": 13, "y": 11, "misc": 32}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 19, "y": 12, "misc": 32}, + {"screen": 5, "sprite": "Unibo/Terekuribo", "x": 25, "y": 10, "misc": 128}, + {"screen": 5, "sprite": "Unibo/Terekuribo", "x": 27, "y": 18, "misc": 0}, + {"screen": 6, "sprite": "Unibo/Terekuribo", "x": 7, "y": 22, "misc": 128}, + {"screen": 6, "sprite": "Unibo/Terekuribo", "x": 11, "y": 12, "misc": 128}, + {"screen": 6, "sprite": "Horizontal Blurp", "x": 13, "y": 14, "misc": 160}, + {"screen": 6, "sprite": "Bubble", "x": 14, "y": 30, "misc": 0}, + {"screen": 7, "sprite": "Dondon", "x": 13, "y": 10, "misc": 128}, + {"screen": 7, "sprite": "Dondon", "x": 15, "y": 18, "misc": 128}, + {"screen": 7, "sprite": "Dondon", "x": 17, "y": 26, "misc": 0}, + {"screen": 7, "sprite": "Toriuo", "x": 25, "y": 8, "misc": 160}, + {"screen": 8, "sprite": "Toriuo", "x": 5, "y": 8, "misc": 160}, + {"screen": 8, "sprite": "Flower Block", "x": 19, "y": 25, "misc": 0}, + {"screen": 8, "sprite": "Toriuo", "x": 21, "y": 8, "misc": 160}, + {"screen": 8, "sprite": "Toriuo", "x": 31, "y": 8, "misc": 32}, + {"screen": 9, "sprite": "Money Bag Block", "x": 11, "y": 5, "misc": 0}, + {"screen": 9, "sprite": "Horizontal Blurp", "x": 15, "y": 12, "misc": 160}, + {"screen": 9, "sprite": "Horizontal Blurp", "x": 27, "y": 10, "misc": 160}, + {"screen": 10, "sprite": "Dondon", "x": 9, "y": 14, "misc": 0}, + {"screen": 10, "sprite": "Dondon", "x": 13, "y": 24, "misc": 0}, + {"screen": 10, "sprite": "Toriuo", "x": 19, "y": 8, "misc": 32}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 5, "misc": 0}], + "Space Zone 1": [ + {"screen": 1, "sprite": "Boo/Bomubomu", "x": 19, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Boo/Bomubomu", "x": 3, "y": 26, "misc": 160}, + {"screen": 3, "sprite": "Boo/Bomubomu", "x": 5, "y": 26, "misc": 160}, + {"screen": 3, "sprite": "Rerere/Poro", "x": 25, "y": 5, "misc": 160}, + {"screen": 4, "sprite": "Money Bag Block", "x": 9, "y": 21, "misc": 0}, + {"screen": 4, "sprite": "Money Bag Block", "x": 11, "y": 29, "misc": 0}, + {"screen": 4, "sprite": "Heart", "x": 13, "y": 6, "misc": 32}, + {"screen": 4, "sprite": "Mushroom Block", "x": 23, "y": 15, "misc": 32}, + {"screen": 5, "sprite": "No 48/Mogyo", "x": 1, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Heart", "x": 5, "y": 16, "misc": 0}, + {"screen": 5, "sprite": "Boo/Bomubomu", "x": 23, "y": 28, "misc": 160}, + {"screen": 6, "sprite": "Rerere/Poro", "x": 18, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Flower Block", "x": 5, "y": 11, "misc": 32}, + {"screen": 7, "sprite": "Rerere/Poro", "x": 6, "y": 20, "misc": 160}, + {"screen": 7, "sprite": "Midway Bell", "x": 15, "y": 22, "misc": 32}, + {"screen": 7, "sprite": "Rerere/Poro", "x": 19, "y": 13, "misc": 32}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 1, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Money Bag Block", "x": 7, "y": 21, "misc": 32}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 17, "y": 28, "misc": 32}, + {"screen": 9, "sprite": "Heart Block", "x": 3, "y": 15, "misc": 0}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 8, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Rerere/Poro", "x": 31, "y": 15, "misc": 160}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 31, "y": 20, "misc": 32}, + {"screen": 11, "sprite": "Boo/Bomubomu", "x": 3, "y": 28, "misc": 32}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 11, "misc": 32}], + "Space Zone 2": [ + {"screen": 2, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 5, "y": 22, "misc": 128}, + {"screen": 2, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 25, "y": 16, "misc": 128}, + {"screen": 2, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 27, "y": 30, "misc": 128}, + {"screen": 3, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 11, "y": 10, "misc": 128}, + {"screen": 4, "sprite": "Mushroom", "x": 1, "y": 6, "misc": 0}, + {"screen": 4, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 3, "y": 30, "misc": 128}, + {"screen": 4, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 23, "y": 26, "misc": 128}, + {"screen": 5, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 1, "y": 22, "misc": 128}, + {"screen": 5, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 9, "y": 26, "misc": 128}, + {"screen": 5, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 27, "y": 14, "misc": 0}, + {"screen": 6, "sprite": "Mushroom Block", "x": 13, "y": 15, "misc": 0}, + {"screen": 6, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 19, "y": 18, "misc": 128}, + {"screen": 7, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 13, "y": 22, "misc": 128}, + {"screen": 7, "sprite": "Mushroom Block", "x": 17, "y": 9, "misc": 0}, + {"screen": 7, "sprite": "Tosenbo/Pikku", "x": 27, "y": 24, "misc": 128}, + {"screen": 8, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 3, "y": 16, "misc": 128}, + {"screen": 9, "sprite": "Tosenbo/Pikku", "x": 3, "y": 16, "misc": 0}, + {"screen": 9, "sprite": "Tosenbo/Pikku", "x": 25, "y": 16, "misc": 0}, + {"screen": 10, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 13, "y": 16, "misc": 128}, + {"screen": 10, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 25, "y": 16, "misc": 128}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 15, "y": 20, "misc": 128}, + {"screen": 11, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 25, "y": 22, "misc": 0}, + {"screen": 12, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 5, "y": 16, "misc": 128}, + {"screen": 12, "sprite": "Mushroom Block", "x": 31, "y": 11, "misc": 0}, + {"screen": 13, "sprite": "Star Block", "x": 5, "y": 17, "misc": 0}, + {"screen": 13, "sprite": "Tosenbo/Pikku", "x": 7, "y": 17, "misc": 128}, + {"screen": 13, "sprite": "Midway Bell", "x": 19, "y": 20, "misc": 0}, + {"screen": 13, "sprite": "Mushroom", "x": 31, "y": 6, "misc": 0}, + {"screen": 15, "sprite": "Tosenbo/Pikku", "x": 1, "y": 26, "misc": 128}, + {"screen": 15, "sprite": "Mushroom Block", "x": 17, "y": 19, "misc": 0}], + "Macro Zone 1": [ + {"screen": 1, "sprite": "Kyotonbo", "x": 1, "y": 22, "misc": 0}, + {"screen": 1, "sprite": "Goronto", "x": 23, "y": 26, "misc": 128}, + {"screen": 2, "sprite": "Moving Platform (Large, Horizontal)", "x": 20, "y": 31, + "misc": 64}, {"screen": 3, "sprite": "Chikunto", "x": 1, "y": 16, "misc": 64}, + {"screen": 3, "sprite": "Mushroom Block", "x": 3, "y": 21, "misc": 64}, + {"screen": 4, "sprite": "Chikunto", "x": 19, "y": 28, "misc": 192}, + {"screen": 5, "sprite": "Big Diagonal Moving Platform", "x": 12, "y": 23, + "misc": 64}, + {"screen": 5, "sprite": "Moving Platform (Large, Horizontal)", "x": 14, "y": 31, + "misc": 64}, + {"screen": 5, "sprite": "Carrot Block", "x": 15, "y": 13, "misc": 64}, + {"screen": 6, "sprite": "Dokanto", "x": 25, "y": 28, "misc": 64}, + {"screen": 6, "sprite": "Carrot Block", "x": 31, "y": 27, "misc": 64}, + {"screen": 7, "sprite": "Kyotonbo", "x": 27, "y": 28, "misc": 64}, + {"screen": 8, "sprite": "Flower Block", "x": 1, "y": 27, "misc": 64}, + {"screen": 8, "sprite": "Chikunto", "x": 9, "y": 28, "misc": 64}, + {"screen": 9, "sprite": "Heart Block", "x": 11, "y": 27, "misc": 64}, + {"screen": 9, "sprite": "Chikunto", "x": 19, "y": 28, "misc": 192}, + {"screen": 9, "sprite": "Money Bag Block", "x": 25, "y": 27, "misc": 64}, + {"screen": 9, "sprite": "Goronto", "x": 29, "y": 28, "misc": 64}, + {"screen": 10, "sprite": "Heart Block", "x": 9, "y": 9, "misc": 32}, + {"screen": 10, "sprite": "Heart Block", "x": 13, "y": 9, "misc": 32}, + {"screen": 10, "sprite": "Midway Bell", "x": 15, "y": 26, "misc": 64}, + {"screen": 10, "sprite": "Heart Block", "x": 21, "y": 9, "misc": 32}, + {"screen": 10, "sprite": "Moving Platform (Large, Horizontal)", "x": 30, "y": 31, + "misc": 64}, + {"screen": 11, "sprite": "Carrot Block", "x": 3, "y": 15, "misc": 64}, + {"screen": 11, "sprite": "Falling Platform", "x": 26, "y": 17, "misc": 64}, + {"screen": 12, "sprite": "Moving Platform (Large, Horizontal)", "x": 28, "y": 31, + "misc": 64}, {"screen": 13, "sprite": "Kyotonbo", "x": 3, "y": 18, "misc": 192}, + {"screen": 13, "sprite": "Chikunto", "x": 17, "y": 28, "misc": 64}, + {"screen": 13, "sprite": "Dokanto", "x": 25, "y": 18, "misc": 64}, + {"screen": 14, "sprite": "Kyotonbo", "x": 0, "y": 28, "misc": 32}, + {"screen": 14, "sprite": "Moving Platform (Large, Horizontal)", "x": 0, "y": 31, + "misc": 64}, {"screen": 14, "sprite": "Goronto", "x": 12, "y": 26, "misc": 32}, + {"screen": 14, "sprite": "Dokanto", "x": 19, "y": 28, "misc": 192}, + {"screen": 14, "sprite": "Flower Block", "x": 21, "y": 21, "misc": 64}, + {"screen": 15, "sprite": "Big Diagonal Moving Platform", "x": 13, "y": 21, + "misc": 64}, + {"screen": 15, "sprite": "Bonus Bell", "x": 21, "y": 11, "misc": 64}], + "Macro Zone 2": [ + {"screen": 1, "sprite": "Ant", "x": 10, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Mushroom Block", "x": 19, "y": 19, "misc": 32}, + {"screen": 1, "sprite": "Piranha Plant", "x": 28, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Ant", "x": 21, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Battle Beetle", "x": 23, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Ant", "x": 5, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Fire Piranha Plant", "x": 22, "y": 2, "misc": 192}, + {"screen": 4, "sprite": "Ant", "x": 8, "y": 26, "misc": 160}, + {"screen": 4, "sprite": "Fire Piranha Plant", "x": 18, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Piranha Plant", "x": 6, "y": 30, "misc": 160}, + {"screen": 5, "sprite": "Battle Beetle", "x": 16, "y": 26, "misc": 32}, + {"screen": 6, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 5, "y": 26, "misc": 192}, + {"screen": 6, "sprite": "Carrot Block", "x": 7, "y": 15, "misc": 64}, + {"screen": 6, "sprite": "Ant", "x": 16, "y": 18, "misc": 64}, + {"screen": 7, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 0, "y": 23, "misc": 192}, + {"screen": 7, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 11, "y": 28, "misc": 64}, + {"screen": 7, "sprite": "Fire Piranha Plant", "x": 30, "y": 20, "misc": 192}, + {"screen": 8, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 15, "y": 28, "misc": 64}, + {"screen": 8, "sprite": "Star Block", "x": 19, "y": 9, "misc": 64}, + {"screen": 8, "sprite": "Piranha Plant", "x": 30, "y": 22, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 11, "y": 28, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 17, "y": 28, "misc": 64}, + {"screen": 9, "sprite": "Midway Bell", "x": 31, "y": 14, "misc": 64}, + {"screen": 10, "sprite": "Ant", "x": 1, "y": 18, "misc": 64}, + {"screen": 10, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 31, "y": 28, "misc": 64}, + {"screen": 11, "sprite": "Ant", "x": 3, "y": 16, "misc": 64}, + {"screen": 11, "sprite": "Star Block", "x": 9, "y": 15, "misc": 64}, + {"screen": 11, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 19, "y": 15, "misc": 160}, + {"screen": 11, "sprite": "Cheep Cheep (Vertical)", "x": 21, "y": 29, "misc": 64}, + {"screen": 12, "sprite": "Be", "x": 9, "y": 14, "misc": 32}, + {"screen": 12, "sprite": "Be", "x": 21, "y": 24, "misc": 32}, + {"screen": 12, "sprite": "Be", "x": 27, "y": 24, "misc": 32}, + {"screen": 13, "sprite": "Mushroom Block", "x": 7, "y": 23, "misc": 32}, + {"screen": 13, "sprite": "Bonus Bell", "x": 21, "y": 15, "misc": 32}], + "Macro Zone 3": [ + {"screen": 1, "sprite": "Koopa Troopa", "x": 0, "y": 26, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 9, "y": 22, "misc": 32}, + {"screen": 1, "sprite": "Carrot Block", "x": 17, "y": 13, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 23, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Goomba", "x": 4, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Goomba", "x": 29, "y": 26, "misc": 32}, + {"screen": 3, "sprite": "Piranha Plant", "x": 28, "y": 2, "misc": 64}, + {"screen": 4, "sprite": "Piranha Plant (Downward)/Grubby", "x": 4, "y": 25, "misc": 160}, + {"screen": 4, "sprite": "Goomba", "x": 14, "y": 30, "misc": 160}, + {"screen": 4, "sprite": "Goomba", "x": 30, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Piranha Plant (Downward)/Grubby", "x": 8, "y": 25, "misc": 32}, + {"screen": 5, "sprite": "Money Bag Block", "x": 11, "y": 21, "misc": 64}, + {"screen": 5, "sprite": "Honebon/F Boy", "x": 11, "y": 30, "misc": 64}, + {"screen": 5, "sprite": "Paragoomba (Diagonal)", "x": 23, "y": 28, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 15, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 23, "y": 26, "misc": 64}, + {"screen": 7, "sprite": "Mushroom Block", "x": 1, "y": 23, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 11, "y": 26, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 21, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Heart Block", "x": 3, "y": 5, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 7, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 17, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Star Block", "x": 29, "y": 23, "misc": 64}, + {"screen": 8, "sprite": "Midway Bell", "x": 31, "y": 22, "misc": 32}, + {"screen": 9, "sprite": "Be", "x": 31, "y": 18, "misc": 32}, + {"screen": 10, "sprite": "Be", "x": 11, "y": 18, "misc": 32}, + {"screen": 11, "sprite": "Piranha Plant", "x": 16, "y": 24, "misc": 160}, + {"screen": 12, "sprite": "Carrot Block", "x": 23, "y": 17, "misc": 32}, + {"screen": 13, "sprite": "Koopa Troopa", "x": 7, "y": 4, "misc": 160}, + {"screen": 13, "sprite": "Paragoomba (Vertical)", "x": 15, "y": 24, "misc": 128}, + {"screen": 13, "sprite": "Bonus Bell", "x": 23, "y": 5, "misc": 0}], + "Macro Zone 4": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 1, "y": 23, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 7, "y": 28, "misc": 160}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 17, "y": 24, "misc": 32}, + {"screen": 2, "sprite": "Runaway Heart Block/Bibi", "x": 5, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "Goomba", "x": 11, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Goomba", "x": 21, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Piranha Plant", "x": 6, "y": 24, "misc": 32}, + {"screen": 5, "sprite": "Piranha Plant (Downward)/Grubby", "x": 4, "y": 25, "misc": 32}, + {"screen": 5, "sprite": "Money Bag Block", "x": 11, "y": 7, "misc": 32}, + {"screen": 5, "sprite": "Carrot Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 19, "y": 30, "misc": 160}, + {"screen": 6, "sprite": "Goomba", "x": 7, "y": 30, "misc": 160}, + {"screen": 6, "sprite": "Goomba", "x": 11, "y": 18, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 25, "y": 30, "misc": 160}, + {"screen": 7, "sprite": "Runaway Heart Block/Bibi", "x": 5, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Fire Piranha Plant", "x": 24, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Midway Bell", "x": 3, "y": 20, "misc": 32}, + {"screen": 8, "sprite": "Piranha Plant", "x": 8, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Goomba", "x": 26, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Mushroom Block", "x": 1, "y": 11, "misc": 32}, + {"screen": 9, "sprite": "Goomba", "x": 1, "y": 20, "misc": 32}, + {"screen": 9, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 16, "misc": 160}, + {"screen": 10, "sprite": "Paragoomba (Diagonal)", "x": 29, "y": 26, "misc": 160}, + {"screen": 11, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 26, "misc": 32}], + "Mario's Castle": [ + {"screen": 0, "sprite": "Mushroom Block", "x": 15, "y": 17, "misc": 32}, + {"screen": 1, "sprite": "Falling Bone Platform", "x": 14, "y": 27, "misc": 32}, + {"screen": 1, "sprite": "Falling Bone Platform", "x": 22, "y": 27, "misc": 32}, + {"screen": 1, "sprite": "Skull Platform", "x": 25, "y": 30, "misc": 64}, + {"screen": 1, "sprite": "Rising Bone Platform", "x": 30, "y": 28, "misc": 32}, + {"screen": 2, "sprite": "Skull Platform", "x": 5, "y": 30, "misc": 64}, + {"screen": 2, "sprite": "Falling Bone Platform", "x": 16, "y": 27, "misc": 32}, + {"screen": 2, "sprite": "Falling Bone Platform", "x": 24, "y": 27, "misc": 32}, + {"screen": 2, "sprite": "Skull Platform", "x": 29, "y": 30, "misc": 64}, + {"screen": 3, "sprite": "Rising Bone Platform", "x": 0, "y": 28, "misc": 32}, + {"screen": 3, "sprite": "Skull Platform", "x": 3, "y": 30, "misc": 64}, + {"screen": 3, "sprite": "Rising Bone Platform", "x": 18, "y": 28, "misc": 32}, + {"screen": 3, "sprite": "Skull Platform", "x": 25, "y": 30, "misc": 64}, + {"screen": 3, "sprite": "Falling Bone Platform", "x": 26, "y": 27, "misc": 32}, + {"screen": 3, "sprite": "Skull Platform", "x": 27, "y": 30, "misc": 64}, + {"screen": 4, "sprite": "Rising Bone Platform", "x": 2, "y": 28, "misc": 32}, + {"screen": 4, "sprite": "Genkottsu (1.5 Tiles)", "x": 22, "y": 31, "misc": 64}, + {"screen": 5, "sprite": "Genkottsu (2 Tiles)", "x": 6, "y": 31, "misc": 64}, + {"screen": 5, "sprite": "Karamenbo", "x": 14, "y": 20, "misc": 32}, + {"screen": 5, "sprite": "Karamenbo", "x": 20, "y": 20, "misc": 32}, + {"screen": 5, "sprite": "Genkottsu (2 Tiles)", "x": 22, "y": 31, "misc": 64}, + {"screen": 6, "sprite": "Karamenbo", "x": 1, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Karamenbo", "x": 8, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Karamenbo", "x": 21, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Propeller Platform", "x": 4, "y": 30, "misc": 64}, + {"screen": 7, "sprite": "Propeller Platform", "x": 16, "y": 30, "misc": 64}, + {"screen": 7, "sprite": "Floating Face", "x": 19, "y": 26, "misc": 32}, + {"screen": 8, "sprite": "Propeller Platform", "x": 4, "y": 30, "misc": 64}, + {"screen": 8, "sprite": "Floating Face", "x": 17, "y": 29, "misc": 32}, + {"screen": 8, "sprite": "Floating Face", "x": 17, "y": 23, "misc": 32}, + {"screen": 8, "sprite": "Propeller Platform", "x": 18, "y": 30, "misc": 64}, + {"screen": 9, "sprite": "Floating Face", "x": 15, "y": 28, "misc": 32}, + {"screen": 9, "sprite": "Floating Face", "x": 16, "y": 22, "misc": 32}, + {"screen": 10, "sprite": "Mushroom Block", "x": 1, "y": 23, "misc": 64}, + {"screen": 10, "sprite": "Spike Ball (Large)", "x": 11, "y": 28, "misc": 64}, + {"screen": 10, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 10, "sprite": "Spike Ball (Small)", "x": 29, "y": 30, "misc": 64}, + {"screen": 11, "sprite": "Fire Pakkun Zo (Left)", "x": 8, "y": 28, "misc": 192}, + {"screen": 11, "sprite": "Fire Pakkun Zo (Left)", "x": 14, "y": 26, "misc": 64}, + {"screen": 11, "sprite": "Spike Ball (Large)", "x": 31, "y": 30, "misc": 192}, + {"screen": 12, "sprite": "Fire Pakkun Zo (Large)", "x": 15, "y": 26, "misc": 64}, + {"screen": 12, "sprite": "Fire Pakkun Zo (Left)", "x": 24, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Fire Pakkun Zo (Left)", "x": 0, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Fire Pakkun Zo (Left)", "x": 8, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Spike Ball (Large)", "x": 29, "y": 30, "misc": 64}, + {"screen": 14, "sprite": "Spike Ball (Small)", "x": 12, "y": 26, "misc": 192}, + {"screen": 15, "sprite": "Fire Pakkun Zo (Right)", "x": 4, "y": 16, "misc": 64}, + {"screen": 15, "sprite": "Mushroom Block", "x": 15, "y": 19, "misc": 32}], + "Scenic Course": [ + {"screen": 1, "sprite": "Paragoomba (Diagonal)", "x": 1, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 11, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Paragoomba (Diagonal)", "x": 21, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 31, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Paragoomba (Diagonal)", "x": 9, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 2, "sprite": "Goomba", "x": 19, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Paragoomba (Diagonal)", "x": 29, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Diagonal)", "x": 7, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Goomba", "x": 17, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Star Block", "x": 19, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Diagonal)", "x": 27, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Goomba", "x": 5, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Goomba", "x": 15, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Mushroom Block", "x": 17, "y": 23, "misc": 32}, + {"screen": 4, "sprite": "Paragoomba (Diagonal)", "x": 25, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Paragoomba (Diagonal)", "x": 3, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 17, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 1, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Paragoomba (Diagonal)", "x": 11, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 21, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Paragoomba (Diagonal)", "x": 31, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Paragoomba (Diagonal)", "x": 9, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Flower Block", "x": 11, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Paragoomba (Diagonal)", "x": 19, "y": 30, "misc": 32}], + "Turtle Zone Secret Course": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 7, "y": 21, "misc": 32}, + {"screen": 1, "sprite": "Heart Block", "x": 27, "y": 15, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 29, "y": 28, "misc": 32}, + {"screen": 3, "sprite": "Flower Block", "x": 11, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Money Bag Block", "x": 1, "y": 19, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 31, "y": 28, "misc": 32}, + {"screen": 5, "sprite": "Carrot Block", "x": 15, "y": 21, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 1, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Piranha Plant", "x": 6, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Mushroom Block", "x": 19, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Flower Block", "x": 21, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Carrot Block", "x": 23, "y": 23, "misc": 32}], + "Pumpkin Zone Secret Course 1": [ + {"screen": 0, "sprite": "Carrot Block", "x": 29, "y": 29, "misc": 0}, + {"screen": 1, "sprite": "Paragoomba (Vertical)", "x": 22, "y": 0, "misc": 32}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 14, "y": 2, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 6, "y": 4, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 30, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 23, "y": 4, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 15, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 25, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 19, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 29, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Goomba", "x": 11, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Goomba", "x": 29, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Goomba", "x": 15, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Star", "x": 25, "y": 24, "misc": 32}], + "Space Zone Secret Course": [ + {"screen": 2, "sprite": "Rerere/Poro", "x": 2, "y": 2, "misc": 32}, + {"screen": 3, "sprite": "Rerere/Poro", "x": 14, "y": 20, "misc": 0}, + {"screen": 4, "sprite": "Heart", "x": 3, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Heart", "x": 5, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Rerere/Poro", "x": 26, "y": 2, "misc": 32}, + {"screen": 5, "sprite": "Heart Block", "x": 21, "y": 19, "misc": 0}], + "Tree Zone Secret Course": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 3, "y": 13, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 9, "y": 24, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 13, "y": 14, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 25, "y": 16, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 3, "y": 20, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 19, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 27, "y": 22, "misc": 32}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 11, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 19, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 31, "y": 26, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 9, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 17, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 25, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 1, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 11, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 17, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 29, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Heart Block", "x": 9, "y": 13, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 17, "y": 26, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 27, "y": 26, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 1, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 11, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 21, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 31, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 7, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 17, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 27, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Koopa Troopa", "x": 5, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Koopa Troopa", "x": 13, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Koopa Troopa", "x": 21, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Heart Block", "x": 31, "y": 13, "misc": 32}], + "Macro Zone Secret Course": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 11, "y": 15, "misc": 32}, + {"screen": 1, "sprite": "Falling Platform", "x": 28, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Falling Platform", "x": 12, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Falling Platform", "x": 18, "y": 26, "misc": 32}, + {"screen": 3, "sprite": "Heart Block", "x": 11, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Flower Block", "x": 17, "y": 17, "misc": 32}, + {"screen": 6, "sprite": "Heart Block", "x": 25, "y": 27, "misc": 32}], + "Pumpkin Zone Secret Course 2": [ + {"screen": 0, "sprite": "Flower Block", "x": 25, "y": 11, "misc": 0}, + {"screen": 1, "sprite": "Heart Block", "x": 9, "y": 17, "misc": 0}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 16, "y": 20, "misc": 0}, + {"screen": 1, "sprite": "Heart Block", "x": 23, "y": 15, "misc": 0}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 29, "y": 20, "misc": 0}, + {"screen": 2, "sprite": "Heart Block", "x": 5, "y": 13, "misc": 0}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 13, "y": 20, "misc": 0}, + {"screen": 2, "sprite": "Goomba", "x": 21, "y": 20, "misc": 0}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 31, "y": 20, "misc": 0}, + {"screen": 3, "sprite": "Heart Block", "x": 17, "y": 17, "misc": 0}, + {"screen": 3, "sprite": "Heart Block", "x": 25, "y": 13, "misc": 0}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 1, "y": 20, "misc": 0}, + {"screen": 4, "sprite": "Falling Platform", "x": 18, "y": 24, "misc": 0}, + {"screen": 5, "sprite": "Falling Platform", "x": 2, "y": 22, "misc": 0}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 10, "y": 22, "misc": 0}, + {"screen": 5, "sprite": "Mushroom Block", "x": 11, "y": 15, "misc": 0}, + {"screen": 5, "sprite": "Falling Platform", "x": 18, "y": 24, "misc": 0}, + {"screen": 5, "sprite": "Falling Platform", "x": 26, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Falling Platform", "x": 2, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Falling Platform", "x": 10, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Falling Platform", "x": 18, "y": 24, "misc": 0}, + {"screen": 7, "sprite": "Goomba", "x": 13, "y": 18, "misc": 0}, + {"screen": 7, "sprite": "Heart Block", "x": 15, "y": 17, "misc": 0}, + {"screen": 7, "sprite": "Goomba", "x": 29, "y": 18, "misc": 0}, + {"screen": 8, "sprite": "Heart Block", "x": 9, "y": 17, "misc": 0}, + {"screen": 8, "sprite": "Goomba", "x": 11, "y": 18, "misc": 0}, + {"screen": 8, "sprite": "Heart Block", "x": 23, "y": 17, "misc": 0}, + {"screen": 8, "sprite": "Goomba", "x": 25, "y": 18, "misc": 0}, + {"screen": 9, "sprite": "Falling Platform", "x": 12, "y": 20, "misc": 0}, + {"screen": 9, "sprite": "Heart", "x": 23, "y": 16, "misc": 0}, + {"screen": 10, "sprite": "Falling Platform", "x": 0, "y": 22, "misc": 0}, + {"screen": 10, "sprite": "Heart", "x": 17, "y": 14, "misc": 0}]} From 7e772b4ee9462045b0b0aff54e5fe7431ec4067f Mon Sep 17 00:00:00 2001 From: Sunny Bat Date: Wed, 21 May 2025 09:12:37 -0700 Subject: [PATCH 065/183] Raft: Small Raft doc update, bugfix (#5008) * Small doc touchups * Advanced Scarecrow progressive * Add period to doc Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com> --------- Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com> --- worlds/raft/docs/setup_en.md | 3 ++- worlds/raft/progressives.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/worlds/raft/docs/setup_en.md b/worlds/raft/docs/setup_en.md index 16e7883776c3..25e2c16bc536 100644 --- a/worlds/raft/docs/setup_en.md +++ b/worlds/raft/docs/setup_en.md @@ -45,7 +45,8 @@ ## Multiplayer Raft You're able to have multiple Raft players on a single Raftipelago world. This will work, with a few notes: -- Only the player that creates/loads the world can connect to Archipelago (this is the "host" of the Raft world). Other players do not need to connect; everything will be routed through the the host. +- Every player that joins the Raft world must have the Raftipelago mod loaded. +- Only the player that creates/loads the world can connect to Archipelago (this is the "host" of the Raft world). Other players do not need to run */connect*; everything will be routed through the the host. - Players other than the host will be labeled as a "Raft Player (Steam name)" when using ingame chat, which will be routed through Archipelago chat. - Ingame chat will only work when the host is connected to the Archipelago server. diff --git a/worlds/raft/progressives.json b/worlds/raft/progressives.json index 11bd614ab04b..6f3900738ed2 100644 --- a/worlds/raft/progressives.json +++ b/worlds/raft/progressives.json @@ -30,7 +30,7 @@ "Steering Wheel": "progressive-engine", "Engine controls": "progressive-engine", "Scarecrow": "progressive-scarecrow", - "Advanced scarecrow": "progressive-scarecrow", + "Advanced Scarecrow": "progressive-scarecrow", "Simple collection net": "progressive-net", "Advanced collection net": "progressive-net", "Storage": "progressive-storage", From a076b9257d3c15da7f7a96ae6b6aa0c2684244d7 Mon Sep 17 00:00:00 2001 From: Natalie Weizenbaum Date: Wed, 21 May 2025 09:59:04 -0700 Subject: [PATCH 066/183] DS3: Don't make unrandomized items into events (#5018) The DS3 static randomizer uses the relative ordering of location names to map between Archipelago's notion of location IDs and the static randomizer's. Treating unrandomized locations as excluded can break this behavior by removing some locations from the list, causing further locations to be incorrectly assigned. The only reason this wasn't a bigger problem up to this point was that location order only matters on a per-region and per-item basis. That means this only causes problems in practice when a single region has multiple locations with the same default item, and some of those locations are randomized while others are not. Since exclusions (and thus randomization) are usually done based on item types, we managed to dodge this bullet for a long time. --- worlds/dark_souls_3/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index b9f32a8d4015..5e1003d2a9a2 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -273,9 +273,7 @@ def create_region(self, region_name, location_table) -> Region: self.player, location, parent = new_region, - event = True, ) - event_item.code = None new_location.place_locked_item(event_item) if location.name in excluded: excluded.remove(location.name) From a409167f6479caa4b896daa4a9fbdee71ae1d0ae Mon Sep 17 00:00:00 2001 From: Katelyn Gigante Date: Thu, 22 May 2025 04:27:03 +1000 Subject: [PATCH 067/183] core: Reconfigure stdout to utf8 (#5017) --- Utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Utils.py b/Utils.py index f930335b2483..f4752448e2c3 100644 --- a/Utils.py +++ b/Utils.py @@ -540,6 +540,7 @@ def filter(self, record: logging.LogRecord) -> bool: if add_timestamp: stream_handler.setFormatter(formatter) root_logger.addHandler(stream_handler) + sys.stdout.reconfigure(encoding="utf-8", errors="replace") # Relay unhandled exceptions to logger. if not getattr(sys.excepthook, "_wrapped", False): # skip if already modified From 6827368e60c1a3ef95002ea1b43b2a0f643dc8d4 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Thu, 22 May 2025 00:45:49 +0200 Subject: [PATCH 068/183] Core: generate templates faster and "cleaner" (#5019) --- Options.py | 13 ++++++++----- data/options.yaml | 5 ++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Options.py b/Options.py index 86e58ca64aba..3d08c5f00370 100644 --- a/Options.py +++ b/Options.py @@ -1676,6 +1676,7 @@ def get_option_groups(world: typing.Type[World], visibility_level: Visibility = def generate_yaml_templates(target_folder: typing.Union[str, "pathlib.Path"], generate_hidden: bool = True) -> None: import os + from inspect import cleandoc import yaml from jinja2 import Template @@ -1714,19 +1715,21 @@ def yaml_dump_scalar(scalar) -> str: # yaml dump may add end of document marker and newlines. return yaml.dump(scalar).replace("...\n", "").strip() + with open(local_path("data", "options.yaml")) as f: + file_data = f.read() + template = Template(file_data) + for game_name, world in AutoWorldRegister.world_types.items(): if not world.hidden or generate_hidden: option_groups = get_option_groups(world) - with open(local_path("data", "options.yaml")) as f: - file_data = f.read() - res = Template(file_data).render( + + res = template.render( option_groups=option_groups, __version__=__version__, game=game_name, yaml_dump=yaml_dump_scalar, dictify_range=dictify_range, + cleandoc=cleandoc, ) - del file_data - with open(os.path.join(target_folder, get_file_safe_name(game_name) + ".yaml"), "w", encoding="utf-8-sig") as f: f.write(res) diff --git a/data/options.yaml b/data/options.yaml index 09bfcdcec1f6..3fbe25a9211f 100644 --- a/data/options.yaml +++ b/data/options.yaml @@ -51,10 +51,9 @@ requires: {%- for option_key, option in group_options.items() %} {{ option_key }}: {%- if option.__doc__ %} - # {{ option.__doc__ + # {{ cleandoc(option.__doc__) | trim - | replace('\n\n', '\n \n') - | replace('\n ', '\n# ') + | replace('\n', '\n# ') | indent(4, first=False) }} {%- endif -%} From defdf34e609ea91a9ce7373aa3dea4771d050ec0 Mon Sep 17 00:00:00 2001 From: Fly Hyping Date: Wed, 21 May 2025 19:00:45 -0400 Subject: [PATCH 069/183] Wargroove: apworld (#4764) - Players and AI can sacrifice their own units and upload them to the multiworld. - Players and AI can summon random units from the multiworld. - Has 4 new separate options for how many sacrifices and summons either the player or the AI can make per level attempt. - New /sacrifice_summon command to toggle sacrifices and summons on/off. Useful if the AI makes a level impossible with their summons. - Linux Support. - Is an apworld now. --------- Co-authored-by: Raspberry Floof Co-authored-by: KScl Co-authored-by: Abigail Fox Co-authored-by: qwint Co-authored-by: Fabian Dill --- .../wargroove/Client.py | 229 +++++++++++++++--- worlds/wargroove/Options.py | 63 ++++- worlds/wargroove/__init__.py | 37 ++- .../data/mods/ArchipelagoMod/maps.dat | Bin 276454 -> 391423 bytes .../data/mods/ArchipelagoMod/mod.dat | Bin 594 -> 593 bytes .../data/mods/ArchipelagoMod/modAssets.dat | Bin 53878 -> 67643 bytes ...paign-c40a6e5b0cdf86ddac03b276691c483d.cmp | Bin 114384 -> 114528 bytes ...n-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak | Bin 114384 -> 114416 bytes worlds/wargroove/docs/en_Wargroove.md | 4 +- worlds/wargroove/docs/wargroove_en.md | 14 +- 10 files changed, 298 insertions(+), 49 deletions(-) rename WargrooveClient.py => worlds/wargroove/Client.py (63%) diff --git a/WargrooveClient.py b/worlds/wargroove/Client.py similarity index 63% rename from WargrooveClient.py rename to worlds/wargroove/Client.py index 595a221cd252..3dc5d6eb0ca9 100644 --- a/WargrooveClient.py +++ b/worlds/wargroove/Client.py @@ -2,14 +2,15 @@ import atexit import os +import pkgutil import sys import asyncio import random -import shutil +import typing from typing import Tuple, List, Iterable, Dict -from worlds.wargroove import WargrooveWorld -from worlds.wargroove.Items import item_table, faction_table, CommanderData, ItemData +from . import WargrooveWorld +from .Items import item_table, faction_table, CommanderData, ItemData import ModuleUpdate ModuleUpdate.update() @@ -21,7 +22,7 @@ if __name__ == "__main__": Utils.init_logging("WargrooveClient", exception_logger="Client") -from NetUtils import NetworkItem, ClientStatus +from NetUtils import ClientStatus from CommonClient import gui_enabled, logger, get_base_parser, ClientCommandProcessor, \ CommonContext, server_loop @@ -29,6 +30,34 @@ class WargrooveClientCommandProcessor(ClientCommandProcessor): + def _cmd_sacrifice_summon(self): + """Toggles sacrifices and summons On/Off""" + if isinstance(self.ctx, WargrooveContext): + self.ctx.has_sacrifice_summon = not self.ctx.has_sacrifice_summon + if self.ctx.has_sacrifice_summon: + self.output(f"Sacrifices and summons are enabled.") + else: + unit_summon_response_file = os.path.join(self.ctx.game_communication_path, "unitSummonResponse") + if os.path.exists(unit_summon_response_file): + os.remove(unit_summon_response_file) + self.output(f"Sacrifices and summons are disabled.") + + def _cmd_deathlink(self): + """Toggles deathlink On/Off""" + if isinstance(self.ctx, WargrooveContext): + self.ctx.has_death_link = not self.ctx.has_death_link + Utils.async_start(self.ctx.update_death_link(self.ctx.has_death_link), name="Update Deathlink") + if self.ctx.has_death_link: + death_link_send_file = os.path.join(self.ctx.game_communication_path, "deathLinkSend") + if os.path.exists(death_link_send_file): + os.remove(death_link_send_file) + self.output(f"Deathlink enabled.") + else: + death_link_receive_file = os.path.join(self.ctx.game_communication_path, "deathLinkReceive") + if os.path.exists(death_link_receive_file): + os.remove(death_link_receive_file) + self.output(f"Deathlink disabled.") + def _cmd_resync(self): """Manually trigger a resync.""" self.output(f"Syncing items.") @@ -58,6 +87,11 @@ class WargrooveContext(CommonContext): commander_defense_boost_multiplier: int = 0 income_boost_multiplier: int = 0 starting_groove_multiplier: float + has_death_link: bool = False + has_sacrifice_summon: bool = True + player_stored_units_key: str = "" + ai_stored_units_key: str = "" + max_stored_units: int = 1000 faction_item_ids = { 'Starter': 0, 'Cherrystone': 52025, @@ -71,6 +105,31 @@ class WargrooveContext(CommonContext): 'Income Boost': 52023, 'Commander Defense Boost': 52024, } + unit_classes = { + "archer", + "ballista", + "balloon", + "dog", + "dragon", + "giant", + "harpoonship", + "harpy", + "knight", + "mage", + "merman", + "rifleman", + "soldier", + "spearman", + "thief", + "thief_with_gold", + "travelboat", + "trebuchet", + "turtle", + "villager", + "wagon", + "warship", + "witch", + } def __init__(self, server_address, password): super(WargrooveContext, self).__init__(server_address, password) @@ -78,31 +137,80 @@ def __init__(self, server_address, password): self.syncing = False self.awaiting_bridge = False # self.game_communication_path: files go in this path to pass data between us and the actual game + game_options = WargrooveWorld.settings + + # Validate the AppData directory with Wargroove save data. + # By default, Windows sets an environment variable we can leverage. + # However, other OSes don't usually have this value set, so we need to rely on a settings value instead. + appdata_wargroove = None if "appdata" in os.environ: - options = Utils.get_options() - root_directory = os.path.join(options["wargroove_options"]["root_directory"]) - data_directory = os.path.join("lib", "worlds", "wargroove", "data") - dev_data_directory = os.path.join("worlds", "wargroove", "data") - appdata_wargroove = os.path.expandvars(os.path.join("%APPDATA%", "Chucklefish", "Wargroove")) - if not os.path.isfile(os.path.join(root_directory, "win64_bin", "wargroove64.exe")): - print_error_and_close("WargrooveClient couldn't find wargroove64.exe. " - "Unable to infer required game_communication_path") - self.game_communication_path = os.path.join(root_directory, "AP") - if not os.path.exists(self.game_communication_path): - os.makedirs(self.game_communication_path) - self.remove_communication_files() - atexit.register(self.remove_communication_files) - if not os.path.isdir(appdata_wargroove): - print_error_and_close("WargrooveClient couldn't find Wargoove in appdata!" - "Boot Wargroove and then close it to attempt to fix this error") - if not os.path.isdir(data_directory): - data_directory = dev_data_directory - if not os.path.isdir(data_directory): - print_error_and_close("WargrooveClient couldn't find Wargoove mod and save files in install!") - shutil.copytree(data_directory, appdata_wargroove, dirs_exist_ok=True) + appdata_wargroove = os.environ['appdata'] else: - print_error_and_close("WargrooveClient couldn't detect system type. " - "Unable to infer required game_communication_path") + try: + appdata_wargroove = game_options.save_directory + except FileNotFoundError: + print_error_and_close("WargrooveClient couldn't detect a path to the AppData folder.\n" + "Unable to infer required game_communication_path.\n" + "Try setting the \"save_directory\" value in your local options file " + "to the AppData folder containing your Wargroove saves.") + appdata_wargroove = os.path.expandvars(os.path.join(appdata_wargroove, "Chucklefish", "Wargroove")) + if not os.path.isdir(appdata_wargroove): + print_error_and_close(f"WargrooveClient couldn't find Wargroove data in your AppData folder.\n" + f"Looked in \"{appdata_wargroove}\".\n" + f"If you haven't yet booted the game at least once, boot Wargroove " + f"and then close it to attempt to fix this error.\n" + f"If the AppData folder above seems wrong, try setting the " + f"\"save_directory\" value in your local options file " + f"to the AppData folder containing your Wargroove saves.") + + # Check for the Wargroove game executable path. + # This should always be set regardless of the OS. + root_directory = game_options["root_directory"] + if not os.path.isfile(os.path.join(root_directory, "win64_bin", "wargroove64.exe")): + print_error_and_close(f"WargrooveClient couldn't find wargroove64.exe in " + f"\"{root_directory}/win64_bin/\".\n" + f"Unable to infer required game_communication_path.\n" + f"Please verify the \"root_directory\" value in your local " + f"options file is set correctly.") + self.game_communication_path = os.path.join(root_directory, "AP") + if not os.path.exists(self.game_communication_path): + os.makedirs(self.game_communication_path) + self.remove_communication_files() + atexit.register(self.remove_communication_files) + if not os.path.isdir(appdata_wargroove): + print_error_and_close("WargrooveClient couldn't find Wargoove in appdata!" + "Boot Wargroove and then close it to attempt to fix this error") + mods_directory = os.path.join(appdata_wargroove, "mods", "ArchipelagoMod") + save_directory = os.path.join(appdata_wargroove, "save") + + # Wargroove doesn't always create the mods directory, so we have to do it + if not os.path.isdir(mods_directory): + os.makedirs(mods_directory) + resources = ["data/mods/ArchipelagoMod/maps.dat", + "data/mods/ArchipelagoMod/mod.dat", + "data/mods/ArchipelagoMod/modAssets.dat", + "data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp", + "data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak"] + file_paths = [os.path.join(mods_directory, "maps.dat"), + os.path.join(mods_directory, "mod.dat"), + os.path.join(mods_directory, "modAssets.dat"), + os.path.join(save_directory, "campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp"), + os.path.join(save_directory, "campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak")] + for resource, destination in zip(resources, file_paths): + file_data = pkgutil.get_data("worlds.wargroove", resource) + if file_data is None: + print_error_and_close("WargrooveClient couldn't find Wargoove mod and save files in install!") + with open(destination, 'wb') as f: + f.write(file_data) + + def on_deathlink(self, data: typing.Dict[str, typing.Any]) -> None: + with open(os.path.join(self.game_communication_path, "deathLinkReceive"), 'w+') as f: + text = data.get("cause", "") + if text: + f.write(f"DeathLink: {text}") + else: + f.write(f"DeathLink: Received from {data['source']}") + super(WargrooveContext, self).on_deathlink(data) async def server_auth(self, password_requested: bool = False): if password_requested and not self.password: @@ -138,20 +246,25 @@ def remove_communication_files(self): def on_package(self, cmd: str, args: dict): if cmd in {"Connected"}: + slot_data = args["slot_data"] + self.has_death_link = slot_data.get("death_link", False) filename = f"AP_settings.json" with open(os.path.join(self.game_communication_path, filename), 'w') as f: - slot_data = args["slot_data"] - json.dump(args["slot_data"], f) + json.dump(slot_data, f) self.can_choose_commander = slot_data["can_choose_commander"] print('can choose commander:', self.can_choose_commander) self.starting_groove_multiplier = slot_data["starting_groove_multiplier"] self.income_boost_multiplier = slot_data["income_boost"] self.commander_defense_boost_multiplier = slot_data["commander_defense_boost"] - f.close() for ss in self.checked_locations: filename = f"send{ss}" with open(os.path.join(self.game_communication_path, filename), 'w') as f: - f.close() + pass + + self.player_stored_units_key = f"wargroove_player_units_{self.team}" + self.ai_stored_units_key = f"wargroove_ai_units_{self.team}" + self.set_notify(self.player_stored_units_key, self.ai_stored_units_key) + self.update_commander_data() self.ui.update_tracker() @@ -161,7 +274,6 @@ def on_package(self, cmd: str, args: dict): filename = f"seed{i}" with open(os.path.join(self.game_communication_path, filename), 'w') as f: f.write(str(random.randint(0, 4294967295))) - f.close() if cmd in {"RoomInfo"}: self.seed_name = args["seed_name"] @@ -189,7 +301,6 @@ def on_package(self, cmd: str, args: dict): f.write(f"{item_count * self.commander_defense_boost_multiplier}") else: f.write(f"{item_count}") - f.close() print_filename = f"AP_{str(network_item.item)}.item.print" print_path = os.path.join(self.game_communication_path, print_filename) @@ -200,7 +311,6 @@ def on_package(self, cmd: str, args: dict): self.item_names.lookup_in_game(network_item.item) + " from " + self.player_names[network_item.player]) - f.close() self.update_commander_data() self.ui.update_tracker() @@ -209,7 +319,7 @@ def on_package(self, cmd: str, args: dict): for ss in self.checked_locations: filename = f"send{ss}" with open(os.path.join(self.game_communication_path, filename), 'w') as f: - f.close() + pass def run_gui(self): """Import kivy UI system and start running it as self.ui_task.""" @@ -385,7 +495,6 @@ def get_commanders(self) -> List[Tuple[CommanderData, bool]]: async def game_watcher(ctx: WargrooveContext): - from worlds.wargroove.Locations import location_table while not ctx.exit_event.is_set(): if ctx.syncing == True: sync_msg = [{'cmd': 'Sync'}] @@ -397,6 +506,12 @@ async def game_watcher(ctx: WargrooveContext): victory = False for root, dirs, files in os.walk(ctx.game_communication_path): for file in files: + if file == "deathLinkSend" and ctx.has_death_link: + with open(os.path.join(ctx.game_communication_path, file), 'r') as f: + failed_mission = f.read() + if ctx.slot is not None: + await ctx.send_death(f"{ctx.player_names[ctx.slot]} failed {failed_mission}") + os.remove(os.path.join(ctx.game_communication_path, file)) if file.find("send") > -1: st = file.split("send", -1)[1] sending = sending+[(int(st))] @@ -404,6 +519,40 @@ async def game_watcher(ctx: WargrooveContext): if file.find("victory") > -1: victory = True os.remove(os.path.join(ctx.game_communication_path, file)) + if file == "unitSacrifice" or file == "unitSacrificeAI": + if ctx.has_sacrifice_summon: + stored_units_key = ctx.player_stored_units_key + if file == "unitSacrificeAI": + stored_units_key = ctx.ai_stored_units_key + with open(os.path.join(ctx.game_communication_path, file), 'r') as f: + unit_class = f.read() + message = [{"cmd": 'Set', "key": stored_units_key, + "default": [], + "want_reply": True, + "operations": [{"operation": "add", "value": [unit_class[:64]]}]}] + await ctx.send_msgs(message) + os.remove(os.path.join(ctx.game_communication_path, file)) + if file == "unitSummonRequestAI" or file == "unitSummonRequest": + if ctx.has_sacrifice_summon: + stored_units_key = ctx.player_stored_units_key + if file == "unitSummonRequestAI": + stored_units_key = ctx.ai_stored_units_key + with open(os.path.join(ctx.game_communication_path, "unitSummonResponse"), 'w') as f: + if stored_units_key in ctx.stored_data: + stored_units = ctx.stored_data[stored_units_key] + if stored_units is None: + stored_units = [] + wg1_stored_units = [unit for unit in stored_units if unit in ctx.unit_classes] + if len(wg1_stored_units) != 0: + summoned_unit = random.choice(wg1_stored_units) + message = [{"cmd": 'Set', "key": stored_units_key, + "default": [], + "want_reply": True, + "operations": [{"operation": "remove", "value": summoned_unit[:64]}]}] + await ctx.send_msgs(message) + f.write(summoned_unit) + os.remove(os.path.join(ctx.game_communication_path, file)) + ctx.locations_checked = sending message = [{"cmd": 'LocationChecks', "locations": sending}] await ctx.send_msgs(message) @@ -418,8 +567,9 @@ def print_error_and_close(msg): Utils.messagebox("Error", msg, error=True) sys.exit(1) -if __name__ == '__main__': - async def main(args): +def launch(*launch_args: str): + async def main(): + args = parser.parse_args(launch_args) ctx = WargrooveContext(args.connect, args.password) ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop") if gui_enabled: @@ -439,7 +589,6 @@ async def main(args): parser = get_base_parser(description="Wargroove Client, for text interfacing.") - args, rest = parser.parse_known_args() colorama.just_fix_windows_console() - asyncio.run(main(args)) + asyncio.run(main()) colorama.deinit() diff --git a/worlds/wargroove/Options.py b/worlds/wargroove/Options.py index 1af077206556..a933cdb17b81 100644 --- a/worlds/wargroove/Options.py +++ b/worlds/wargroove/Options.py @@ -1,6 +1,6 @@ -import typing from dataclasses import dataclass -from Options import Choice, Option, Range, PerGameCommonOptions +from Options import Choice, Range, PerGameCommonOptions, StartInventoryPool, OptionDict, OptionGroup, \ + DeathLinkMixin class IncomeBoost(Range): @@ -31,8 +31,65 @@ class CommanderChoice(Choice): option_unlockable_factions = 1 option_random_starting_faction = 2 + +class PlayerSacrificeLimit(Range): + """How many times the player can sacrifice a unit at the Stronghold per level attempt. + Sacrificed units are stored in the multiworld for other players to summon.""" + display_name = "Player Sacrifice Limit" + range_start = 0 + range_end = 5 + default = 0 + + +class PlayerSummonLimit(Range): + """How many times the player can summon a unit at the Stronghold per level attempt. + Summoned units are from the multiworld which were sacrificed by other players.""" + display_name = "Player Summon Limit" + range_start = 0 + range_end = 5 + default = 0 + + +class AISacrificeLimit(Range): + """How many times the AI can sacrifice a unit at the Stronghold per level attempt. + Sacrificed units are stored in the multiworld for other AIs to summon.""" + display_name = "AI Sacrifice Limit" + range_start = 0 + range_end = 5 + default = 0 + + +class AISummonLimit(Range): + """How many times the AI can summon a unit at the Stronghold per level attempt. + Summoned units are from the multiworld which were sacrificed by other AIs. + AI summoning can be overwhelming, use /sacrifice_summon in the client if a level becomes impossible.""" + display_name = "AI Summon Limit" + range_start = 0 + range_end = 5 + default = 0 + + +wargroove_option_groups = [ + OptionGroup("General Options", [ + IncomeBoost, + CommanderDefenseBoost, + CommanderChoice + ]), + OptionGroup("Sacrifice and Summon Options", [ + PlayerSacrificeLimit, + PlayerSummonLimit, + AISacrificeLimit, + AISummonLimit, + ]), +] + @dataclass -class WargrooveOptions(PerGameCommonOptions): +class WargrooveOptions(DeathLinkMixin, PerGameCommonOptions): income_boost: IncomeBoost commander_defense_boost: CommanderDefenseBoost commander_choice: CommanderChoice + player_sacrifice_limit: PlayerSacrificeLimit + player_summon_limit: PlayerSummonLimit + ai_sacrifice_limit: AISacrificeLimit + ai_summon_limit: AISummonLimit + start_inventory_from_pool: StartInventoryPool diff --git a/worlds/wargroove/__init__.py b/worlds/wargroove/__init__.py index f204f468d1ab..e6bcc6288a4a 100644 --- a/worlds/wargroove/__init__.py +++ b/worlds/wargroove/__init__.py @@ -8,18 +8,42 @@ from .Regions import create_regions from .Rules import set_rules from worlds.AutoWorld import World, WebWorld -from .Options import WargrooveOptions +from .Options import WargrooveOptions, wargroove_option_groups +from worlds.LauncherComponents import Component, components, Type, launch as launch_component + + +def launch_client(*args: str): + from .Client import launch + launch_component(launch, name="WargrooveClient", args=args) + + +components.append(Component("Wargroove Client", game_name="Wargroove", func=launch_client, component_type=Type.CLIENT)) class WargrooveSettings(settings.Group): class RootDirectory(settings.UserFolderPath): """ - Locate the Wargroove root directory on your system. - This is used by the Wargroove client, so it knows where to send communication files to + Locates the Wargroove root directory on your system. + This is used by the Wargroove client, so it knows where to send communication files to. """ description = "Wargroove root directory" + class SaveDirectory(settings.UserFolderPath): + """ + Locates the Wargroove save file directory on your system. + This is used by the Wargroove client, so it knows where to send mod and save files to. + """ + description = "Wargroove save file/appdata directory" + + def browse(self, **kwargs): + from Utils import messagebox + messagebox("AppData folder not found", + "WargrooveClient couldn't detect a path to the AppData folder.\n" + "Please select the folder containing the \"/Chucklefish/Wargroove/\" directories.") + super().browse(**kwargs) + root_directory: RootDirectory = RootDirectory("C:/Program Files (x86)/Steam/steamapps/common/Wargroove") + save_directory: SaveDirectory = SaveDirectory("%APPDATA%") class WargrooveWeb(WebWorld): @@ -32,6 +56,8 @@ class WargrooveWeb(WebWorld): ["Fly Sniper"] )] + option_groups = wargroove_option_groups + class WargrooveWorld(World): """ @@ -55,6 +81,11 @@ def _get_slot_data(self): 'commander_defense_boost': self.options.commander_defense_boost.value, 'can_choose_commander': self.options.commander_choice.value != 0, 'commander_choice': self.options.commander_choice.value, + 'player_sacrifice_limit': self.options.player_sacrifice_limit.value, + 'player_summon_limit': self.options.player_summon_limit.value, + 'ai_sacrifice_limit': self.options.ai_sacrifice_limit.value, + 'ai_summon_limit': self.options.ai_summon_limit.value, + 'death_link': self.options.death_link.value, 'starting_groove_multiplier': 20 # Backwards compatibility in case this ever becomes an option } diff --git a/worlds/wargroove/data/mods/ArchipelagoMod/maps.dat b/worlds/wargroove/data/mods/ArchipelagoMod/maps.dat index a7ffb0733133a55cc128eaef62b7f70b23849699..fca94c194eaed831d7daafcb9a654136bd3110d1 100644 GIT binary patch delta 321539 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�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Ξ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
    K^L*`dw`Y%8+Wc|7M$BShcJP3@W9ulH?atO{w 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

    m!rr?h3(}kr3$c`1`8I1n3{={Hh6(VGe+O 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

    T-VUF4v6uc!5)1));jow{JbgdzcRX;6LYimK#^x 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 Nq0zU8@?reK|3AKIShfHF diff --git a/worlds/wargroove/data/mods/ArchipelagoMod/mod.dat b/worlds/wargroove/data/mods/ArchipelagoMod/mod.dat index 22464857e0da7e4892304c934203d3a3f729cf9c..6a12724d9acc3dbeedfa137f9a6940ba30bddc6c 100644 GIT binary patch delta 489 zcmVO;6iE5KSD)M`-vc74$%* z?H>RoL_m&QP%o9LmU}euPVH6KyVmYH5&iX@u_h2gt6=HL^7_rZnR&BWr_<>Xx`Zu4 z<#o*Do6q+M+XQG*=>wnk3HSC<{dA_r@Q%LT6ZQ!jV;)SMjCV|&FwqBp)kIValS&04 zFDb@C;V+6pfzv9LxO%K|sA@2U`@*#x6FC1bWAUjd#yR2cIqI9&msIy%jF{quhIC5* zcL}FbJjWW%kq56LGvP991NTdk`vSU zT!CBCXkQB7m7fofb*nO9i)d@6v&L9$T(K`R>kFCRrP1h{v`J%J@K%ij(HIDMhtQ6C zgTT>$1o*NC+x-bl@+F#_}y delta 490 zcmVO;6iE5KSD)M`$RNiuORI z?H_PM1Or}tO*UFRj~AAdHrVI%)HsG)9LgGUBVWj z@;YYn&F6cBZ2~l@^np+Ngd6*)?wzSIyrHkRgnfd>mq(? zuD~s6v@eD4%Fl<#x>XslMYJ{3S!1j=uGp8E^@Ysu(rENe+N3dEc&)~PXbgnBLug06 zLE!K|0(@B_!c+bu$$z-AhsiH6Y!WzrZ3iDjVM$(IX`UXL8EH|!LoB;uT?O^U@M<)? g7=0U#Cs*UkucOIie7Ph3XJTk3=t?<%0N>fov#uuc!2kdN diff --git a/worlds/wargroove/data/mods/ArchipelagoMod/modAssets.dat b/worlds/wargroove/data/mods/ArchipelagoMod/modAssets.dat index 54026ab2c2dd7ed3f6ed0bb5da5ba1889d1e8385..a51c17e954fd2622701520f283a919b375f3aae7 100644 GIT binary patch delta 10313 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 AKmY&$ delta 1880 zcmV-e2dDVEkOcOm1CStp1p)v700000_5=U`00000c$|%rO>fjN5I{>MR6rmBCqzY$ zKoPM1ievi*m!3d~KM;8nlNz#dWP2CEuVC(+gNi>p^ym=l^=Je#|dOSq4)vIsc zzg~TW#Y1?e9Aibe5D7XT0NdJVbz}dUYNg9)T^kbr2tIQnrNRV%?v!vblTf<0vj62^ z!3a_q5qWHr%5*N+I2MH^V^VR<6900BH#^hD$xjgCREb>n{M#A6_Rj505lsUd`Bqbt!=&CXu3?)04fX{tT|22!=DNa>4p0JspVXZCx8bmCdk} zOktXlL_Hs217GLOYq6J1m zK?+awDZ~SaONd%;OxNf?Q>o+MFN#mTytbWbbnU*l>OR2G0>p1Pj61av6M|Jv7s+2A%KPa&VwM>LGhbqUb7+q4xA8~Rgu_7RIA5Z^*jM)>HfN*^ z<%*z1KkyYS1I$HRhm~nRTz$SPOhcOy!eJzkTvX&g#U@)yvpWK!2eV@etp$H^0RR91 z0001ZoJEk`3c@f9h4<$sA~F;&y!YBYgm|luP-+dMFx%3#;^UjtY#V%poaCHsDY7gp zksMheAMnqyV1Wh=QXyJdL)saMx}$dNqR~M}6|^;i6rrS1FkGDJDPx0B)vug856VaK zI8xS}ZR8uMKc;MvQqzYB-Y-qrPB;&@FQ^!jh3vscsIj)ZF)FWJxN~Sb{Z+TTykUJy zZs~gnS3B6~X}_K|%HAV~S$V`TXamdgZXOBypV1Lde7}k--C%ltA=XHIlYtRnlaLVz zv*8i34YRx-uq(6YOuqrM{!T*zvm{j76|+QY14gsFvFrr1#kMgIlLN?Vlc;%zvupHM z4}ZuF00000004NLomcyB8$}RKfr4o13sg$q+w_sRrALyMf{JLHI1)rWRF%N5*7|O3 zFPwL+-MyH|^8enMy*Ybr-@|I8knJfi1rk$&C@tbxf7Nh=I`15 zTh=Z%%@z-E(<9jM6WI0|teJ8h>BJC;E+Y}HSOmva8+{3D5!mBKEUDlOf!jA0-3G)X z|3&WOCcNEQ%SZI16AwiE-x-Q#8-G~V(}uZ$VB&violvo0x;JfV~S#Qsqm1!7?jVKlCE{l(PJ=k@iH! zPMcHY#qwyUTn>GL|H)rO7b!SD)_+6I0-q`A=rA28QZdrTmk<{6G5yA)6&n`LhMObI z^eeFM>KUtuUM~^hcdTas9rC?Mt26{{9!m7Uji#o5GtoK#{jo=CIrcLGjAe;p? zlWU8bMoAA^WD2Vu&$*u@2!HEe zfF*4r1e|N@u()vuAHiItC4;Lg+*k;O8T3h=>`mD=Bq@b4b|PBQXMdE^&3fWMnOBOz z70#_o6pWJV+6<;qqc6a60i~zx4}B8M53I?&4w)V+h+Oy7AB8(Mc{Yu3c;UV6+Zy^R z)<1&@#(0`~t~m)X`f-MAVSI6P;Vc7swryo9Kt4aS$@6I|dP0hC1>VG3C9>>FFyMBk zM?A)HzQHot!z+m}j(^MfT?#Hbyo-^c+e&nYwr!Sj6^%6{`GPv@uiW~{aGO&1s1zYA zf@N31DOj2}4G>-4Mlfg?uQ)RX5?yW#2Q32+!nd)bT1Wwe+=$p@ zaH~*a%=!kP5`W9E5o^OOlcyFxkqVkXjP2^*%!uNPU5d=jGEvHbOoYxHG5%JE2Y(ak)O(Gr+)H S;z0joBmdtG|K0;O>@zcn1CAa5 diff --git a/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp b/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp index 93c4f3c88742c3707352898f964916160dcef92e..f823aa0477dbdc330023f131eab4c0129d50126f 100644 GIT binary patch literal 114528 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 MW#eAJ=f4h>cX+6{@Bjb+ literal 114384 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�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 YsKucDTR*UVFL5>3j; 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 EF^?_;R{#J2 literal 114384 zcmV(wKrBIQ-$**EM*#jPM#L zR|O?n>*p$sAqmuZw_8;Yev0LM(%Y%%&Wf{3S4n(B5xBuuX6lql@~o1AuaeR!uXdY# z#$$A*ECK!ch{bB02fp2j+`DMdH4H$sG}U|AH0wRH6bgz)*R7 z^;C}|y7A_)^im&3M68F0xSz(>w2=K6L&Pw#sTN4*pPYbhX@pPD%a~N=)w@_H4OV&* zJy2)AX!c{kPWN+2ij8kj7Ckcm0LNLMFfdf_kUe=eM%mz^kM3=tohnX{#nRu zz16t4al?M%cxF{PG2k`L(M2UWy{W7%5=*zYrjk}5&kD%Ed3=<@^(Wh`8I4zvQ(+f- zc+8q3P)$8o?rjZrWT)NV?=#-^bZG#s0}TxJWb2hWL3n6I(!oTg57 z*FO&B2h^vzc+O|V2W;OPBdl3GWUt?W=xI4DzG+)8+|ScbvGU3Xfi6qxw?(&6vT^f@ z+ewNja(}*nZWK%ZULErsHP}MP`M)qBE4Z8-9a)K96j(zKThJ=m ztcp`#YLzgCEdDV?NC&YiuRY=MNY>+?peAv`sKU%HD-+7z zb=Zqz(jBfV!4dO)>&SY*-C&d?E3I-dLL&iUjSz#9cw7_SR2$2r=~*BA=EBeth#2V| zuKj#YRo>MJEF8q=iLTPxm9Qj55b5Ys98#eU>pY$}vsJV{4Bzckz%`w%kPYQd)oq}3 zQjbC!iX|nCx^qpOu8uW^b2(t|;N?}ZnN`BdOd4s`1U9d9^FVO)?$Ns+P{1lUm4FO~#e2^j)Il~- zwv~}c|D-{xei|`X0+4za6{T<^eRGIXi~SJvu6%tbF?J{A6J6eEXD~R}y4Ze&$9vuF zlJ=`hS#s&%1^}v}SipL;@&m)JdmBOH-YwfKL1UuM$Pes)lvejwq*uaQj32FS$fFb? zRD6tj8eNT+2AHaILi_o5`}DYM^qCMNsl)(NKvp=9gce2&hdPE{CF|`}M0DTHxSI}s zwU>DA^o=8s-$ROM`_>G8{M<_kDTO({J<@%|yd;yCUZf72-+MPiSh%5w8I;ogDvZl^ z;01BVS6|ZAh0CEe$nq#4K=8;k+~;T!!L#k|2rpeOXJa%e9snDyl z8wZggBio;*JCx#;fXrgJ^|}8yErM`vdd{o&Q!ahtZ}eMUD;G{T3|e&pOku1SI$#oR z<*2Tm@1J{Qm57??+NNyfh>rrh_Usg1_(#$l)vGQYs643(*b;^4AdBVnD|!1SBm$ME z;7}=i2Z{NW=b>ybI)5SktvLbR9x3&1=xQ!SOtAwi4hZ@V^!jX%%$R53Pq|V5HC8jp zp2184m0V`dFm|~4v>pjEkQUR*IwJ1ifsp831+A<7VPf*_atS*v*fSZ~TR_hvmmc)G0FR1asBbUx{#52%gh&MR#m z6}gLF)NB@s15?kiWDSM-*&yobrMjwht5vA^w1dcdk24Kvo$-Rpv#z_bvkl_FN3;GM z^N6m#9|#|uOe~Z;#iuMexj21JXnRwwb@h#!M#HwBrBtntZ@EZ_GDzye{Rpk&EAbsR zkMq%4*TNu9Wi|l+qHVm^tP|vC|7z2hJ&-Y%#v%sNC0Ak)rOyF!A~1vO#|t`!RS|tECp?Y* zVL0n#1%R>(Sqovm=$O|vBLc>8ZgC6cIQPp%(C25N1eSt;-8uP0p0}1ZLLPZx*IVg1 zfjYIxT};Qj90Eh{;nR=}T$z~I1zh2E$N-h7!ziR~yWrf)TE5ZpKwPkCMQc9g^BvFw z;Q8OzRdH~>RS+cPtuuke$B^xajc(+{YRO4iGze3M#y1OQTk2pSSLM4*^&gJog+P(m z-&$D#qNe;g`s*0F40Iyc+t7kXb6x~kO-g=?K?9Fme#4b?tes_jq&b|i`#fnEj$RbT zS8P`YYPN+;%;{q z*an5qnQ|2HTVUvlfFL!8bRHNbTX<7A(Ba(yhtqHV;IWWBPhlJr+MpxzmrD3n@f4F~ zFG%L)Nm7mRXk*0P`dcpxvxeloor{nOIX>)M=n-E~-i2BL;lo+eYUp>yh-TGEMe#T6 ziSb{9_Padi7+4S18g?j}Rr$LkNcy@B@ZIITZqmVSqdGYTanXcpASe_uDb*wcsZ zTsS9GCJw@VD5KQK(mXW_KN+&+wgws}cq6y6TYzUe($gCmn8~rkp1;cyq38WkjucS- z$$($CxRv#7W}Sts6{~Am>u??}8%&VBZL`>4(o!#x69U|xx`uF1iG0Cr8JyFZx(s6h z`{lf~#>S!Mzl>nzaUZ7Tbq=u2wO=oSS${(VKowqJ1JLtqf1+d;X|I8&=&|O#kGmzj zJ-UFH=*QBR6!Q&F$=UP`XL6JaR;7d!MGcr_BR3$VKshPPE^E-b;&j?PAFB7OF^sgA zfFH3QLURrXK_+o@To)0lgI+qj;PHUV?}MN;(7l(cZ4A+=183;$tX_p&N11Q^xIy~* z-HkiB8pAM{mpz&4DGtP_k&K^bGwP5h2EjzOkQrOId1Ww5|qPYE!R}jOS ztXN;}JFjNGiYwU}b%b1j)KRWBiU^?2MC&0&&=6Gc2dih4T;-{T6yOz$Tv{)Uw9*u*}6(Oos8~KM(3F3dpX8AW>dC4pWHamz$ZmE-=KPxgqOfC(Ck?kH45btBt?4he=V#Zex>6#*6x2^id250`hl%lSJ|37vM z_QvmiTNOW0DT?H_JSbdjV6`na@q3S5c?j>d3@)TKR^jb6ngKN>AfcHi(NV>Lh8q)s z!+b0{ju~VC=f+?wLfX5YRKBik5u)pDTHYoD+(fp47^Em3>3i1Ia+h$BAIlZ{eU5>L z$gRW;?W3!0MTy{)>of&WvHSLWmwF#29RyLdfxk2)=1=*44>bI@t-SFRTQ+w6Bbx?^l18U>u@H<7+++ZlUdP2Gm7VQ2gZ3>281HP(I)j+(Nm z&d~Rr^K@RV63H?%^oeB@|1=zh9{Fj22qwy0x~=5A4BIDJaN-EIU_2~jK{>5mG$&KK z1LrM5@++wK?s5y`NuU1P*gd?Pp;Wrj;b^l54I%-s%NSh-zcX9E43z*Vqn{!iE100I z6a*}7M$~}V=pZ97h2x@Qci?a^GiCgM!XtE78{WzcvVxTGAt8vyQeQX01tmW$(P-nU zt-k30kPnYL40AtM5bLUeoO^@%6zFL26AFHKsjSv7GbeJFU*su$eCsDPWwS zJu7GVNrsB6opq99=e$%7b|WNrm~-)zD}U-AMXla%3I(|ZqYy!$O%DQIwZ1hS;|d%4 zc0Uwk!+h_k$18AkyEBx1_fZnC4i$5KRo=+kT?Y?hB%V1mS+vWqlcF-ZD>eUvs#5#L!GeZtnQZ11Lf2b4`@=-T1bt_qNtmhgG zf2lxFJh=I6!u+Ge`HJw0kA*EGTwKDP64#xp^*HBp%h(s$wZDTQ7(|f^^nMXQ>){}8 z?Ej2JRjz2!M}+ky(>@*+0AvpJLRVY%D4)fYMT;tuEMWwJj={UHU6rD=XJ-LEl>cEC z&y~?N*EgwAzq%*MjwtHh4)D2_l`PG)M-YPQobDAp=KNJ_G@od!xjCYIv#fc-_iZRg z-h_{UC1gya+XVz6-IK}xm@p8CjM)ZrK+y98-*4XP>YBY~7{b1!U-$3_5Uphj47rCw z!xM(hZ=}K_{eW%K_ph%>q9!2vwd2va9&QJ9aES6WAZ-Pd#C!!~!Q!YI37_WHlB}eBiUp#Pw z22vXX;NI4v+t2Yqsf`Gr6#5_^>&?z$>qAeOIzA7gP=%YPle-+EfWU?cIjHyw)xuz6rHAb|x)VgjF!?lkbomyWsbvW= z1~lAznTdJet4lcGk56JnzxinEp@vC=yfGM;^(Mh5uI)V$OGX@|Z);9X9+TN57U;IA za9^H$x>n*`RyWevXoAnc^~~zyye}8r2+|M~0#^z`a=Yu>&ZVn`oZ&` zRCKlqU6Zck6^dQc>T%{jMMfXJj>8zX5Bu)@{G!#==zf9V9q<*(a)mveN`CNRJ4TNf z%W&lo&z=gMf`AgNJLRN0I5O} zqDRN#r3Qd-oGt-FCmXNm!x8xsl~H@hF)9uHc=(+zT|)PSnoSD$tTDAAH`Ud5<(lT4 zV4Nq^2);mCjQwdf&oV+TvG6wr28bMSAxZ<@1vMb2mo2$P=QZ;B3n4pC3x1kuX}d=| zu#)&dOW|#X;(YHo_La>5goPt9EDqEJ+|MIRI6%aPQ7QYfM(W)O+hDrHs>86S2#Qjn z{}5>T|DClo^f%>H59(EW*GSMG!LUVfI$Jq`GvSqWz7&I5eUp{}sZH~l|8hwS-J%L` zB6f2Ka*xKxt}6q>S6{<5#>VxF(!C;zcXSZ? zd(g{VW&b?EkSJa|5pZ4DZAU_y=+Q3Wk2=fecdbtBKm~xLZcz3%nGGy$RVfly|(=wE^N|O`sxr`<@}d zjyU0Iw*au&f6XF9JH7-E6hH6&)SV(PY7GX*VlJc~Usb-}|-dhDxe--C&`cubW zVieDYDs^Nhv`ipV-q!~c6zdUpW!Ht_nI6*Pu%zr(>&e`7g@H%Mocik!zIH+>8TDa_ zzi;^av_aq^-s=CIhSU+e z!KHx~7s2J_3l6JHVm5WoSgbR&3OKTamw+Xh(jd`wmpxV!F#D-r{o%OnW9^x)(+YtW z;u|}@_;~J(GdJS6hH1LJQQGaJ`(lPs;vx8{N#);-W##O=i3`4Y?U^`mY&{Af2cs4j z2VoJHkYo}Gz!7t?jNjA$3Di8FWRYF|VW7J`vT8vitH|1Xa;62UMp;g|QySkowCZKD2@xohJk zI&(ymZ-+X2pcWgM5B$^yRBl6iTz0-|32WH?5v|t-$sm^Ji%9yr6 zfkE&{m!H29PxS4MS@AzJjZGK}NFBM9dr41tpvyY|GN-PiC^Jl@3MX8<(rfOj$2TBI z>k{?OHa8X+<;s|y^rKXyA&PgKg8_*Abm^8GQ#b@|tD)I;RD=GmAYId&F{{Zx>tb&M ztzQ|#?2s&y`jvHW%$p1_@ET`~kZuj_=X1^kyejsWfpN2xVLI(V5` z4E$TK0IR1YK)yRT2pUapcPH}?mV|v0D2Lo+VvW@nu_4)8!ccPs6`8Bsz(nl>iUO5j zAdmP^^iQ{ei(JEDRGHf#_u9sDW=V#T1+y$unv<_pY|f?+0!==hqX#JPBAnoj=@`Z% zG495Q=^-DgG6Q5m&t)CB#?r!=+ULVGP106o)kKYI<2ekd+)5qMsn?&H*BZCRRA8y< z=%7UjxAp}RvNtTln!dS*{YG8*OdWr1)*wxBZ|s5wPFkV9RqJ^VmkaC?gKS)$Te38M zmymcbspSHV^USSJ$3F#2`XYZ=L}l1*pWg2$q{;WH=!lD-7_GtyKrQumRQFVb&L`ry z6>I>>&Ze8#q)D&8-T`LQ(;m^Bw|~U@nRCl)C6~Y_pD-i%=g$XTE?a4{qnG5!9wlX+ zm4sJS?Ca$VuC0P}n=`E6t}#p8APsin%b*U`I=xMsbLT+3!Wp=7zyXLeNLT6k6OHfq z1|f9>O58=S5TzxeAa$m?RXu+}mCfgSbeo(q@mVJ|Y)HnSO2yL5QiHzrecpiI8o%-~ ztezu1^p4OL*iEFbbIt63*$EJ!y_}(q_30l5QKHW%2xv zdmwW;U^ccTC8krQg4xl@vkIDXCf$;dDSQhIEtJlopK!NCRD3F3 zFS7kYI2MocDS=p#WzGRDZCmTluWA*@qX=;Um0B=HILEqiVeVJ{Vk%HESjRqaBT&_<&i1*i!6o1R*lxt%yNFU2j@k7_q~|R|~Rmc>8);5rh1X!(@!OdeDrS z9=xAA{3xrTjyvXyY*e=)Y!ol^c_Tagpo=Y6Z&eMS4YlBbjvZzHh}R2UzGo46iN#Ow zD9(hBie_B`;O6f^g8*i&MEu`#X*m~b9m!;0EXnmvqa&8D?B3$2x&V>3=#w7&pbRZZ zjdlPCrA^Qh*b`j*+F8W>MOYgfE>|-Gh6t`fGJ}9C`jtAEFk@$f$0REHK zw62OC#KN`P-~B4ynEbHy(0!{GtZScyY>`l<(HRwG@qD^C0YNiroaGng);Ouz4V>`< zi&{?kr*wCnECvnQ=6*@UfH$ZQDVBeDaRft~n>&nH_^Td(_b*d9(8TzvA@e6S z%K1g1mJ*zI@qx?|CEKe!8og~dVm=n9=w6#p@P9Z|X!1U(-Rrg<%&|Im_t=k-S!E{> z=iv&tUk5J_Tt_-y`OKTuwMqSxtfE?Zy}FJ`z+%HnRdx9W<5`EsQ6L>&4ECdt6m7d3Hh5bL`Gjn{Zl66gcfOSDqKR5ed82}xVBBXe^qsCJG^JVcMJs1SXX@?Yd` zS2Q*oG)nI&;d-OZhYi#+eMP6n4XhpLVKJ_MlmVd*gwDa+G_*IMZU=2?U?%2sNm8V2 zMVF))*7N-=0(-rh2X$0^A>d+lPxO-V80yxuRaW}XXd~}ZSAQis8?$clj9tq$U`?qF zaMpi=cwuw-d>RlTWoUPqhoTS*{n+#@de+((*pMB0fC%nV4tRZi#MV zbdLO(Iaf|yz@g-M_9aFVR@ATZ>Qcedt`Y#VLVt2`ZwhP1b(PF}RDeQE&vd)b5t3&0?k#gfDG z&l0@yZXbM~x+chm!#~YVFYCNuV#n61qCSc9)NrLt1r{Ggq_WQ$Y zOMmNE^5Wf(O6`$^h$|pQKL|oQiWx;$Tlkr;c18C0m>()Pa4N#77bR?d`h-m86ULfl7&e92mx^Z1 z7|^?cU}*V0lpRs*&-kK2IVF9#0e=t>n4t5K5S6BZlzPeBoI#Xf@!_W|n1{R8<}ZLT8;pv4Psa>z|9v4X zY%#eWX$sfC9d&$_ys==&VL9o4Gp?O!pMm=b{}|_s8{C`c=BrCy@^7D*Pfq^ zNm8YwXUVjA1ibF5iKN{hc1`0N-H7AGNM2e)B}DwZTb3aqfOiUoYH(iL1{(Fd9Z*E} zXl-y)J#499lrU8zTe9TcUl0p_33o-q!5ug_WTZyT^sWd(Ft8g?+vYtPlHX}?T=Doj z%&IE4%Hp31zSg5%s1;cA2F$t)H3w{tyU1tK(C?{1?uS# z7lt;MnN9kmTuM9si7xv86reGQCuZl=;n}MfGe~GPcVxQaE&=%`FuS@zJ5-+&?>2C; z>iB8Pie<#ODKkzg8~y)?xKhfsN-nf<>`ETIL?%RuR5g{fA2sw*zGXx;kTo;o)ly$H zRh{kfm)<4V>96gIf6^UN^`cxEcaYek4#+P$^e89i<(63eeK-RBfB zRrFHoB*Jag^azsee^<(@txlF@-TeRvWKwn@=g zdQ}aNTGi?Z@`#SQ;1BIbWDA1R=3tjfR_#$Ru=H@)t=(OEHwghWdAg4~y<^@6i)@;!EWm$>@Ydt}c*i11vvFyN;Wx4WYZl1TfGz?Q2~c;VuvfXU z56-_NJAmF$3K9dTi|f*&h{ooqD2xUq8p@q+YCcIt<@`DA#2u00_QR{Ok;0H+^D$~} zMSa`u~-;SG^&LOa>X2UM(P)wajC9N3 z$VQa+-+=b)gK}1r=!s-fj?-bWPsM3JjeZ0iZ%VOMJOAe5i=Cx<1ctY6ie^g~kO zGQ7N!n>C@#F3ZJ(d3*Y1T2%q)?>LL|Wk<00X40?3DQwt#I~Hy_QlB=IJ|EZwbA286 zMeB{S&aAEj5gs|E%Dls%Xide#*MEXrdL%p$xG9Li_qV@Zvq_AAQbU3EZKRb4?M`YF zBhvWH``UN-%^<>$AiD-oScJWL(HFo>YfHsR}B#5X$_R<+B4_gY^{N(^-IJSF)D&CL+bXXa|( z75oriPf`C%j1SUa>_@(9<|%ONwvNRADphJTsF#DAoi(#e@{hH^G^jY%?%LS*@m0x_ z+&Ww1EvH#;n53?!SfpSd4&^R1lk20SoFq@IQg7NbnR8DiF!sQ9=7?FF4P&{bM3zXb@O~8$KOFfxiR&DSgAU zx-+Ijc|l?AVo`#9;p4d|;B6YcgP{FgL(ebBIA>W_UIpc;a@Yx_>8Ij@3xOQ)blhzt z`g^U>I&F4aGr4#%HSyLe#*z@i+@@M_xxkVs>d+S9a89ocAHvREjK->Q7b+r??Cu4t z_pZ_wL@=1;q`&@snOzOt$86iM`OMZY>R8unc;Cwd=Yc@mo^%kI2))J)!vGcTaE}k> z4+Op>rv?@IID{|9b%Y4-&p7G|_7Sp9zrZDRmSkE#KoVxLn~|J(s~;2&C#|lQ+*$ zdxMr{tK-DhDSBpbi|4jyL-NbIATU6|vcxRv%QhiK;(k#$AVtgxLexXQ{~Yt@ti8W% zlnrQudKeof7n*1xrZpy`wVV+VJ^8YE6?|ljB|q%Be>7DTI&+{A_UsH*`JHNaa`eZ^ z&FZSKU>+X2GLWe4JFhG@z19r~N0iQ9Dm_16i-4MNSq^{C`J4+3Z1J2@c|!=ZC><*~ zang)?fjWVRuTMaSZh$&XJowyt>qJ_A@ z-4c~b{ zFOma~2WKKmUt1Lq6Z44O7^DRy43W<3S*{aSwAHt1|_LgtYe+Gd+` zWZaJ`a@ZzH7&1G}sb+6GPZBJ`Q)M=7RZiYedoN4Nn9M&9zE(H}(U>@K7@eu9`=O~_ z;_}(lM8jpBN@{=N&#(!dezA-1rEs7pe9qTXi88roNE?_WR048@D7M!&$JQ1vjbUNy zVAh4Ho49ukah~jLWknDY{s=n`#N^uW40H(gA717bm+AZ9pciKWS)* zI8(LkB>12NEH=VvmluN6>81I>OqBhzv~qfSrspt@d2S*Upil40!Eft==&cEQ`2!Zi zp_xmLRLC#EK^vxV@iI4I_V&wE>`NHdMg0|}g2eiPv!|7%h(bas*P|-tKgnMfO+LqN zvgHjEVUN8a3m5|;qgeN-;5{T9^Y{3jXWQwovkDNxdJl4g?TtN7d@4-lw^ZZKjK_XY zE;IC*l}4l4(e~Or_NRzxWs>u$yQc|B1OU_6xHCRzF6zt@w>5yTD!$J@1o%INBNl8e*On`D9dZGub)PyaB6r7?-%c zp||tO<3r*M!QQ~*qBlASiZnxeuQZ3_?x=@7z&CI5@{rrHW_WNuMP7xpsyT0Pj{05{ zp;^;|=(2}D^dFiU(~MbLpt3@AX>1xYQ7sxd{tr=EC_Xmr$9hC*DF{FTZGRIqyivGD z42@~rHSjY~N%xc+EJ(}6y*PJDh3XwJ8y&!A!^<48x(1}y!5ZWfISh-RC=Sc$)--%j zyqI(^r%WtqJQIEO1{euQFaIpC!_*s}KxXl{j4D4U+1muS5xqU3Hg44RoaQJzTo*FW7y(%<5G=%`nsR!j*aM%g1nojr}nL<`SGdQjv~^M(!F#0Vp+ zQ}nH$ujTs8x^v$RMfN1zy#H#n`2K`b4<(L}otA{GqI*_I<<;nCmDhEalNZ%{xu<7cmw7X-? zIU^Sw-&SHJr5cI2FBk%{b`R)fP=>7T&Q|;c$p;JxU;MlqS|X}Pnen`nWxK3Emk5!I z{>|8PJbSNp2K5)UP9s zpdS8Njm`Z?TBneo0i$lc+n=AgATWibazE{+?V%2Eu{#-f^{}ZRD$U?4lMyzcui1Lc zp@Wu^gmr%BNC8*#ub%TQop^cNOXlV$k)t7wg5-rgL>Q8@)7vrVBQo?!!s2zEK-M1}6(E6Bd}Lw;8I*9|a6@mwjjDcH?6J9W35ShygRe55chDfO1CUKyl=)l2@dRZK~4bEuyR9Sc5O6td=3~*lC?9I>xNUPjb|~C1({jS zi>5+o%2URMKuKQ2`RTv*eI5dTY|AspOvjzFpND>)>vR%FaNI5Y^u!AF7t|t_ObUg= zAgSd(-L{dYq(|H9jSeRZRc<-ua@FJ6-E&tlgu$)t6#J=#gxO0xJL5fU(dKtuQn7I5 z45t4~6D>RRcM94pgu_i6sTH6LY!E^Wh&rA)vwOU~FHHi=y#wb1fmbE4520qZ1j!=F1qdrkiIKGEWXI z>r%pCy!U^`BtE@gv<0LG_Ogc-MI=zephBN{R1`4jh^`;pOwLl41PFMEgDjspPk-@3 zlcC@yYuR8oR@o2cCsL$INDQpOm;xyB5GdMCleHn<-#ut+^`p!|0v}$^7n9R@v6&vChsNgZO6GESsvZc^%cCmrsRd#uaE!heKyb$#5pz^Kg-0Boq-P z#ysCkxj%0pn!>94V(@L49gaB9sbjcN=8aWWJt$h)%@)FfFby)EaByK#lqZA%FflS+ zZn$TVj)!jrY?oZ;O@Ky8dr%ymDzvhHq#2@$?=Hv%a3EEj>{RRA zuO|ZulejZr`dvsfv_(WkY~r-LV|`A*dl^|Jz#57G3q;bm6i(cmOV9zuDX7=Iw91eT ztN(NK9#LcH1IqsDM6!ipUaJcg-RPl;0M3EJ+0tdmki&TLMR(@JuTn5FJ^*HrvSJDBgbaG@mYz8^%;7>o)(V0$9`QlMdNiuBNeya1sTC2XlHRMPIxkp`&2;W5y+lT31Z|2@f6+mehdj`&tw3K%Ch`FDa85n81!X_FLn7m2l?jkC9 zNsO)10vg6-dHNl3A;n|S8DHQYinNYH%o!Ki_Uh0zBEkqDC{s1L-m%M zN@~a;r``KNpGIm4>RP@+ z#Gy4Y!ia78gohg^Wn{jzWB*O|qT<(wgF3aT?Q&EN6;>&W6tt;^H~_z16WK!{n;hN+REqS)EdK0R z(=w_9DfZ$0&UPn2puZ+QLq*)Sim@L>suk6|#b%>-0@AJlz4GjZA!*@_I*f%EqnLiA zho6ftQ*eo?YZIU*X|&z$CNj(h-NtcT5d#THuiFke5`h;n-OId9g5Xpg0gU1ozN8$q zPGbEL!f2hP({UEVBDmUL4}e~Hc%J}g)xy=mBHW9Eo+?W~BHD5~fA(uOO_GFO zh-uDM1`h5}w8aQ*tCF448xiVgA&Gp}}}0RD>DCwLMFyR+FMo!Hd9hZ$m)IYc2Rp zVUNG(igKh1gQwfyArm9xnUK@l6cTrp6y=L0nm3;}8sQr~Gq+q1w@=-<#{rEK-enWj zT4JUz*B+=G^-{^8%HkS#>B?ZefUgYQ99uLh>^JXeKwHKAnO@pWs;$O?vZnFPim1gC ztmrFHNTJ!K3yY!hFUN8N{`0fmcgbR5ta^IC6lj3Z2owK93p1lHux;bW|}M>xZn&_ewZh&oCOM z;~IJT3v>Iutz1NI!R~QfDvLW-v&ecWnV4Xt`+G9~p)Q{baVN|E4!E2tlS7_3hKYsE zC#aZRORvjal`op_z0Nl@dr66fhbz;Mu?u}($ za1gnEi=t+UNqUP3rX|CJM)6rW3+tTIgHt;k%h|h8iR77xe&5#iEiu2>H&=@viRKp1 zz6LVyE6iziVj3^I_GV0+_UkvZ{=v|!zNTmfLD zU=V5t-=>Jf$Zlg+#5sNBRvK$b|&}!`6iKFf;Cef{7MJB-vpRWgY)Jcet_oGTYr=!e%%VSe6Tx>9$B9 zE@jDq{0s~v-0*CEQv3G$w_?Mwq-tpRnj||c^)ia2q4YbS^AY$S2ilIfrIGl;!O+m= zwZ?oULv|OqW&0IO5VOIRG8UY<#O=9zM6gJ#bU;nCN9Z1fB1n#n^*xvdJ@mtVj~*33 z(tlSP$S&4R#XjhD75nVKc_V2gx-M-As=ucbP7sU&Kf`Mzp<<8*i(EK!Fz4r{j!nZ9 zIyC!opu3ZF_L~MlC33?w9BJ~>2(KN7akIPV$=z+6KO9`!tT|09@(petiQ2Ls7M#er z>Mj&!PGHo);a1kzx{2}GHgEm7*THM8HsX@=kMHmwfJQa?b!edlVoX!5K))uiB85PF z%5Jd;%}Cx-9uS2bDId8lips91h4;Z~KUM334q3UAN>Gx-C)>z0H_AMEKxxLDW;WT} zwd>ndd7%dMn-H2*Xd6^GTudK@lA10SZi#^B()p}Zk5mtS^-jU&Q_c9Mp5p;o%1S}e zy>iQj2UH(B+EoczBeH0I|!E0OWCC@ljUh+vn4 zI*DA)T-<`chzJE`vk)q2g>bGCl#`LzFQXj!2@6%4YfEQELwIM`d#(k`1bfzI6Xmk$ z@zc?x35?T@>QT2aAbk-Jg*5N$d>tE}jwVnGDZ7sV(i#;+VL5LB;gKvm>+o6>d1O)2d=HIw zr!<|=m?Mx|lz%dx;7*ahk?`{Mtvbx0KE2)!d#dV~B+{?R-TZL81ciS+zH)*6Dih7_ zia(gZ|cTzpegqj zw5r}zA5ZB!9xv_T2E~Z3%EfH(>^H1Jpwb9}@sxRkRz5SkWQdT}PLY5az+>o%b&Hhq zd9ON#YJu_2Hsgl7;9+lLaS&ZOIWR+L8r0`LF3R8Hxg5_x}_#Y*1apEi2g>%er* zSFy|GiF5!H_58l%g~=JJe`nyJDK@0U#C4h1 zu?l-0bzniBMx-1l{ly^ogclx5@KCI+CsWE7K^Y2+B2s{Rl@*dKi5WdIC2MQfOCeSu z696TJ{~p2vv2aRm@Lri@k(%D6h2;I>$oFb=T;~@!`RUM0_Prd^yoJ)i|;3YLOIeiM1&lUxdUT+C8+4jRaQcW#% zLTs|}s6IK!V?3njQt%hKs3_J?5E`&{Ib~Jxg;bP3d}perZM|hFVR_EY5ADY7E+uh3 zyJjExVmKO29q<5?!KIGmR+{nN0_VyhsVosiG%kV(mmUqIMEQ63l?r#9+*sHTWs7Nh`FG}rgK!T3~TvZsEQm=PQpcw zEF~uzWr@ws8U^BnrTQ@8Nr`Hon10>mUiiCi<}-2CDZi#{|7L3I_*MttY~0POm2Me1 z;x02|l_^#pyh#aUP(BGm`7*JTaSM%v>Ode@q?d_i@bJrcgI4YX$-1I1FTgb*bE<2k z%`Wb(x*RDdRZEzTOL(l#!R|o9zFTAd-%9}-8&d8GuXkxt!0LXwynh_v)m}IGhGU0C z>G+S|)M66&9Y|3=c18Wz4e;?~v%PWXxCG_L9pr_VNs#5dW$!-zqew@d33M8BJr3_| z9WIl+^b5a}&5=o3BOYz(TbvD{0jH>6AaQ6p3J9QB+Int(HTM@09XYTSMS&O9YBA%j zeor71xC|EyA7V4C1h(Dlv>nQ0J3miFmB97!jQwlSbrrgMMa7P1)Hd}lm-t5dczKE0 zY{3C}>%)|Nx17Wu2tmyVy(W)|K1$f%H04=2u_{yvPJ_B;x}snRHkw+58?sce$M69| zSm41JTBt*zr_TMKu*vEKv#anH#n$G!M(&WU-WTFmXh;BGX3hZVktHY%1vmrAx)nFYHa`GoJOi$D21$19Qrp zoYagXEZ!t%DCS8*4AGx=Y9THy#l;N`x?tj60i5eBh}?1x1iiaXBH$e-dvfy(gL) zXpSZ{V8PHMUs1;!g;iNfY-69KWO%+I#}%JqG_;@VGdMlI)-T^@ zRr6POm2x(6%3{wP;4=N}|B0~{kU{Cv1SNmjft#>{K`#=G$3mXdsPV6bts zeLaUbB7*xGmROxD$X^dLudhf2SJUq4eJ=J{f?rIRFbGMw)eRs=M7dcg4!%>b2$tnvT~fQTc8T_Pk`sT7Ha$YA)Ac>eo#HURJ-LDO#UKw5 zuCmwMfU=}#j!+T8p059I=#ljYJ0k{C&v6+LNBT~AaO{t-7)Pil5P)T!?`1CDgrc!zz-=%Tvzl1iZTZw}jS zQe8+`ARqjiGUfg0yi0T`K^FQ|jG*}9D~6+ul&Y8j_ z!NWd7ZPH|zrre9Qkm*S?kJlU_>G_6!T@{e9ect(Rqt}V5o*08;8YSnhAXFtyQQ3#h z_o)J*-+siDPNT@G{(ax*E=s7-A=?JUV;9WBJ4~(e)x$%Ny=sAQ71kU!?Agz#qV6?p z2!#JqHKuv(pICcqz@@D;KHn{;ed;CXT~LA}Gz|TR&4J4`Hx(VD7v(FpKmEv_*^g#O z_7XjnRQ0LOCxt6KxmV^#$bVIiJ|ZqkaB_+cdfY(=LT+6kRR>Z<$BZT7j5h}(@_jDH zr$L_a<9Pg?CPO!&K1$sqGIKmc-$_&eaR8tUsTb+Ie)}%5LJ8|72;!S=uMN2I?y4Z& zhZ{CFzLSwgaafwY19t+`hP0>BANVhs-#WFvvoE@{Ib)-^!CaD=*_;y3oz9%q{7_~F z37&Wpu(=(S4OSwP;OVG;rADv)Q~#zfwl23OVy&XaOryq_i!eg=|x}>JPUR z>&4=G)hvy~twT_*i{Y75x0GQi4fVbpN6~c$_|RnO!aZ!9g~R1^Yty$b%m{tv$k_z! zpy%ly|6DP@)QmH2=t_1xjHYJGLxV~WyD3z@p+B?n>p!TqI;m6q)7|GYFgN%%E=Bq_ zAc8y|9w76Ln+7dC&-`j>rbgn5cV^+fW#e(N`)K$nNPvVH`1j%Nr=_j}Ea2FWiZ+Faj$w#91KAG^Ohv> z$Ke__i;q3yyTRrUnxcPfxQ*_dSy`vHfhOG;4?a{u2@nH}zLL(EQ3UvCsy+O9h3D;* zrR283QLXXaMr5*qD`)U3^D)IA=h(bfZo~iDZR6w|9SB`0oVy-OHAR?eaYC!FWs+*CA*kgt!FJ0(c)<9Y+{{7Sl!FSVuaOIvO_5x#aGY@?6}Z`vf4m7Te{#4|O7 zf!X;VboHY@o>qS&{U{&qNg#$?(w0Te=_ZCXV_C+u9IZPj?TCY5Mk3jLb)Oj{j%B$m z(FN!9iPyROYMQit&quabPCnpTkZxJ*Tx43#rK!`f#wN(>B+_hcSgsZh2`oI$#>YPX zIlKpy63Mg|$3MUE)rR^o;hef00Z*HNzk%R_aJ{&DJb&fsx*?vVis zi7rRETC|!;5Yo&l(V$DkA$1zKrZtYu0xmiSH`oN>nUBijox{PJPtGph6fty=K3L03 zA-{Q%y^DL~vZK>;(~{?5NV)8srf#W~gCl#SJR#TImzBEz@4}rF(buo-=WCuNAGYFi z421u0pUY_DBTA#@XHV82SSiEEaQ6w}JSbnzyOCdoWe){J0}KpW)Tq?Hw8N!d1!w0! zr`<3=*%F?5#Xar!z4kpG5@1=rx(U;%^R z7mN;IY zsq*CJ+fX_PW*{jdsAAk&N^f2Tq(p-QZ=9lSKA$SZG9Afb|X&JiMJXXfH!x+5W))1p|34Ir&4OEg-M3-(~jj_fb+V#;-Bg;AlYJ_agzi z`7p2bN6r5qwzw=Dm$!TenS>S*_2!HP+u5h=D4K12JwhS8XhO7%yr|tN#-wufLthI# zK&`dhGq|UO0oaz}U%JuV!cQ)SLQ(RPB6-GM(1zrEB5A$!yEK>1=E@42d{2u{dqUPI zV?X)9>)7L#-}NE^0ya*I40?0`J4aJ-SJwrBbJ9aZx{##%7kLA^w@FIor6?HTszBhZ z&4{5H&ZZKJsF5cxZWCu=$N}wm6!O(vA-wD3PT+_xY-7<~>nM9A4jzs!YFvzmoA$cz zwiMwdKY(%?7Ved(hK_D;sWa;mik1_=@#5rl&=$#ILKn=~_%qKRPRHPVOEkOMTyNLw zJmjY$Ox@qgM72ud8R$$88EQ@(tJr$`j0~n>A4X2u_~n9o`M`tO48=V|0#rg_xjR`T z{D85{jBU-f2}bePYsYxr%akr=X5Hg|C2Z9E4tCze125ASwt*%GP7}RJYh!5rV`fLcB zGtOZ0PA7%6dgBS*(&SF2Sg85uH_G{(`sJR1d0sWGUhkKgKeiT>f%qLi(s%W!vFQC- z3X3hgq|(ZoFdblEU4M3=CZdM#5~k!JVPxtJ#zB1beX4?IR0Dr;d~WNEir|Z9x@SZj zj*HG?#&pa19(TYmSxa?x1x*^gO+7u@k35DZ&<(br z2vBG>z%i*2R+XULplnEWbdb?CM0_QtyAn%2{sALghr+gGum32?WbIL`)Nx6e3J7rd zP+$9y{^KVtOgjGP-YugYb$8`yLyhv5>| zZth8+qG8wRZ^+cd6X{hDmE9?k+9JY_fUu{SI~=4k*9=G*Ef5Wim5mQJJ8!WOZg+h4 zTXn$GA?=}N>f4HdbS$AfhIKc?YuGnp`3jJ`q0AkbdiFau)G>_?qjcYZk3$$%$&A{wV(bw4?ec`wKxYSr8;<(zenPLu;(T)81DW#Y~jQwEc-?i-D8=d6dr zIs=E}oT*O?=nPNUZ*bGx(N8w%nseZ#u*ekZWz}V>P_yI_&6~;5G~XnG8&&pi%AK8? zU4|$aQAZV?xoUHPmh%kNewbGU(0h~m6E>h4m|vq+5M8oLgiL(=S+>@JB7}vU5Un0y zkv)@Ynkz|KvY3nM;O2mA%HHC~fx*K2CcCTIm@0BQCzB1K#A|MlQqDO{H57D=1jiWm z7PjLA_yAH`a(#SBI7GEiPf21IQg(si%x~z|{{Sl!sCb(CWdS9KtCG?ERpGOtG2 z(m38o(jiTS#0$2&(e=L`tySl{enVq?>r)!+Di?T4DjlB@rQl|GNb`a5*mco0{`4B{ z7Tn_*>1E7EW{*y05Q0B$vcbp*DZB+HK2kExsBcJjcqq>#S@J?)=(P?YD)A_;=(+Vu0{N<|T5onXDd3!v?Anjml{nQ^RBcA3 z`O%yc`9lSfk40LKH_^x0E|~T3nv;hT+t$J=1$@yqa;W>yLs`L{z+~M7*8zvx_$OMz zEk8#K$b9E&Mg<%?`%86m(<5-`OmnimaOF$?yoMHD_^{+sL_aEt7SjCo=Myw3rOHG4 zgCls^ViIodQl)yrtz=yl6>NfaRoSf4P5mfUW^L&8F#y#@QC!vdGNijXM|&5^Mw)xy z&S*cU->`M(Ik?*h`IopAX&|3J&a=_51mG+=qSVXae1*?!ot`y%4ZJFwxa;=H)7w!uo5XhLzP zNwiMDN!)bjmhWNeS2f4_03KOJAUm0%D94Jro#HzKCNFsN3$OO`yOco$ca84$GHwlU z^NrRfQ5;nF@^!b`in#g6?kv1|iqn?CE{6?(t0SeOt^ugxu7lT4TLsXms1Urun#5B~ z6R{?fFa{m=eg*_H#ca@l_Y5d-IO-- z!fH~^%sz}5-$}1_NPAr@%;33885u|feck{TXGmTB#IclAAf^ZylmezFr3k@k@x&sW zGLH@cZ@kl1bG*Z+;%;qzC>-wwE>9fF8cz(SjNIcYj9Eh>fHt1rnSzakT`@W<|S&&7MLo-#nkSf*N$OIN)@oYj~1yYmc zd>BX=nl51#GT%GOQH!~gAzko&g`p-@3}?NHoGcW`mvzGDvot{xI7!p6^g~BnB`e~X zZ+GmL^QpjGo^TnsqYno)YPlC~h-LE`s>J9>apkLl0C)NQSvpZ?lD$=np*J}+B^xB< z=htG1OlQU!&67sWmLD}U6~V}o$8L9z@XI{kR!7V1_^#Wh;eSq^I>zyLz@B2#Z3eoS z=z@^|y}YUO@jS6#h4U@lDU8fEUFT`7@$_Nw;ETTInTJyEbvT{gw@&9hFBgH7;<^_r zMBy9Eg+G_4r;M<7J^!2UT*^!pnZp?IvK(MaC5|8w;6l)UM_@8sWW_Hfk4WLp@`y=L zb|**ZhU`$vyHJQ-w)0k#xL-m|ME;bS21%A9zVnw))L#;IW^u5IUTC1pEw$+7RNNW6 zJucCjLtt<5rfkJ!ICksMBS=9G3OeNk{*;Lme&o$Q3}SxovLzjG1G>!(B5C8iDe2;^ z+4X6yl(Q+n;vw18l@2uMkPLa`uvfX1aK;(r7?nO@DMXdRzl%j*7o)*p@-UQ+g+K&d@hsQ5~| z-mB;I4fh9Zs=!C@C_T6~Z$VAH2Nqx?>%T#)wDym;kbpP<)~GoKKS&eQ2dG{Nq?G8= zLCxkxFUGIvL4ry>*J6e(N!UMp*KB>vzJ?rRuvu@(oOJDCkZ*{0*g`zHK zK5Jv4*C_rUy!Vm0_K+;8Lln(r`tfYz5i+N2%&nr79W8HFzflo$qH9>rM zJa+N%oSCkp^;Ul-kzcz#2cJrC{8^l_l#ZWXCkXc(f9k70q%u6wzmU3)E5E&AzZ0`+ z*I2<8#bdyYYt8@0GFGs|D2f9pI9|yaRtFj#l?{t%RGIa36;!DGkCKSf{@vsiXJ~T( zfkY#rE7#N?PQ+I`8$dhea7q*MSBBL<&7CGXv{l+wkATRSlFLu%P!ymjbO7sDFxwU9ed%b zLl56epG(;R)&=DP5*+|R=bQ;`&9fLAuOCRW15gKTL90Qf#T_A2tVxNijT7S)Sz?4TXETvGfP`&d7TH$9A7hqiUsM8h*zg|gPgXIACP`xKZQc8gt z1e>WbWw0GgSig{NZOATM2*II8j~b?@A?46Ao-Zeu-T;|~?1B1e!zG!k)}qn`t7RYH zr(x{H?Y_+$uX3I*%BEe0e6EF{I1?9&DaQ6loW${q#mrVm2 zee1uW%DZ`L9r{Q$k2fTrj(WKzed(`weFhLro6>afnduny^EKGzaQ3m8nR5ZA+lhH3 zSzb%R+|qrbRS=}sYM$c?1Ei+iNp@k&Vz?L;4-wlM)=zTi*IpO=%Z;!lF>Z_-2YhwKvLIi?Bk%1$tr}JsF}2ng2M;-bY!D@D zfA=^$0UOxiW-4}H%(A)wJ9Gl3lJ8lUeND>@O|B%jIa{Je&x~#obtAWyMhM<@sQmoa z;CQ?YMF^hdmOL2C=h^LsX%Zq+fTX1NFF){X9;9$V7|f}l4h*!lmq<#n>-h&Qm@@p1 zTgm_c8P#kHn^=ds5daHVBc6&&sfI4=% z%=Q{Q7b)GCtl2SAOYF2b8dLf`I&V4AG6?HmHD477?oMV=GX;bX(<~;{SBn2T55d!V zdVryfp7=lE!OH=i0pS2DKRY!#|HD{Xj(q_%8%yS$ zc@5DfGi_hRHEYk)$j!k%nCGNr?sCm=(IM*Y_vflF&ax5UUu$GDas^7f#dNnf1}hJ_ z2xBtW61AgpOk#oBpL{D8W{wE^9PW!ZlX#<-&|k){JE`@`=)9_8#P2VsSv&398F* z)~cx7%uV~sC)t{-IqLi>598#8$O%o{y$9yX@cdB=It+Df99)r$Z9u~Z0LvkQXv#mH1WrtxtE7*c`Q&rqsuS#+yj4t4t{CL&+aa z8*YpZ5G3VTp`_RRd5)kIvfcUd^H`k9kf>QVy4SH7AurWPrc;Xg!f?Rnoi4$6fjt<; z`m_mwhPxAz*?h4t;4;6_2=t+y^9aeGIMF6p32+arVd_7usyBwNc@E?h z7{o-Nef)#8K_u7L25I?w20}ilf)j`GP=P>lWx5?OV$0zfcX;u2I`pXc4Dxd;L=h^c zHanUmAnkqtbIz|^+zihNPqsv1JSIr1TJac8)A5xL~6)=BV*+z^B#VYhL zgT7(u-l!fHsOYDJm~NB~VY&tckp~?FlKMB4LaAktn5=vcxK*~zm0Unj8$CoACT60o+$YdrJA zoSF^Gj9z^uMy=N(<(#jH;KMl(22;5ClTIq3Eh6+qV8}u6jto9w+mt`G-z9fCmoD+% zT7I}=d>hK)y3{}~@Yql&Sw$g+pQ8m=-K4dHYh%onQSi#*udMGPN2hD~vOwI*8yjBy zCOpNmj5Ls5977IkG}ax)48C6P1_|8Qt~7j-DX^opTD9&lJz>Vs9Il}{9(~3THdM6) zc~L`z2gx8}6J|8}R2nXX#A`>*+b}TfAcw-HxuyUElcUY=cebhTpDBcmue4z(L+m5R z^)EOW7PJ`_`Z)Dw_KtVdUWsmzGyl7WGFN=|&lYU7Ny1hsuL{j@TZRgPu{P<%JN1XM zPW}G|n(-u4R0++Y(lU&&IOW~%l6z;z--yT1X z#gVQHp?IuFHyUpBCs)p?|3Gg}IJRy~k7+wyhUuWE8+c9)H4Gk!^ASX7{6lFh2myHwdxLU0XCwa7egUfmK zOfw8h@9SAfzY(2&cZrm(`)OMukdN>6B->~+6PBm91`mmYUYM=kEYV@25^dR344N3a zU>!)X7rEn^_VnrF(gpX*;I!0-CuBIx|D)Av&CHB&0i)T>y%`-h7ek@KH~yFN92<8g z>i1zcSeN01Wo~l_KVKd_ zTGI?X&HdQ*)sIBlEKc1Ua&vSjsXgNkYH)30#ncxc@^a%P&}UjR-MxK-G232#e1w0d zzxKup7*+ZtUH<0<{q})1JH3;j+Pn>=R^p0(7*5@^HhC@$^={bBkmv_s9uoE5}AwMQ5+{Z>R$zMlVi8lExun?PbO>+}_U24=ARxUiuH>VBSE0(TF5gPH;Ab_RIhm5yH^$HA$PEJO(pne$} zfavk02`jsUUqyM{m=ZN>1S)1>`9?@7EBzR%lsEQa8H|cAI0vJTVRr=q3!rBMm8TBY zYLA5yBd}`J#4(w%&iZ5lGVhg`m+4az)f0#3GhOf&E0sHuw#hr<^1(nW>Gg)0)P8AH zBm!d1<2Fb@#T~4nQLcMQ1m~gJlebf5+wrx5D9=VXPwsSIEZ|->KJV=-L@Y}p1Fs8G zY0}nC_?&dYrx2T^0Az^Gf*It&UnMLrY!p;ib;U{gZ%5ED4ADLF<)0-%Lg!dYeLVx9 zHFNqDb$!#53k{FfNqGD%a(1?QAH`Ex*5Vkhys?gb9lcP95Szbn+MAgz9sTFCDB2V4 zgnk7l*j;AY{Y0sv@s8M?nBzPUV61MoSSh}sC(4VVhE^B1*KJn=;@!HoGf-_SiCav@3w6LUZQDSlxXKRh1R&?{ngn-#`qhVJ9A@vLwAxJYlX0bUT3}f%vLy`S ztKbG=>0*k{?XzM-3yXoOE}#l#Di;M3yjO0SHQ`5Ll=!2Vp^-N4pGjWS`xjyA5|DK~ z_Fxr|cy*aO6D^9l3?svUv)V1lB2zU!wXzWl0(2jp2ys>z6_-`LsHRm6BLU416y$I-8Z6?O z2W=gmcfhl1$??B}d}5cj&H6IUgl*4eIH+PCoGrg$dw_StpwIhX45< zeNXh1)_~?+;rfV7!AghQMaQr|;#mRXYs)0MXqDj9F8?j6>z2BXkQB{SVi9@47oFAL zVJ%tG@qogKRJ6~>RPeLpz`n-E_ZGr=&-88Bg}rp9$Nr2*rkn-h_}xaEZtLx=eOvsU ze`=Q}zbg;(7ekz@*xfJ-IT{3paX`mCJqA65(uQR~dSWmqQ)D77{Y*W{4)$opsJL@? zH=>AqX}<*ltA>Su^Z3xlmi+fw>`BR!f*xY&<6O$K4_*x6W})CAp=WW}z-GK_l7#Sw zYwHp6zuMX?gL$ljNhF*y8kNy6GG`!^lOfgZOHUJ}8i{IkLXyu@m_sGZ#9ng}ABL5} z$lzm@pQz5~g54s|#Wym>n)9A$3I-`M-W4&lT#2ivEqp& z4REcQ4ZKP=4PBt>O@Hx5gycq}UjEf(4fy1S&Q=HDl;%fq_9gQ~VcmqYU4C^|a92EZ zm7jJ}GdjHlFBpF(p}wz5U^?W#tWfv2-{?b9G+-|foizI*5!Ntc8Sc4c>gewvymtr# zKu;fhZb>)7PLYaM`gI!TB^NkLO`;_5+1ovN$%~Vze0=5M%qSQSxY-GuS7f6RpTWxv zL}@eerw|0A3JNQaL~u zs`OoDt&{DhQ1`GmaePqXFh>^IYrN{x^?{rkHT=bkMW_~FVn_Z02qbc3IDQ{zN_{Fb%AT<1+lAu3AZK#|@xz|A!tQ#GCLQbn`2fUVl|kDMCIYr!FsFOCPt& zVwxUcD#A%Qw3IP9#IK_k)w=1z=)&j7vQG7p*zxXlAo6b+Pv$bx9~paW4%EWerNJtz zVn_62*@~oV(dQz(UAd0W?wM)R7C;{DT0c=8(3X~W*Pet8g~~D+;|*pVwC>R8r_69| z-{qwKbpuPE5#HS63_{PjqqKGxSTvEe4|Awi8Wd3I)I%h6xTi08T8SIVC0mL!9zE-n ztjJ18{h=Z`xpvo?>dh*;Sf3H954vm$JGh z9QT2+nk8afjY9NEjs6Uf2@N3W!2~bx1bjo3Qz}q_^=(Iu+PYx>xl{0Q=@H#F&dyy% za6G%$`1>l!o9e>?8{Z#-bjRs!NcjI0X<)b346GwWxzqs36k;0^2MHVsg^uJL<(!-F zH?hlXKEQr-$$~Y6ee-8(GM4OMw$9fN)xb6E&N6HY;B0+iVs8ph0h&rM6&gSNw=(Am z6pkjoYrT+7IL2;K+E;53>8STR*1eb{NW5SN0<)Qy8hyoEyR|8likTT}NFB-(7(-(m z&3E!ZcZ-BY@?nuW@L}d(mFDs!rmk})@$9xD5x2_B)AoVl-?txcp@_7;D6Q2>J1GT5 zAY4{2AlBWZL%$r?-{Hf7&e;~l$+LWTIcy%3_@2SHc`9Gt)(;+@N-Yxt?@)HUGU$0@up1uF^AD z*BI@!Fa7)7i3uZ$upLu6vu&0J#~u>aFF+spuSk|clW-hFyRF=TZ^+TWju=GumAkH(g zRr4AR?4ry)<{j1}F@ktSHaT9$GS4n^)bh7^ag1_n|My+vt%&%hj=iU1gUK3~Ny4Vl zrcP6SWKE+8V!&(6J5eywcm7osse-}!{5W1ma?QDP|FVl!*yBN9WWaMzjZ|$2jfz7! z6D8<`HQd2lXT5#&_59v}(-39M0`DJk0)0iCe(YjhLAu}Q8Pd(6 z-t&^oH1}-ySG{xZLQCCZS+?${R-bll0lE~6a-NZchJKG>C}^8!k7>pxeErI*^hN1a z0!M#baj-_>1e4f?NagLfQK%DI+tGzi>@w1gGKHo7(Ub?WqOTG+^Oj6zkbF_n@C3Rx-xqjtK4Cgnzj`HI; zz@8%h>!7VSqHc-ITq7_V7ZQ92%jA~CWH%DmK_@M1YVHoW>AT+8bQUg^u^g!4<8_MD zD#T{^RJe_)V(I7lIT&uto0#^_nQ|1k9*?~QPtPoxOQfy{oIBbmx+_+f9qkk1AXBJx z@0+t@F8C(ebOlG!<=D8waga^>sgN=vdq@z`t+O_GL6P1{X?Mk11UP z8a0^pq^MQUY<>?@1&3Jte{uj5n$6Ih@o#HUbIrsx^7UVMDhr$Pg_<}e%Ial(yCL3z zeZwxy+H@N4#8zxqj425k8+1t~2&J^n_Ck&tMzz`~6DkuY-^sBb_Oy*@BeN=w$|5YNQFIT#jE*r@Oj#3Ht04(P&Jj+ZLD&Jh#CAGGq#l8$ z+UmaXicwJ;Be_2oqCq0qUoT699&x-n>REvcSq^-xcZ^XeUVD;nGj*(&BP9^coAuHk z-<^Ib(fz@Y_%9W>t1}_e-m(4waHzk_)_K{Su;Cg{Za_cK!MTd~ne0RaW#exQv%5Ae zL!7Jjls_x>XU#X<4ek-TZxut}Rh6H(W;AbPl9-MQ%gZK7;j2DX5%GQ3ioxa}g`cu@ zhK70z&?fNnbZ)oYoznz_W=RezQC%*GM8OkPHCDNPnqra$e^7-If#hbEOtD+)!2wB4 zO@~Cdan1;xRxoz&FhEo<{Z*Z&JWVSxgT(GX0N~h-puAi0uro9gH?2dt_`EdqGGAJO zU{MHsEsNNPrVfgDb_TgQyMdWSq$!xlew*P7Mtf$=KVF8g`-74o_jnOrj=}Hva z<$*s%OZd?3qeCjW9Ara6%nzi{r7nA9y&Ah>6>iyeULV4h$r)ZCNU!;XiX!xWaZk2AQm5Iuw!s~ zkK}`@N@=<_>p=0XdTw3tc}AZER}!aLN{}`R(j2{0Cum>4xZ@1f>8@=f9Fh_`+Qn!e zjH^lIAQ!^*b6?-5h=o#T&-PNb9vUS@c;xu898?l5fAgmS>xeKRtwf<6?SM+0icD=Q&P?0d~VykKP$t5Rrpa7qDK?`Nxxfc^GC=R zgLS>38ZT{`W%yIH69+wZmbq)51R@DeTHYl@OZyA8;@#`SCx*8 zO@13ht3Cds-}aXC(3?gx7O>}oTh8;h7UR$S%p8*AayBeW7CPHfkvy82CKc@2>gDi0gSy)MNgVPR~0uAI;{25pN~&JocJ)pXgo+IS5iIci7=BJAt8fCJ^8nx9&iyl z9%#%PAigL@bVFpfjbQEkgJPlU7-PFeUg^D zbr8F&csOoV9)~}C;%$DZ470V&MDXmgkbJuTeajB`-wuIU-s;tK`3(hSM5v8i473kU z_vf~}Jli$QiqoB3Hz~L6K_e0Jr=iye9#SDzZCm1Wnk_d4ppwf5PkFE1K&!-bpn=OHjSbxe}@Nmgc)odrM1?hPNv+(5QlKS`LnrJ4-;)V@{2qU)I?oxPP z#Wi+7d3z$Z_y>MQY7&Fud^XFIc^<3MI0;qSF}pZyKlUzOr^YPXIv%n*AtmU=+3J#l z+>ND@*t6YKz%R5n;Sjq5KIG%?3Od@@zT}(aB%=9p>DFuH$IzHjYPuaB_#PmGl*K( z;@T{+=b3@}b;=f^M)}+8-f`j1)Q`Ya z9gk(2Gtwe965xeHFvgO4Gk{m1flaH^jt%QL3bWA4M{|?w%4%~N&1maC94SBw!9_ul z*D$LMbps>l~3bJ zLXTZAAzwwe|A0ES@v1sr;~#QHL4c!DMSx$)G?N^%2#!)pSXr&wT@x$b6ZnA9Az>lt z)2E&6wbY<)3o2`U#7bf*yh*C^=p!RH(RkH;>zTfOn?BCvG$(w|ExsOlr|9dF`zeU3 zV4fw`zuEHWsGI)_EY%7Akv9Ak0(Q(f#!7Iu-Hv4tZaAy@-_5{#=(XklXC%_E_ciJ6 z#kxaqmtE^V-COGf_@NV%%nOb%uLd6@aywjAXB_qY9fc?oRt>hm;cp-XbFuZoGDSn- zJoFS3D&^s745$p6AgaTiKG9XPudHbHsYj9xj-rpf8%4Un_BPU$){=w+ZBJ_`N1JB= zOF*>0eYq_Pn_Nk!wzN=BLg#>Y4CovQAHW;^XWackY^pJCU^RVq+$CTCA;qNS<_wt> zc+RstZqRC=drWX^-jR&tQe$HZ9${n_b>kDyhhlRu32_@)fo731**bdqbh3&lqR0a$ zT!v=tITh!3;SilD!t1y-c%*-(iJ&X1cuaDx)!T0_YR-a=E;$VP0k%uqtlK2ls9rhK zh%xQstB@@YV z3W+T_OGeniMdu&oo1O)vJe2~Km(v=n{r^QcHS8nf>&|mwGTtLpIE~jyYlYm@f4>k$ z1n>-S;NB@py@fp&9Nm#3*+0!lgyE-V+c=rWb_A&>qZlZkj(syB9%_E>tBI{#o0OKD`|s8OZ86p7`uJ!!2iaH5k?t$ItkuwA$H$ zhZN5rB*Pcq6~K~{q0UV_STydPL&>Ie#p(Z&{sJ#CQN_A!=@}FmJyeW>BBv8OdZ{=v zmQe%1*G7D5f)vVL`kD@4s%w+Y+k&AH6^ye0h!R{xWcQi@7-)DJF$4Kw^N{pFxbW6)4^ ztlinT^M}v2fxT?^Ol&64#$y3b_YPg-4+J}=By zjPgEwc(a1jALtUyE_o2~dSCAmC36KmkD&Dnv=6Kgsy)MUu<~Gz!Qx12j^XbJ@zUfR zvs0wCbFZZsJr}xMrF3{wTH$?`H;DGWg-4{pu{>f;0mQxs-F*HP24<@P)4e2@+m@Ce zdW2cL)86?gf{dqd{3+kR{H9pJ34mQeC-RQzHHG_~14sHN{}aH~>HfIBIpdmKu*3cln=~0^4=Fm)X_m zib|MJZ`#7qYnrg$4(;JyE)m0t3{PGGWg2HeOF3VP>5AP0rRAv+`Y9IP$N^)sm%}QY z44pFdYO-;y+We-VEmR(@p0tn|Tqy}T4=GjV3~DgH#5)`a)Tb*~v%EgG)UkBad-4nyZWpHBxXIjaX4tf^%+3S>q1cl_=)KsP~ zZ>-=V8!%}nAzs_&8q@v+y6H-YPd&^{R&&V|4DCjBYPN-;cC`GCBHt%2+?`jeWlqG@ zt+&AOXo17lI)n(rL5!S4M3dxo+Ycj8N~6NACrsrk$6&&go{UhR8=>d5&^}%!Kqp~* zvw8MC%DL{MqX#iYaVakO0)@|GLRbcw*fjIvOZ3u!<=pSPduH@=$cEK6>VTKc9hmWc z1ZDJhRj-U;jDgMMqc6o<#H2ozCiwOy1sv0=BjuH?P$2bFyyOaZl23VVz$chDIhp|a zGbL4wnqA{U!h)yk7HY8i;@be_kqjvLul`GvC;D;8p2ba;q)9T{v382<=P&&4NHNs{ z?7@Af#)C8JEkctO#7C@Db!rX|zEo^r8!k@qu5ES`OXZ%SW^;sd8+cP4p-=)lJu?!H za>j~XZqE*t9)?uoAQZgF&O!P_sn4LQ)>N*9I(Q_pCQwpNVoS+fYq){rOQCi=gPqRo zufj)Hc^P3Lp(a`)z<^`6(W!fmga(2bS&Zo<} zM42hbp6I!yXif=3sd4v;=(kxxoELIhnOo|S-b-ibNtJll01S@lO%gi}YpZT=@AQMu z*>M=u-3z?pDhB``UEnOsURVCKd`WX(vRd0Ze?FbY(0g}r(rkL6MBFWPeLx6_%dJzp5hZKmvUjzb}jHMm@VI!)SCKoQF zu4snOU`nnh!l{b!&toE2bP__GbEx>(8qQ&ss?cwLe^-z?yS}~HjG)Gd26`WLU>@^4 zCmT7djQKk(ip%;U}EBstw0L!SPYchP~a7#Xd^7iL}vtOu_oc`CLEH-92-U)HdiI(U&t zKE3q~0MM&0Itcf>T*)NQ&{$D1E`CVffoj|V#8iH-3Asy^0(f^tZ%EWrdO~NBs-;`g zv-7TaLYBztz5CPS)1?E%CxqKA+Rw`JERwUtu0AkG{lin~+Bx{A7K`>O9*Y~i32Bzs zs9!uJC#ESt8ZUoQmce_jfdx^8|aQwQ>F%lG~(axpYe>8P(h-Wn2Pq+(!%oAAS7K>tT9{OcSIA| zjfEJyNb@MqyEPj>&?3%IWM%2zm$6jSw=#(^LIn1-mQ%9LHG{o z+xgmpQExb@I%$B%@w$jjyVs;s?ANv^hX9{>43j1e!mD!|!H8RN{oa0sI|J$lwW}-A z*Fl}DiEn-pe>IYnKM{I5%AatsZi!z{DOoXPToWX6gO+!O zSEUDl1O)bs-ZiaMwoBe6t0y%H@*KBv7d|E7Y>FlvKn(29qgxVLE!f0tfe3qR$R1uP zW}yx#0+|l!Q`D~n+wqs_!v^9fWKm;f7_d9he&}p#eWvPqj07$p6-gh|08gLOQ^n>^ zM!@~caCeL29XrYqCLbnyxU;a2UE*bxpTecFG|q&X`eTR|;DW)|@ZjQBUxwuA2e5Xa zC0$~Dxhzb#ah4pz^|}GQDwU5N697xjfWMnXHEk^oZ?}L^{?BkoXkcQ?0x76uS~j+ z=SX+@>gs#y{tQ;WPl={1xYYtp<2%%z#k2c4vCLt1IP++yYW~O%$2l~5iQ=Hn^G_dg z+VO0L;LS!TT-7SJk8UM?-84Iv^kZh_UQ{lL7XO>Iu)?H!VNYmXw9vo7h1+&PBN z$^Kn4s}P~+#$}b|^5S>#bCF;2MUJw8jn_FRA<5g@DX7D?e8~)(pLGEo-3NjJN(px6 zLt5aM9U$i4-ksZm#NMND+A&gLfOJMbrYI4r6R zwf1I@_phoWFRZuqSPXMu6rcdD?ztl!2d5vW%L3n~Y7wMG} z4?NwLyYm35tQagi%GC-pRmcK{EYT8NMw)Lk5_uf0H0m|{YpNZ08kr}gfH8HMPiZ!p zE!85s0FkqF2ezPT=dFgp|B6e0m#zXqoZipI@=aQWb^x9j^vd3ve9h+6yYrUk54>9E z9h9#^L0|g9O1p+yjm==b?ZUz7rT}ktRjr>L?ziY)t1u^wvl}QiJdGZ7@zAa^cth># z{Z41AUJ`Y_D1?{6*#6QthC4BLD?g(>Tlf|Mwjj)SXQ6K+(-N}J zCx?Wu(O@x?@niGML#D#M_8bPTPO_p8eZi8IrdIL}?_Ci+8jl!-wh}u3AT+m=WmGVpNbp^rqB6r*bm7V)y*_rDhU+u^ReCW4( zPk(5*6H7oAG|7jRd%98j+7UFBE@bI{354+a2Y?r^kC(JHBV-|JZ2=pb@2UL%xM-#9 z?RNmU#^6$sIT<43qvc&uD1wSryR!t6aZ|gY()hYJI`o*{OWi|If*OnCdFJ7691V3} zv;ZJ9oO~#qJo!aC^Kc6t_{kJSiCi1;=E1r1&zheIu!lf?EDRr~2Z9xorNSChmpbdc zbG=^wv}7)}Q60Sy7zGA|SgiZF#@4)Nq}D+{TPCWb1X7|7SZv%RZKEtA0fJdadorXJ zD2T_vR0aFaR*Gy@HA|KH&BsUq{TK7~#qf5o!zC-cZ=Y14mEEvlAx)TT8VA=CUY8ds zP$b29UsfPWllMB(lzO1O$d(U)3 zfJB`8qF|6GL>0xcK@&hE-Wml1^&E&7gD+0wxk9CH1Q1dFxmX};d;7c9%0Us+K~>&R z;=f9NghZh=YTqQDni!1K+?v-8!7(r#Z!S?wNw-w9hCtBWYpEP~q0VND7EsuNW6zm2 zN~=5U_ItVE_;C2CjNsYW(88Q)<%=zhG{{yqY!S|ITDSC7hVlZWQ}3rrl;s>wwH(S)#ZS!?g6nSq zuj5hq4=zl3B+J0rN8p0oBoE)p_LShOz$JkJInvFzw*cp9t!@8qrC86Rv&3IUJZD7M z4-{D=5yXx~ah0B4;jhrgjMZeswgJ{PBt+y+Z?k~N$+hRZbUB&!qvJYN?F+?kLH#O# z-|KZ5LN&Mnpa$hqcq1^L!1pwpc9pTYhr1_uv1qj z2Zw+ORBv5PIBRyx(<}P4UvM2Yb)LYpk)@FOTVK9t<_%#rR;1b-&=>HNT`+CE{P;Rc|(k{9$f&FLwW!_rMho3y<4wDdXegi;YDb&H?&j6z7xk z9_c0f8W|C8km*OlK3AGN1xbknnqo6UG`;XF&VF4eBiMYOu8`#QST5SWqEGegvmN!^ zr%-Obg@7vp^0d@{Tw3bwRFbmWc;5UMW%DGA8c!t8p2J3^1II0nnMbQ5{6A$64+Byb z*Ko9`6VqUDc`8SYVvvr0irP_p1Mo;r#n@fGpcNs>)lGVR_EAp@`2F#%)TvR+z?44^ zdy%kvvdnaSv|nEsmbgl)5ag%cWeEj&+R;SCUidJ2b_*4<1N7R41K$Ts|L&QzQT_e6{tdnU%sdm(b!e!HtO^)ysG; zb8rcG!q?QgX9DfmxA4Ua5vrw!pNn*U)rG|$>HDu4aIuY--vLOg-tdkfU7Y5fz!Ss+ zz5Oop$h70tqA7wr_j$s4KfKukRK<1Zx}`$7is_PNV;*+b|DUAJgonu7QWvFVBTxAL zD(DzRi)I0M@c5)aFs_XRkAT25OqQK%Ux!DC6+Hn^wzBinRTP5zQ9O2E%}M1R*;@|x znZLrt-S^3Wbig;C}UzTct-;_!ReMSM%oHfO$vGnh&WRikcK-__4y%@W50d3+} zb2c6~qu%6tV!ft7%KU4fw{Ic&znFW~F5uX;DOC zxkLbS8cj2&Y9)jRi&PF`b8K%II64L6Cw!|n3EyY8UAK;in%T;gEjtCLtrRjbQ3 z_h`J}*Y0w+Cb-t?0LsKHVr!mQi$@%YD4qd$inv$`+7-*th%8R7K}!D_GbkUd$&JcF zuDxYXuYm*v2HXu?*g*Tf?>WHvdp?f-uJL;rE&ja-X7^dM!Ed^=CBeBx`e&< zo<4}b3vEcq2VtYCm-P^N%u7mA;8}!2?%#b_xR{w)^VYm_1uP%5mq&Y>mD&XsK$*=~9(P zvpN-lLy_e3z3WdgS0WU-r_qW8YY(-Pf?%NNKs>xv>$@A71#~CeiIM-yzG)dHTAGZjGbaR!h1qa) z9BKK@*^vo-V94f#(oypdddA#h@NK`QTM111rA!}I>JIu6%ne8K@{BU)U2{1*3zK|0 zyMC&tLmEY43bH3qW76lVLWM#g3CyoFdwBqn@C-?UG$T=jxe=as zw5*Bp`xB<{jjVIw={P;PBUxtLPTv# zVp|KO6%xSl0qoG}tH?M^OQv+-XAx3gsGr{&#QDPL`cCdUrB9f|8`xf4L6U5VIch9d z|0vKHfe=ZHsWKWb#87fU{TJ7XN%KGCSChk&V&g^b^TnLGEVs)2)z~xy)Y0O@bfRgu? z6r4MN{b)T!G(YuhrUoZNHn$&a>0QabuD3Y`_WAU31OxyMHWph(S|s2`rb6-bbLst- zk5DDhn|;nbdPI@r78PK8>Zmlp&IUNz)0cj*P@Fqwr!xTmG^u9>&Rjk{GU!4sol0_; zIM)I`VFxx^xS~uK7JDrrM4;+iR3?ah8RSLoQ z(X4Z6nj_hxH9%m$<#&+|-fHmrzJBf8Kb%EPh)F#2zb9WkA)6 z0%T7oRYS8Wr}fO-_0_Qgp0F6??5d2WI8#z6oI0+tsbt>W@I4t~9O;3Rt7XO#P=veh zA`)j>j>9FN6zF%9aYJ)OHo?J*m zIYEkzp+P3)O>g4RgTpC!+&DQQuCDaW27!U8De6%%Te;XIyHIcVI>lF*uW1400LaCr zcXmD|wj%JgYesK%^~N~lqnsuddvB1* zYj}UBxv0iDRuN}V3jc_uX*UfEzmIsG3h4&9D9gKH{FMkTMC~9l(2C#&)UDNRw*y~j z#c?OgQ|eXpCf#1+I_u^zR58x~$MfJ)-|Fm3`q$ zt4Ac`yYb8_HrOlKD6S8)dO+V~D6Bo}R1j<*2Z|nQB}iSTiU57+E}|VUgZUcIcxFjX2Djew2fY(6zf`FVWggr=Cu>L^hl9# zd)~?Qn-MI5Dj&hMO?o%8mQTXrF-x<}f=~S~)L`Cm-9HK$T9;&u_s<%um(D7>T^INz4O;oaNCj&Hy673#ogJJl%GC7caf})ASGWJ?J(YYke#&4@fIi0P zXY-bpD3F~OmLwJe@9YfEi(TKyXS`i;1x0y=B|Sqm9<5j-bqo55JUr{Mr>q6j9PV1s zQKL79+O=U(<}LJ+@W@X$d%B)L1Y2~SGeLBq_O)=aR7sF*)i4$-wG%QA3Q&#*7Rnsc zZ9!X!!V1^bH>xwM1G_apagmA4k9>MbOt0O_PVHb2^1d-x=lW#3o|Tc+E(xRS2+4(9 z@!#;z$Pf1NG2m*aSe2}6*J2i0{!63SHh(&;=NlX)UHs4U2louBFSi;G#<;CsGU;#w;Ldu1!lHF_#3`noYM{<785Bc5u(X7#LW5U->!B;6q2@wtH>;<9Iz4Z>a1q{@B%= zaWCf)YEj`pOhO4WGaZm@Enr`k@+O_b9s^PReLx1Z>IJU2;{ZqB-)C^_5Yuq^kTq^o zNFbDFW7*RjSDAd{cjUygi)KIq3io78;V{Z%}${BdI<$JIs=m10>ira=Ty)hcv^Uv-Lj&T%IdNyTQBotCW}-CVp4OP*<-CIvjxK> zl&KP0%Pfn^{l>7e;AjsrljG?RBJ+W)Kl0l?Ljq=Wd=PAMANejjr;Z;=xIZFtqWn~H zH?8Qc_6DZclD`(n-=XiOPo%Jfe$FWrR4D4X>$K!h2Cw>|C}t>WJTyIuar~H7s=!7L z`h0)+AHBIX)nNm#OGeQao2pjOSwRCbn_mPkMnxBWE_zF`D;Ard303LP>8jg41^lFV z$j6(= zrjEVQofj|_0*{yykpNvSywV?vdibDKbo>NkjqBx_$E-~UtljOv;UO#;(`Z^R^cE8qRM(W zB3{bQ*XvkneK>&T7mYqcoxflNP*QD45R1ee`di$(P^T=qqm4@T*d@$b@ z#Frg!RZ@0K^gP?QXKVYDBBmRQ8G>Oua34Iz2Pb7`}q5cTKl z<9_di6Nba4oGhxO<{DlqoOC@K{7=fsSED-f?-Y< z?>r|$l_$#zb?SmL^UDmBf~-}wR3F6_SDHb7Ip-%kCn$CVQ+FQgnI`~vzU)Ks=#V8x zhXi%eEaCow^G_ywp{B7rp~nAIdvI^atM3><4yM;1tddLdxq+XOvEV$kpj2U%Ma*5c8~ebd%ZL zc9)C4*qxNXTIuD~o?PsB28Hrc66WZlQrOHyS1iw#LN9rtS&d6JhBQ^p?qbdaHB4+` zjH?2xej}{GBc(-SLA2(1+DKlYiLOC=h33SxZP3Sz(4!(NGL?xy{SJyR0S<< z%jd%&3d=%;BFb<;lwm?sL$?0il4}@c9IEEo+op(>A;bby_gPB48+M@U=}5-;&^SJD z5@xlxK84By&`VE-80eV&BL#%qaKLVyQt~%4VMa@{;H=ZYa={JT82I!~F8{dLvnZ6x zT2kxwD+7LQv$n@XI4|N4I1IwO=m=zst9WT4pQ{a=Pve-A8dJ7>LvQPLbH#gl`ZAg= zyYJ2tVa~OTcaH|7qdmNs)?4whdp@I766-u^!6AGf!^jx5I>9@AOa?IaYOY@hI@e(c zwyOj;`OW94^I%WeJk&|G66#T4GEc{HTPU!?w~_7o<6apz%!>D^JaIA~Y=6YOr=|dC z6@{iY$rDVPDjX<7&LgqtiufF)qQ6I^14R&1!j+V`qUs5()$l_q?Hn*v>fa&f- zlHtt%)CGsJ^>KilfsAF=>k&QLE z_1Vt=71&&a_dBTCeEIisTExO?^`Tnu5v~=GS!2gIAUf!f`_X(!Ci}8qA{;Ys=3Bfi zsT}MDvj#i*`a#b+o_RTKOWj4_K7)*?KTr3_wj9p^KO83wi4@c%v`YM0#{2wQ%DrIi z=-ODR2EQVR#qi_w#yTEckG88ruHf1EkaAk1TC2McU?E|$JZ=<|b6j$X|6{Zx$aaAC zU~-NX^&eggjn*JAM-yn+qNTK$q43l$j(TB8V&%ID@}A9!kX%OW0|tuXf${#BJK!aq zki+^e@!;^3*;OY73`4N_mPfL8*mH&9Q zV1Q|)0cOz68z1Y1#~Xc?*n)u2uJP%Xi3bwh-JgHKsN16q`5$_TARXxFKX%iKV+zvi2fj;kf%t-g%vImb|Op1bau-5{jGWaFkofB0YczSetNTv=vJYZBU< zAzn)vBf*-er`_u>hv{}*vymSubNPvdr*d3S-}7hYIGch>c^Uv|Q#tyS;y^2PoAD26 zQ7`LE?<1HTreOeMfzeXMtQlY6`~-4pVSnFe{!L{rHl|lg7t}$nuwh5SXQbHy*fzl? z);b78KWlxI>x!1C#L@k-E9g<)HL(pXP8Ebs14v7j4ZYiP8$_`&1le|ltH$9&=EpJ|N?W8EY$kH`Ed}o} zbNzF{v*7wDJ4zrM{8e|ED>Y3=8A4W#P6Kp&2fmISzd3oU@p^NUZL+xs6qpr}Uw)vV zJO~yT74=v2N{tvCZjNb1dX}iJIjwf{#Lx4~|M<5QkbTkBk!uKdC~ate43hQqTz1i5 zVeY_ZQEJXF4eUJWX#zmMk9l+>A={%s26F4k`zeto3U+IkpnZ>4+Pl;)>6SA)U~n^x8@>(wO%GMHiZes20%?y{t&y>xujx9#SJUy7ND&2!d;_116MneHyc8FsbV1o`SOh?1?XhMKGVue>{ek@jv z_2B9w@YMhfu+&w*4&@SB(=NMDK=)ZzAJY?lv!3Vw`hhM8*$C-0R>jHx<&;2+qRR2nwO6j1 zedUKdykVKC)i&gLHu?~2|403Q(&Qh`Guaw=Wf1v_@ELAh=r)%ekdPMh0=k-9JNm`= zx3A_>Ed5Zb*jJVFF0h89I*&ioFAGjYr_&b&+;jElnZ&P~oN>*f$L4+?rYO6S2_i0<#%^C+VG zTlGSjb=kpsT1n>YW)6fT4q`1XPTUvh<~?p%Z_Uf4kYY5pfVk)~P*X9k4)Wfk+OR>l zKam@?$4k9;&-5g*FLmn^q(Ax}AYAC(Yj`p-_%Y|v2pww3h#t(k3TCPVfNjUezr20# z{sw&ugW^eLL{=R`A4hns!&+E5GDhGYBIWE{%!ZkgQ?MiC1vm;jaRdAY|`)M&R-SaHjHczjcbN3q=xAJ*PCtrhe4KF`_8sKB5}SiwdUQV!*z*tGZ9T zH#U|<_gPk(jsRc8Un^LR6XT7ST0GQRs*vJ)gUOl%>bA^y_-+oa0Iz|sfN{B= zf-AzN^0u3jQp4XP`w<=tIWE4s}NW*Wu|Yh3CC_VV-nsuk3`y)7Mh{uK&p)`&_D~ z2=fzx$iLvTpg+E~Zy=%XLdM3~i>X_e|JGwzWB|mme2yA~zeNa1S=-Q>gvIYDKOVYU zCVLz>yZE-qr=WLbKEk)NKFtT~k%<2ibptOOY`dfjGzug)q>gpLz_G_ICgJ*|JLbh2 zt1yi2HeBYHi19KjvmTqA5R+--F4qqrQLg83>~6Er5=cJaRgWT@X%j*_6l06v=fg)v ze+2{E|K#<(s-VqA|47jrTU5jSdPno9lrv(4D~SriCtJHZQX!bLpYX(jwtCeN;0R%> z7@?blxjwBdisABWkefki4j5&w?Dw0)#VZBy5m4;=&1Je1Fs~Dl!I~vX+drEYtut-G zPq0`Mm=x;ug~4?ikclGR_220%)AGYDWX{W-&n^-8gO5#Pm?!gi9xTi`>M6aKRX-s& z(`}sx+>E=`_6(lglwS|F8NtpenwBr>{}jrCfWkg2bpCa$1bBG{VZ@1Zq)E-K{W>^zuk^=dxzj2f9_LYMVi~Dq!|j=+GDmeni)HeGw)_!1cb%o!lCbFdGJg zYUPA{RFmC;LPL?Tb+F=jq?Narx37u`~w*LRZiFwHKbFAm)vX&G^ zPOs^i0q5)-V~Gcn4NSx&r0qOO25tdNVz5ggf<$k^JF)EFQ)*VH&idOVEG^k=*mB#3 zID-XMqNcHMLa=t0ijjHvAHqPqWFreKH0kRKDu6sF%w1Wkw$BmN=Y3V$Z8It78`MW$ z2s8YvVuej2>#I7*mI*=ka+GF>|zUWGHxO-IdalG<(_+Bg>|))V=>pyp0>Q=}Zrs zewn>x0LZ5Jetn!bs+dUNNO{=@%M1lOwa^WYaiqkGzY|4lKgbTu)0lQNk<_H3J%Sb> zj-vkQHF|QCE(wwoMZE%G@bQy~qqtJzCJK4bdxY$b%H(Kq2{&CvT_UuddPML!?cSJD zlOLSHbt%pW=-2zwY3j5ZW#A)-;vWbqRn-`qsEP}KL#jmhP3874 zF$V&M)9zuNcYyK@2JZ+b21X!3Sf&9c{86@D8^agbdRu=d39Xz71G&P{cPC7TuCS-01?kpT z`pNnMO4o1HrmH`RLzXXP^u&>Q>o0rd)5BiQR48Gx2{@9Ern+VJ`^L^7^Dypa~FoxJ|P222z*V) z+UVfbK)k)#Ut`)Xmw)5M8cecvu+zvn&lQ_z6wfXwCjAqXAP~9>Eb9K!n3S=^Elwgv zH;(x21|}|W$y%8w*Wc~B(Bggq?F}IZvDVMDZ55q*F#Kvha9dm~ zW?SyJlI9}r!6hzO<*j_q9`&-&x06xsNa*>sHs(+DQtf5#I+e2%b|e|@S40o}{42;3 zA7y;iCKqJ4J9b7;X!aj~rO#^Xc;9Xvq}uElx3n{DVhmT0B4QNUs?D5ahqny%&> z5z#wxgp(>vH0Urzd3gUrx-~&5AcYy5x^0{(m0FFV?E*qv2djY)N!CRdsTqOs>eNcS zXpIk)tkG`Wd!L4OLlsEE5Jcf&>B-yt%p7* zoT=OopAduSDvOD>2+^hGit5Km;mIE}fh*%`r73c6kGFz-YMSO)i_BfGedPMi=D}Nb zliz-3_kGO&#E3Eeg?r}HCyD1)Cj&ef6deP_tanq3Y-=-FN9YPL83SpZ8JOCJU^O|8i4BM{q15V zd|-X=JglPDmaw2%!)w#jxgIS06oNn(c-gk9BV#E$<&^|121TzM4>dX=@+gGKL2O^b z$X%TvnD7b}*&_T?!Ng|Bjk#(=2DV|MBR02{c8-PDfmow~!ckNrc@uVSPbUVjN)J2!k*YMAg;>xr|KNrp(g;2C~CJPMk@CnhWj;*yzlG4rPrUGc9D|I^d%@`*>L!4XLv+G&7$<*^wuF4D7r(v;98pk(Iaaa z%%u86ch9E(ldCl+we+T@K5kgQCfCSG*GRv0G-{B>9AyBQJ9eHtzh!k1I5buObeQmJ z8PR$`;A+{NOmBh#Qnd)odzr;GY3?v&H)_mL7>a$>V11ri(4 z=gXec>|S174_=VY7m2J`CK{dBr}x<5@sj>(x(x}0o}-luuc;FA9fpx(5f{aJMNb~ zlV_*bw3$dkGgD;z{R9M%$J)84eUTi4&>8F>)i?IL!3dcdJ6u7Z{bIL&d<+!>)vpp_B+k?EAe_vnz&6c zsWF)35uU^zAMb9#tli)aCr(^QS_3QYgGrcEM!aH$yG*NEGUMb!98R@Td(5YZWOA@Ww*|^GqU(b6t=8R?$(!c?iX1K5kFW z^iNhg7q2FOB_IpGI|E5qu1RLI+LN;Q!!__Q>{X<UJe7kavkgeXA+>-RoL^qCM^tv3$YwXR+JB^n%&e$o^%PR_mxAi5NRIFFtf zO*-f#pSeIdfSeR(c8O2;KIaQhtBy|?qHyQnrvTv2nQV6Oh^V0~Pp16e0}s$(o}y_s=fPW}^}iRu)Z(-ph?z)gF=wnHRFH zA&ih{L&`jWqXMVwz^wHDV^gxR*zf^l;nPWiC zDSnsKEqV=sk)CLOuk;%SlY#J7@V)Ux?_7b=GUd~RL&c38|9^<(g`@K40}O*BJxU6tQ9;k@GB4=i6lkpGwV zJ--$Y`2_$FY+1s%T+J9KeoqxY$xGMSxJ6f#wo6k{XF<@>Mi^ZOwt1S-_f_u$;=<>{ zrnm~LC56a_&0;8>AnGg8Ux_3cjDc_|5!# z?)7-$NFj~$^!3DwEG{IMr+!(3IKA23wC>R>#s^c*!a#cu+`8M_2V42rMH$|uX~k;o zx!19KD3cY}*<1ghTdUR@aRvM4$+Es)-> zDJgSLl50}%7?+te{FpNSpC97F@LRi`d2E`A9PqJp*zQ`p>zr2?KLUiKhNz4c9A+<0 z;|lieUJEv%&eAxq0OoHnu|lc{wj9X8*xE8N@|&=yeYg_BY5$*u;7);-c~CUSd5HKe4>%u;b|{~pWX0sG{*P5lD2cdxOZCi=II55rWM{%yx7bFH`~@@NsGND$<^xOb4Y(VY8QEFx|&VHsVgg#8zsXAJ{l2%-Rj>JggS{fJjk-cw&s zK)AsT4W8J_DoRH}a_TnXj@F{v7FDl8LIfq(*#R0_1txBh1^>8typGY?g6=6`NSmnw z!_d1txH$vtDC2mUgqDgPDTOt#zLDjDWMHS`x?lSb#j;N7RN!6ugJR`Yo;!AL$mKPx zmM@j28^~I(y9mFo{1l4pzg}t-ZXag%V^XoYl61dAQ_h{-g!R5Rn%--<&$( zE3?f=urHIIneQ0#gEBe46`OgU-Y>eg^pf#1y+tzsML@d09*=5oZOrQ=C%sGPP9Z^< z?jncBqf+V?or-VIUU^k9Xq!))vFMNAeYT!1x06#k>~JvzL^C_!J6zf_a26$-pI>tcUecXZfgNy||BjYcFa(gULaWi)3TFLu92!W`(z0bnA7PTi9|EMtm9@{#s zuZ8Kq73J3hc*jo0@UR>w79%XjHKu;olv<$w|uNBC$^T+q*+JA=a*i-tb0f^0IxG*s$eLMG(u zo>CB@nYf=6H07`GakHpq&$5~QXQTMzst>{2WuXUcL=MG~;3K7|{Fxg0ylf*?MhuFQ6`FG0%bkF3;jkS3W&1p)GLCn6(u0apch4a zx*YMe>Wyv4HHx52wiAr(EL>GcQ%faUF=mCFyo{cxt%+`3^ZWg%;2k?F4P^Ut8lBW3 z2NJS%_84}W>bQ3Mfvs%MK;TWIZ>Q)7R)erV`ZS}$lCF1!eG{mgpNn)7vp>b>(X|T8 zEx(po*ZpphwZ(KjXqt!L*U0mm>NskkIOaE0q=Ta~%d0a=W;LK7Rm4e!9e`UQi$i%; zlQ_~(h+~qeVc(>R0?*ptM|-_dGST{|c2$g|SPg!obh)Wz=H1q}G^8BRjUY*(ezwYV ztL3RU2m^#>0;#({c~mvtvHwyT=i$buz30|ABl>XMZBlz>smabg)DrLG6!SOLSM>S z^5J!j&C>?XZZavjXaV_=GXZ#npZX%G`oOCa3 z^in3n8rR9PS?~9uIU=UB$}swY7Mn33Tyn7gK_s{aub_!r=5{R~mlXcWDtWdLojuTN zuXC%&P~ZXIcRB_SC*EjP;a~^1A%p5QygEhTF*)^gc7PL%VP&IYq51zI5XBdGB(uT? z21galz@Eczvt==p`&qHM@$MQ{%O@u%RPO*!2tIj>Z&?vv{<)(FsK5T1BVfR{I?_J9 zm=^r4(4$k^Wd_z|4iHZcT4yofxG5dSa2l&n=*>y&eM1+&0sn~#6HUaNS@&KZZa8IS~gJO zm2_19q0%Gb1(s>KyjOqV5woddhn?+nx%mHsu8+aU4m}ge54R~X)$7m6z)t~|p7t7R zlJH{6-HmHBd1^!A_Rt3m))5h zj}ul0iZZHUn?KmFVH?$RdvFh}-dT=tX2cC_9|U0PTher6rFEI*+sy^Yg%49^ZO9&! zq&g8{5^mtkRO+-IGKs#E9!#bFO&JF>myI&BsFShkfsTC2z4+la<`Jo@h$`j=UBZ*o z$@1p}8UGlka{YpyV4^nPz{8YS6YiLlB9H+QF~GUDDs6$HaU98+mpk9NPgCz;q5li* zq!yd@m($I|Oqi=Z0E|`#*|4F^<*I-UYpvD!58H}w&><(;^LYjT4{z4WKr=$Kw_r-l~gm0eNRQbjy&bXeiXd*oQ~)gL}68ObPIPq*hAp50P>$W+>G=PD(Th=sDU8 zvO=z?v=y{L#{FLf{1(~svCqr%>q0oF7*%Tp>X5hhuq*m|yum&iIDra5607zk%<~=& zuO4i@lnXP{wtip9zl`u_IlZ*D0@1~}I9$W3TnYh?eJo?^VGPjX-oMA3@TNR{(v3j*eU`gXz`BaqTW`190TAxLg4~epJwl@Za zC=$D)^NAE?yArx#gPvSqKpgEnl>3yhyB3bi?3wgt{YTf!7>$xZtsccj1?M}fH3nvO z@=eb+wwQL7FO|@-9BfSz zxs?AlRvAJKBJFvQU6Ij|zIN%g(_%&cUYA$aiJ1Bs72HBm<|Bm1y90N#CxUW?+p`3% zy|Kd8%Gw9X&_1s$?3Lbv4AcY&;-+@g6G`mX!|78{RY(LHL#as08c3uoss5mS7-mW? zg+Gg`O`Z!PYxLl~y0+4t)GQ&WnrOee@7wbwA(6Yk)WSOWp&Czf>^hOl#C2Gmj$qm* z!HwVqt^kxI(I;JA*o|W?0d#|W=jYeMZ^jEJSk0xngJE%8VrHp3x)~)OPX^qWhTjD= z(X-OdRT3+2hIb+p)lL8nOwK(hA^hT--| z3=8RlY%(~kbwg^L3u9Y48>%v+rSROsp%=wU@rJ4=+c+VSS{_ZE}5GkcTEa`k# zsBn2h%#))1&k~GV8$j6t***i&-q6P2T4{;zxu6NxbvIWTMqBctbvkGMT1%irNEk22 zLF!~nxAQl#p1K>d-h`N_qau#>0K*(@iH1wwxwWtn`d11B7r8O4+F95RtGR*R_5C}Y z3r+AdB@q2wfCELveT{#Xd@TOz!X<%C3x7R6p(3;PG|)oY_ksIseM7f9?DSGz!?lLlJR{{z|t9>z&=Bw zpW@~+@x(A9%mB#@(w`q(JR7Q|nUBzdq3G30musCNY?gCp+9AH^YoPtNiv={i1R8dY zJ1%c;%iwmS6U6B3!AECM>t9s&L9QuXmBf+6R{jZFHK8BTo#!)y<#s5dmA%Lv%8tZQ z75koo^DRXMNIVFj)VaLTxY_IE)#k$%xSV*){Kz2bMcGzn=hL1agxq#B?Ap*=hmz?t zSTPTnfV>Vr*!Sca&m%yDhDqT@`lQ+!U?wP|6H!+%#mn*DgvB+myM%#_^khBf6^^yN zpPG*RQ%|)O^{)J{P_8^=fTBkb7@*$ANSNMK6KNGG0k0Q2wh21hExrzinbDQAV}#VS zqE^VV{=ouG?)AfO)ijvr?1m?VcaB~*;lb$&*7cnDM;070G8{qrigI}}d&HxuEMK|w zIn&9=0NFcp&Un;LRP2l?@j{C&0r5|ggk96QKR+_FS`^PHGui*x4iXE^*8=c6ye2OF zr4nf2l;|ma9UDA_HlhO$-!l*Yq5%A2`3JB!JV^$xDEi}5ds1UC9@}Ro6g`*Uq*LH? zkaJM(7F*|thUkrj%gJ{U`#8x7VnexGiV23gHUjG4@F z+a|IfYL=K02PR_{wA*1s%zJ4$Ph6J;se`N0^~2m;Gd@0{-Nnb5A`R*Mr&K6oe0~vE zbm~6*|96Et6Y`j(Q=OJ;r;=z(M0gyXMEZbg$7ukQ~Xr$-J@1qA|N zO*o%@g~LyZIzwZXEtbv5et-Gcsfq1s6}4GK#CLFehghXh;4$+n^^rf8#42y`g&XvP z*-RV`@Ab(fz)$(1w*a~1=*I`kmlY>yv{K&k8F%9R`mg~;BfD(MvG1Ohku=#bN&53n z5Pt{)qi#I>Fokx=X?5k~NAW&k;&P#fzHIknY^PY4_6sYZ(?*3$&- z9H9}=!d$Q9E}2)i30{*IY38j&4HSikx@Ql~kTi^AQneD3<3u`C11Uc9SVZ}X;KRj$ zdwDe8Ns8s^4vZC7FL#wckP$otj{ZgL*R_Da)$F*VxSS6Fw z=;h@h{Zkxth4Ac>0u!7{wsHaoe^f@l!!;~<$RmhIb_>wGq7aG}c!Smabyk^WqJ~)m zu}|Efqox!e9vrYGploXGso!oeL%;r?N$jqI;Zsk@#b7@~sK`7xL?#gDT$frI#_JC2 zkpq)uxU{(0Pt9i?t8{Zg>=h9@?R5h#cgx;hKF;4*v2^aD{LCc{H|N;7Ev3jRxw7Wk zC(k@;bNKTgI^v@ly`KvrL7Ih<`AVR#HMk{_IWRd=PYwGGxSuN=xZ?zb zd0Gbryyh8Rl)mY{x8GG$SKE8(^9hdoTefCZ#~Rz$wW#ja7s^n;Sn>g7`0cMy3zDw~VdK1-5j&n@zoyY8(NiA8 zni%7p40fOZ@$6zV%K@U8*JO#5Si!Jju-p7T0$fiG_AD<#!_p4W) z;!8YQegf~IvNp#>b~Jqhy!;flbcK~04E+nt)b6WM1YUEgsLIA@pRCzI>PcI>tdt+~ zxdiM^;4{8ceZvC6kqPo&?{r8TV}rvGm_`_CK+%;By&@LV(h#=+{*xWCW`jR`XJAqc zw6BcT`X~(tB66Ru5Zqo+Mi#NpW@Q|}FJu%g(blMSY7Di{v76TI6rNU@F-6qYdXVFr zq7$t~*0{3}E1mLU$@IL5a%&vgLW6pkK6p>c!yR%Gi3;upEjJY5$s(%UjdnuSZ#B3H zSv!M)PtiDf1w_k_aaIk&*LWu0LOTa9Y#F4Ro6OsG=FfC=h1ZJdA+@OX?FS^)ZTI2f z`j7eX+^!Uqt<{_icaXu~Bk_v_jg(ht!}{DjBt8#PZ=2Y3m^pxsg_%P?qP9ciq7qDb zYJIAu0Qo^y4)My^xu_()#P5v>W>YU@hzV32FhO!o^Xqq)toDWDAP$;+0dG9t*>-^d ze1e5EkyK!)SB)keZ`xvs-*swh;3Sp~Q3YMN({qp{7>cgR!s0;L;}p0$&3g9-oZiB> zd1{cm_G38h6*4AFMAE@+6h?!BdDHG_<*r816E~x8lT(iy{U6fFkw?Zk5buJ=4u6d{ z?-+lWYO8ed48shONMxHw9J$4`xKhQ&F4y;d2FgVvLA{5sUIf4nDGZkYy(B+kj$+q5 z$Ng%I|8xTjR_7$uTZg=eFYY|e$oZx+RvtYJ5BRT1@z57 zopBU}UM=H}mY{co1wwrbz%|p-(Gv}ePeIX+4XfL4I1l)8@@ioojfRpKCA^Of*#b{0TgvQwl7&l-O}% z7a8u%m(-&Orehf?h@};4d%K8zoYqjZBT5Iv`ligj@@+IE9W>mC5bA}nAYN!B!V1Z~ zYz(#Q#2uEB0av=plyz9YgWCaT_ao$7u`F?xUVg?)rOOUB`^LH&{_R{c?@2nA#7B`d zz}$7re2$pyv%N<#m;q(SC<9eBe-X2Fvj4&re9nlGMpkw(mWL;12PI}$SDncwvD!ID z-eK7v4@kbnpGI;fEN(4Z{f#{_1cEd-_>ponBp(Xg+X@iiG|puR5Z1mNt)&*ahB~Kr zh8pM1j=fwZaz>nG0G#tBuAV1ZZ46`th5clqpWpZW;t~>Ypg)J?^t6Hxl-LG(T!Jix z3@7eg%;Byz3h%q$RFX^b3~K?j65d;fj_^gY#NnoweDhUiFbp`R^Xk{bBsMQx#&`aM zgw!c!dsvIoWe`(_mCAD8c4<>adZ%(nNvMDeTgvXt+2Q}gToZNc;hhJ%zY#aVLVa zi3oHz@>*|F<>|e3FQE7*tV!CV664CW^7HxoGjLdx6~vsGKP-K`aTmsiT;wq_om`b& zX%O65{=R&M((EDDL9<^1k2@>j7nv#>cFF$bN*`Rc>dM5A%gdF0=08gW(`a&uZ;z|2 zPShDdAY&emlXHOJ_JRg#XA~qVN3-Y^Jt0g9GC)xE0Sh_Be5T z+%8}WoJ5Y0IgeWOehM$d27qtJ76)?461=EAN%Is}EV-OXePAQ91cJ*(*!IZ_);zh5 z*Ws9+#MyptN)FvdJF>x+dB8O2nQ%6+QO`V)(hORV<&T-~T-Nwn6>*>2z5LaM_rT_F z!v#4zi8hrV%07t>*hhM%x)(AR0X}Z-^w!vK7~CgnhIV?lo2gW-m;IT-x|~0yx8xxK z`AbS+ahmhW=fFq^z>@|EQ|;+{w^=sKAipj@Gw-A}mh$&7B5X`dz|)`uK!(@TFu+eS z;{{;q0ptlhGSBRFTj}`=H-IBYcs?d~HcJ+{V@1KT(E}BQuTi!pP?EV}O~K|Np<6K$ zO%=;&t$z>hLus8^0Wh&<%Up+j)$NMHSfRYxA`d|I^dsdgES}nkwQU4~UC1pgklN>x zvteC5@N`?qFykDt&?~gtF3e=`0c9}&{30sYtPl{~GMV_igc#vBwnRy053YB@MoNq* z;1s+Lsz69VY9Xr_JdQJ&r;F|J6C=X$c;&-}~y z`QOiLk*B3BIW4iX2&MgR0>L>D(?PFBs$8Gf&d!b%k;7IF=|S>OCTwvv&-A)^AuIqRDE^ zdQRU9VXw1LnNP)U4<`qf>fxKJe}E_VnJRe#yJ;TIz+KPPG+#RnZDjZ4b8CC)sqM!jQj@*NGdw zFL`N2`9a^y>FEcyL984+yz~d1_{dGFW^9}m1FJ9rze38!dJ5ySYZq@f-4Q-p_@#%) z_S14>rRqFrZghkI0PG@sZ$Vj7t8I?NE5ppYQwPCsed|8yVpcKO-J{=JeBF> zGTzAp@=}vQ%T;H4LVdX=Y^YmxCGGlTJuEGI-(>C%{C{`eSG0aQ6gx%t7nwA`+4=vV zj4m{t9$xyG>TTDgRInaWpR}#U@>y{XT$hYDH;Szv@SVe#!+difb5Z@` zYx6Pie`fok@ClW_gn}$Dv&1S)Z*Pe~3%kaRKadWGyNe2-h2B6wsHn@~Z8)?Q!u4zR z9=0avL%(~t*0fA2^T#}c^gR=R1x1cT_k9Dt79YR<$I02kAdmcUJexm|^k#v!N-khu zIw|LrN&Hm1@pU7Y-&_uHw@tVA;I62He+s8DL>I&D?-9zOtr4w=G6tkm(LP7KUzyVd zvT{RbJ=k7lJcD7}AMW$sgf;=P0K(%W83zRCI?8vLPyNA-uwA*WS|4nD#^f3xBe^`k zNVAd;cELu-Gi7}%{(=NQYOlnXyW#$YIIs-di@TqgQbKwps-hgHUQxGnt>L)*Wh}3= z4YCHq!^f((H=Zg-M|4O)A-R{%%!XtHHP0&<@rWe-xy zdiY-@F^Bd~W={mb@)%iELzlO-Gb>2tXL+o|Ro3zzU4c{JSNT6Mmbo*-?k(-L6O%`0 zIvB>SFL=6Kpt+s-IJ`zu-h@z9X@fpWDFf$V>I48#_>^+G>rQ_NUORK3X*;&TXQxBc zlUJKJP?D?HoJZXY^XYhKE0#S1A^STYERZa}6reiX9>4>rMI1MJ%K&0Ss~}~l7Bw;U z&!Ci>J6`MZ(G*Fey8sk}(QOM|jGLES8Qj*!O4>1OTJuuS`2gbR6o;{&IiIYaJ2vq@ z(gwv@0?CgInS6pXEtZKIf0hI_tpPtXnO?6nH($sB*68)>3#UI~)GYhwIL3Tx;DqX? zWxjtv?;WJ9d^pI$ICydcyp#q7#tAR1G#j=khL*h^2bAT691O!-+$*AgKo+@eBo*Kb zd`QpB);8iv6ZnQ2IYd|OXDeUq@Lzx>%y=yWOLky(1Avh_+3Q(P?6@mW8U^z@ICq}s zdl(>Ba3AY<=%u;%0JfaQndZWT;c42Ny-$hkyF^1hJn2|N7B>4gnT^61td#^t#+Nfk zfqn&$%zrk?lbbG;LL}JSI+v(6dI?Z&6ehbN2iaeh%6%!?S;N*$Ru|5rmu%8`Dy6Pa z+Ry%Ej2jA)D`H!ONI=os0_LOEob0dE7x16+fUyAc^)4ln$aJ=F^>Y<04aPzf1$s;t zl|FPMSTlK2^Y+3flo}q15kw5fJS|0t6bTeu)~&*L*4@02HA5kG^Yk}tKZT4^3d>^; zDzn@Hoy(mkbcfryv#o}9P{XR}sOuC4S^=A~d<-8xM>B1Eq{Gl}eLx-z9Owb9l(qO# zcxK512#Y@I=C{8|K=Bp=z$gAjh3Y2*F54<`3>tL9C{Gi{jt_h>J z2U870)Kof;+~tHf##QSw#RVb~7_&%!(Su;c?#vEthNoL8tfnN0TIxww^EQ7SH{e+T z;XY0S{k*Xe`;D8uU_`Bb5{CjExtLqs!DFoziJ{83WJyekxi^rDNAsnmwV2^&!cCzwlk~{^) zasJxy23Nv}DCZ-W7$O!JSyItNx<}8`CJ|haqmm{QV8A-fh@bJ4)?ZBC(;yt>k=@jF z5#_v}Sur3bwRBh@vONQoVp{iS>K|E1hwO4+m@DhQ_VCChzGhn#h6VNVZ!Pz;&sC71 zt6+Roa6-V2;tDmFFpvF2{T(TLNz0+% zf9N|c?W0(nxQFY5>0;X1B4A6nqXBpZH>F8rtM^Y6BU@)jz5+u2Dv{#AwdWgoyv6?g zm3oi)Kfk;rqz5{tl~ve0zQS@^b@(K=%v>yc1v|V5JGOtz@;y;6FL&vNBw0FXec#yM>~XaEK}=LZedrox~qXnb0C${Wm(%eQAo zWuj;XiO-iKi+|TqFo@hFf8$I*`Bu{kA5X^W>S$fcneMHJ)0I0Ecr9AWY+J~MqZIEl95Y?qI^e%$?UFm0kAft-TqqW#+G=*B_%nHc12dZw4pdH z_UH@d8_3c;c_9slUvfmE?w4wj;gj44lGU#caA`(V0ENaZk2eJm+yS5tv~e>+bR9jN z?zz0-CP7X;`W;B5fzE8TT^baUqg1h{^vx8ibA0L>WQrIk8MG42$F%Sr1aV95pjnT^ z?p-uY^}_nd#jjgNQCs?EOF+tHLoQu)a&>rlOS#psOIe9P0WCV4|$`*s2SFY z^v2NSeaVmShg)??AU#uwvZALIh3N7Dc8XZO6MjOU@g#T&HJ|Jqz8`^yMI1E>cH3L< zJ#D%Y-$1Ac3t20kEJ@WcEl5V8CRYLw-d*dc9fJ;;Y_Q21W1-GXU@axCGR#{)efRumWFTXz3c$@$lGr{En6B0uv|l8T*c`zXe!4YiKpGk;r7 zOVGqmFMwNPnn5)P4RA;-=H^3tzRfzBu}SM7%8e}&b9VU5e8NvVHloaPGok(!XF9yv z(!R428Rw>@6GzBoO(=Z8V$7)s4|I{ecAH94TcA`{2yO=;&R5~~GBh#?_KSlq3mI_~ zGTc-5Vy985J$p+b-a<*d-)Pzw17LLm>85`N2gcvws4jvHn+u}Y?DcRxe(vJ$B*i^& z+9WhIyqc1+`s`?Yu!wK(0|!QqCu|W6M|i($#+}($94)U$LTwAZK;>?%ybaBSQGc)k)CU#v57qbjiJOC`+xYy7*FDE1j=hqPqqX?UpEm}*uP2luKc5lE zGrVXA(QkC1RRT|!YIrPeutuDw^^N>K7Bgic&DOr1-jIeB3x5Vfx!7C~a(2_iY_MM% z?$F(^xD#o+2W3c25bah{P`YmW?#by63`8C_<~6s1MG8a`$yQMV$csQ4WAyp$;fFJ! z*elP4109|n-z)q3LS{k?xVr$fRGFM7=eZR<`a%?1g)cndYv!y-(g@ZG4=fE`Bnl#v zwmj!akl2sV*7AE8LI2G|a$OiVNw6a4yfpcSlon0mxPWIw-qf}{f@&<(o`dG%gF{bjB_74*xJU%lk-U&=zE(_l8DekM11G8($2adYAJdzy5Jjj_U!2p~IPz2e9qQk}~A+S9U07hJ17ChkwcQjF&6l zbgPm76ULlkAqR$qreOZ$D`Gfe3==_A-iO`w;hUMosN~V& zJ%A~aw{H9$s%hS1jF`GvD@=Tf*8AoV8VaZjrpW&^|oK?bVQGS!6CqF$)psjmvU*Ex73#-j@8EbVw>J*6MJ z_UI~Q_x<0=0KeB!gG@z$-ZQ(dZC|>!LK%wMoXvmaY0M_!7}U}WsAq34kG%hddO{A= zjgqnka4@;50)FoB`H3EXl8~KzIjm%vA3m}03&odUqak?) zszdbEQC+=Tsz7M`)S9Mj^vS>!IQtA?c|MjnFZ{ zqXJk!vd-qpW1y)5ctWM(cmJuEzWVVL$c{s<_UB+tqvrXG)~m-c!8J~doWfN;o3)we zFL&s8_9nPmpVy#YSth}*5g&nvAcz+i7E=;V@>wcNu+1X~T;^WAIiS{#fY}+0c%ulf zlUJb@nX@wCGEWLpS(Ki?eD5(&j6`8g4&d@r{tX(-8_J;6i(gZNxXb0xdWt5{`nseu zjm?t;3+drhIgGRX^RH1$dnaulr&ieM%;61wQkOeF!P4Pd56?5j0u}*qj^IwLRN8Mu z&U;5_+W7`qONB^DH|nBUvav#-n|ms-FNaX|Pg3U8bs&NTty6+h-AA2UjE;Nfqu9lt zN(tF~ciEZahr*ON?gJHao>#ml;Z9JRYKx79Ra#lLgMAf>@y!gd2v;KP+!ylb$O9e7q6ZE44*f}ZG2$^r zv1jN29yh)d@T&GjS>S+0zYDnv>R^J=3zi|K5gSq0&C72!KZV)H4MXY9G+on-i<{O$ zwv|kid9NDTs_Y+9<6~XzI?iO&kXwn~t59ry9&qN}GnS6StVcJaP^~%!>^hDBbj~j1 z4sR3$d>h~>bmae_8F^k~FIumw)%7i|!qXN|vE<$V;76)T!o~6z@m^H={e=~ik?mbhNt4L+%oQzOahB2J(6Q1EvVrO50y*=Q9c_p*v;BG#wfO;9? zYcsd9HoYg!kW#yMk3|TwUvV!#($oYBjHFR@%Nk_J8SN(WQPgVd^%8Z1RABmbN=2EY zT1iybQVGJ)V%%75wD}H2z>UyV>}&nkn+eC&pZqu{1~$O|Tbwl%YWUXCW<5=`5ih@7 z{3fEHpg??AZkDnd|F@-5w*bei^uvy5hg>SbEK9M%v5ua&t$a@55}xas%okb>_MJyw zP2!j09-INA@}q_*hG!a?zn9annxhANrfS?H-vNOy;CYP8f}^UeOdPE97Tv4^_;)DM zO}=1$$yM9JMg4mbFXuyFqn~ROy8mYPj@-=BKWd;LGKZQ|>!Yzx#=x>6I21XYL-rAK z0vohkf|v6KTpFM|y;EvO@J#0*M|9ODja1|-Eu&H9vu+gKIUS+)v>^s`XY@TO*cng1 zogNA59V=7n`jCMnSWm}jyzzkmeM(Z58G?0>08AzW_o)iWf_OD_tCzJxxJ;DyCQq6Y z#S32*H`)X!rh`~-pZrB#*PWg3=5evJJ$E)A5ib8lwyn7!!plUJmobc>hG@=KzD%_T z1%@OfA}@jQ`6!;eyRqug5wv!-(COWjZ=1b67HSzRNmg5Pq<-E#z2);b%k!59RdrV+ zp&F{j#4r^kof3^0g-w-S$!$W}E)a*JO%@jtf2)y1nZj#LSEueNSbl6_-c1d74=#Y| zrglz=MFL#beA|d$DO?>J;frE7{~lmJ5v3_(JffmNI_8D12Xm1C1Bl5K6tK1} zsqXVy3=#soYS-DdE&$7`15eJ$PTA)S04&9&>LcsvZRlL$F_u-34;xA_5|&jak}!GE zUe1XaFF}=45U#mhh~y(dl>2rvmcOKh04&GpF3rwx8|XfwMZ#K3I5UJbEhibwirjWI zn1IHROFE4$72Vu=IDj8uj@@`P?cfU@rJHcy(nlq-iN`0FcE6peu}7E z>N3*vwq2WP4VfKHtx*&3g_g)4LDj8SHqKuQeSG&0|1KC$P)FyS?|_<;ad?-Hus0D1 zbBG&x6^%&Z_j2@)BWgb-^h{AuAT}!D>iPnUbH`V1xARUbk2+_(TnpQ(!XdbLVhkf2 z`7k$IJ@={VolLpvg1GMbH<1q;-5SeOYLAh>++VSzT5TSLlL?ey2&+feQNmO!=@uN{ z*+#DNNpjip)ufF!y-0;bYkUE`tQ$RVV$r!Yi4G9U_OQ#tcq9xOV}nJ#1{rN$zI5}LTnuA=4vLBnwr8(`6%;SO)iCuqh_zL+iS>F(+q?i=y}!Y#iX(3&5^iwxG7g)PXU5&G@MZyGr-_&5@e#li zED+qXbC0b|8B{kgzP@5+#mZfG5eBsGsG2_Twh;Pgb?w>a=uYP^Lp<^*w(-t}^d7Zs z?C!ui*NRDyj<0l67z!VQmS}piFXBQ>;pEdb2y;h|*H zWqP;!J7m|Qif?}J)CX81{66ZMICx+5cp7x4Ib6^Z_jau@4QF10urfZRff<171s{oP z?1~3r_l{?D3mu;$9u4V?j>eRK$6_a&Q=oSrwFgu%fdBYbH&{t(N5e#$4Gvs7xuKMY z(jB@@hQ0&NO1#WHqeD7?S@NY`#%YvwVzl0i7Huo$bJ(e6qh4q@yu^9d@P7UFEJaQI z;5s#!uy$C`-2}Zj$cV2)Cn^Wk7m-9h*ng`XGEI;az05h%nhB+Ug*fUyJOJ-&6=wzV zFusD#S*VOC3P5{0Voja&UKRA9gMgv;Pe+oq&!*2Y!j%6RjwA8>F<&a80Q?3WG}%`< z&HK(2bm+?OB{3Uie(Yr$^AJZ)O*`x-mr3u#UecTQvzs`^X%Co-1j82UgPO|)rrZe@-ZjvA@u6NHkIz+2Jk1Gs`(KEoZ;zh2+woN z43HQ6oL!V$b#BV4+~qqBo}%AMSFCOtzfLTvV3Icx>NF$ zjb}xJetN#HvOsTmL`*ol{!7M0``>*$B2e`=avqf46zi4aw~|eGs+iR9FGe!Pv8dlK z$~AwU4VE9?X%|eV?FMMB{ z{sVhDg$Q7h{wnr4t5MtgtBy}ZkQ=iT>X+agEbm{Rccj-Cpf#poSlVq*S11yxt4`yq zv8I#{Lp*lE`;D1_duSd_x6}JQd2io*>gg&&pT25dy?Mr*vtcrqTgd~kjlR_Uzx!^x za$q?O>&UVra~$D8VLPFDs4lqdvdh|*U;wAK^<*1MVOEV9{MDl}YyLJ}L)&cMBuKCU zld$<{YO9OWtM@wVJ=Z-qZ=%#ncJ>Jxy0Hh3PNSH`LL*q8g$dIqQG5Z0#8U6sd7tnF zc!R=Jr?v7zCChmd1{NYn1=1>%^;ZX>=XO@V7F2&~R)6!^V5bhPpSL`p_D8xIJn>|0 zo@~%LFjIOZjr_iEEe5BC+cSQWMN}IX_V1taQEUYa*Mdw=~9Yquf3klrP zUWae{O98RQB-(4+tO2CFbJbqlTKwJ1(!c^REh1?<}R0V=n zXhVs<$L9zkX&^1(E$ zeM`cTl8zJDY1!t7eNv+%4uPIsJbdf0tv6lho}abJSkPKMsd&+9A4vney1IrP%ed8_ zV9ngbiP@LUV#;+vGos(Uzd!_<8{>Mi`g8)^0ERv-eVa!mK8lz+W$UcHppRY2{^xS# z)j=2=1i6aeLwN;1XZSKkb+!BUt7yQQF^4>L0BqgXwn{2PQfXqs(jo00wb0>GqFP`A z5bn^&@s{@ND_jRbpIi)ne{zD=Ju;v0IgY$AUWKfq1OE8Lk08JIW}n;JP)(;&Jk}Lc zSW-5*yTqf<139`0ZL^!@pC%Ys`$1jF&hn-2=cKTs-;FMb0vWcc`B^~NQZE?Z>prE4 zne#mA4l6zB#g0UL`W@kLi1dAx7T}3MA|t6%>a*MTmxEj)oUd%NP=XumSuUj zlMl`LSljCLTdemS6~LD`Wy!iXv0LdlX#v^oPKpd?81He_@HS^Z(Hx2jiBi9$dZ1u2 z)BKxF^xpdCB%Bx?M>02GrP+LE?HiX47rM?z)HT-ZCg!dR1bDtX1fYlGe2VaGkM~uP zL7ovLlVc(!$-lo@sV` z?&K7y?5d$1gVC`Tl5@`5ce1^_{%OTx>Zk7-Jt=%{LcNE;xxRV~$LoWOc5*B43$}mt z3}b&}%GI9fYOf@(=$IY!>|p4ZmT4r!V5WY{PeB6{tq#;8Pr^*uXf?&l+q^|#6nenK zNtEHPu(RJWFQmdGG-#=nKl=Pb6nS%kDWW-3%@Kr~(mO{(GlIzbpaJH=x-QP<@jd4LK|FRKw& z_vP+!*iTh>@N|w%H!X6!purxk#FD~wyxoHRZ==-xM8}b}2(o{l#)izES8y$0CK}G2 znR*Nkz(p~65TK-1^26CI} zu>v+v$$RsrP~>`^CAA7?C1Q@#qv;o-+^W_eKr?#ni1!GBm^CN%QBEs& z9beG8&yYsW z|4>{hG8OJrJdCSk{w7d_ut0-bt{zpiV2ooD8b)5A=xlN6mGAfc=&#Hne?TSjPS<1RIz{gsuVzWIX1+TLhc`xn%$oHU{MS19534v_C2z=RoQ`LiG?nW%&5G{ z23(WOnw^@(y=24$Cb2zoBZ4DK)zTsYA@HOIw_7fw@tb*$TD(LvvXmV6^U^~JiiUkz zQ9N5r@%lQH6oMcNi1Zqs_-gx=MMR*CQ&`~pmjDO$;UpAQ1g5ShL#-__mv2D}bhfdU zQG|y{DKF!qZN-J>HYiFWzs@PM^|UFORe~133W&dyu>L3JpfdeI;C+LG()<BuUl9Wj&Oie-%(o$`$2jCxikqczr@vE1YYd!CP zWYOGvp!bha@SWE}m)<=T9)qn8;r!&8{JynbnTQqUB2_EUY&&LkES_tGs9Of)x{{pj z;-Q@(0dZ~$CxwD$6}bcMo0ITL|6ycqTz-%=A&1tkqi1uUCVC<$Mj-b|?752<66W>t zW=?iQRf*7!TNYgEm?))xXRzcmc>1WB)5As$M8S7O+2QL{(cZO7)cJJ@=&LheE5tx6 z%f591bRb4_?v8glda$NYR+cJ9w=45s^&46VxKCV2$4lMsSBm0QTAfQqueeFbek;8S zYc22FR0d+Z!%jiF8O#7ju}ByV%DQ0HKX*t3%9%mly$MK zDN45NN7+eK&^k@KD({$MGqf$=0Boeh>_3;jB$&}2-SQxJ2rTqIt=-gzKmGtv8QYvT zU!X-Bnwu}9rc7aw5AO0LIWBah_cg zSKVHrdJM))CKhnBDf?Z6%C48mD{*e(`;w(>-b*}n;I*_+{~J1;CU(@eJU}X!Fb^CH z!75majsQkLxxX7M%sCIc5Lg5H;K9>2Y9z9H-vM-;pbh3@3VC9zYz{}pfuZqPBQ2e& zV<=~#(XE!(>E0ah=&R_#wbdk%(ZweKBy8A*k_&n>3KCr!m1hDnILeHy7Ir<_Cu?Jp z7|rmhssp6}iOlM}l9~L0%U&m9zL@Z2p5pBRbK|+e%VY9p{J|{7 z00c2c@Q=o7a8>ZEJ>Lxiu%DTAu=M13(L)&+D^MwNWd6hQ9%;CMkCS5fEWA>!LFx{_ z{s}?6WBt%7yZ3XkG9pQm+%PwOH{R$f4Q5X|hvtZp_~mZkzCcJKe>Y~@A|vja+*Q~x zGBPUBA5qXx%;YVzZFPV@M%}t z@V-2c516R$6c&W=8QQBqVgEaWmsgGSBt`;om6A7C zD4jxp>Bb-scCF8yKMgw3_CDpm1q9V6HL}T@^+2a$U8N|U)Fa*1d@WC|Y0~LNUI=6o zMc(a}y4^qdsEo$Q0vS?13(Ls*tFz*?KVzNiJjcmF+9pj-G(9z`B+e3U8e77Jas zxjkZz#bk+#d`A(cy;57_A$NUKnfXbKz>n#EM@L%tmcr@f_Gt+~j@?9PLwyb_HsM9bhT9%_nO2_f#_Dwe+x>A^M;=?YqsI$D=}hLdFUsTpi&_=D2-A!Om^%l%FB3x}tOiArOK~N1H?seJ2dG_-TN6 z0_|7aBNt(Zymsdr46BWpP86kf$<~0h7u-neDqB%l%`n-J;Qo-5&MIw@lISf}Y`~ou zoPYB25eC({-*26cc$cs>@^%1F&(+TrRMRhJg6-_=^t z%frO}r|4_9&POLrs@XQ=%&87rjW}g3`mwMm@JjJFED2M}!fDKuYumJQ7p9MK7n^GR zMDn8bOY@vcM%#+=7yweoJQ1?q&`6UdliNY;uW~;}y}{yg-0T)T2?);XlcuGaq_|#* z5Z8Fb`dV6hh=uvp`&|XI_zwhZ-Pf^kDzepo0MkFh6`Stk?Z<_i>dV;SG?F;)5`u1R zD^+dr8tq&3UzSavD4rZ+rQ{hGjfby3aa9cB3NF%dkJl{#{tq*79D?o{W+VziITYxF z>1XgjPhC+Iq8Y2BZTZJcC4gKn?Jb;O8pgH{2k!}-tOq{I_4xU>{|NTv6)exI%{VN= z*`$viJ3c4pRh|ErV|9YDjGtr>0|xRc-eGicVDaM~7eMYh0$9{Q!%AnDEnDH362esF zx)qV2Gw!Nh@Lm+M#vp=`HKwU}ib_VOvhPkV*v=<^=tvmh{PsH#xDLv#cqZ!}pw9+& zqgB1B<_0PE=(s^$bW43lZOq?J9RC?oV>)ygPkepN?x1>oU1X78W?yo!r+`?U$WPxv z055WzggkGwL_tw9gEzop-t`e`eyF)!#RS4Nx2IIAO0|qFC^NNKX zcT#Z19->{%A+2>j2*$LjissbKRtUr)aiGa1oNu}9^tp(Yv`bUbt6dsS0y!ITxvS`n zG7wD?F4!0#qaLlZbWbady+RvT>+}(kqdRUeyGzTLxYV7%x@2$MK#1-5JXJ(HcmJ=2 zEtq()3harv#eL{<*MzSnvy#Y)77yW{Me#YdtMb>CLS)^U?bzVyxOUNp!4~T|4IGaZ zk$-%9nVDpahkNtKn0Fx56bAsTMK96z!^!N0Bz@3!1b_xS*mB#PE)+RQX;3RVFJ$!C zKHh@;V>2DHR1!6OT$q)sUB!r&GhpnMxxWZ@yeM5lfRBL?f@0Lh$1cC;suAKt=Kyx0 z$Co)$H7;rZ;YIQ3EH2g}U}wD;?V7p}(=@3+c|j9fpv}yjS6YW~Im=>VWz?cb@66j_ zF}nSEf{A)3yI^XCZVM9Xqh)pAXET@ylL+NKFLx4>1{dWLiYhF>pLCb2u*Uc#C^C~Z z@Mpt%D*fX;WtMs)gMRl)R+EQSh9}1vgPcyuH|7pAx|g6uO}->@NC}*Tw9Dq&hajJA z!sUK_LqGL0Ep~sH&va=th{a=&=zE@eG~a(94 z(K!dx8S1+k1Jum=GK7agl7l=P#3|2O%S`kpsUg}>Z;8Tt7Jv7cvjP8Ko?*jrM=vH0 zie3mUI5{o=SI+)h;k(n8hbrqKXv#KXda=Xt9he#ZHYx94suh8QT2yti&hh!VMh{`vbrh z1_dXhFX;yfj6E!QIbwDPha(Fv_W6~6Xhgh84h6<{owY|q&AM=&S%^ECAkW{DR5p`b zh#dw2W6@@!;VD~XR(T_~3Rs9)!=bNE=2W4y+5zP>bMOGO6?=JK9mS%8sV0GKcZRd9 zSeKdmu$uPHt`=Q4d+?#eGQJh+PWQ84>m+2^N#kG2%?EXrx5wm2*bK^GERXrXIwId; zVF!x$fIgF^6CnwJ2cYs=n&Hu$B|LTHhJkc;BD2M`OkPT=_DBKveYLO9?pYE=tBcTl z*@v?Oau6@KJ)SH?l4Q6O{!|JxJRb|vqNpks4vA|Seyy-!JXeO~^&IKOSoLanv7A64!I z78G0y=>+MtFy|=g2@2ArzSDU*3FRw`llCXaR5d|N{}sdPpEcdincn(tWFJwchh$Bf zaBn9Zm35}rysy%fyp*8)4N6>y5$`J9Zosprarxv@9FtUG)8T|hDTxQZw`Hi#hCpC#zU_=ggQKAM!`=*Iv|^U z|8~vrr{(;t&Gs6#4Z>4Odmw1DcU2!JZf~0uzD*ZBxQVnsDDWLo{!K(4+ zi4>xJa?Zx9zLbqps}1k5bO|ZgWlxqJgPyg0JQSzb(-yZ7FYgkG@8`=?wUjUiQr?!& zYl4#n`PvIjc^rQrSOt-Q=dOWZ+vA?h)zsMa?b&zbIcrISJI{_QQb-JBSQ=#n zBMlzDiEXdD)KGbhRq9U8AJZTKkDLM=yY}^zW~*y*YKk{@>-Q^4=tx*6i{fPzK9Pny zCs4OUI~55}C;(xmyRq8MT+6kXjTHT~?>q3r9(YqvbmqGu2$Ic*K)pP+p1PF~bL-Y0 z-|y45)q$-TSSwE|wH@i z?GD~{nN%0cDb*=VkJz(#E+GB)8fEWuag4n>VB1Qo(v=U5)AOM$?dXL%rCT~+ijh5u zhUPDT-UvIi9u=i?-81wHemvhL@a?RcrD?@*VjnDj=f< zcaUIR_CJ~k{(1E`ibTYmu)Qs@%l6xYP|r*#{X_ji)iv0eM}~cK6C-vH&wL8^DB2ep z_%$`|DfO@9O{-V)x$fN6Mi#O3ysTjNTa%z9RGdw zKJi_oGjfeJlfLg;+3e^Ok$PQIG7MFD51Azw!t*vIEobq?k;QT;0^es{$#SDbEYHIb zcjcMXnMAq$(qSRtmz_Z5lZO8{2+0ZM)TmxQCnvm&>B|r?4>VNIJ}YxH>sx$U_ZPif zdN|;t6h!`rr~B^y{vn+aAnO@er|o|MklaU>Oe;Z<^><&SBl$qtd>%X1g$Tmp6E1%G zFg*H^4@W-vrk&#Cqd>q~HwOox6P|+0l@ttvfvZ!st3P8k6l?j>z$dqg=CM`_!~kNW zV6-1Q@&@YL@lAJUvuiv}EXpZIWCXVrgxctBDcR`xruCc$PwbnB#j7)uj;FxnD}K%~7Q~UyGc8k3$e7*B*Wh(mO^Y3E&*zoaG7qYpxwQvN2ri!H5?9+HFbgCjifi|+*%OH^K>P~lun&8>>GTteXH0-FzRod!?+q02&p#r?R z0ZVcn(?QNYk0q(H{|a6vco;jMxJ9o`Ta4K)w1$zdDH`;@n6d*jHEza#^!WrLZTPNE zSE%36>56m6))1`*VbFdI33bF8l&Fp6R9KQHbAvIkr(MG|~@778+=X5ApkpiE9 ze;&MhFYKC4p#Uxp?#kcijYW6Paal)PrfzoTQZs(HV-Dp)-I8>jb4OdWH=5wB)6r;< zD;yR^jOZE94{&}pb8^yj5-Z7>d55dS$l5$;Pj8TM;ARrC zyG*1quug`^+HlRMcyT{NC$q1P*ylPnlDiw1Qf*3+uqjDx`Y55k-{J;ls~%AnZm3SJ z+{s9rHm#5t9JQ-Vm59`Z_T&(ZT<_%590ad&BT575qvH2)7%O6@5d(i*dShR4HQ$5g zuSn3077WO6Q0(N|piodzHtvAUERL##oaz}+Yq!lieQusRt1G|zb!{X%o_D53K1RbO zA43FQvsKV;kc#DaYPWNRdAqx-|65z^VN%>v`;I+m z%Fi)E7sq1Zh=;H)g3h$VloQxa0)RT+L8C^Ws6n?~UFk7x zyDVh3+moZ)$Vg!aVp{b_S&wyN6mXtpTTx)Sj`B>*sl;GGM|IUW&2uupMU%~VlUs=^ zmZZA_4_nMh1R3o6V0Ti5do+ERKx|BbERe|IccjKJg@%SQ{p+>XL?N_sob<;t zY_=%EJDzFPLwREpww;1}hqx$o6F4+B-9WP9n_$r%*g zT$aO>A3QOlXj6^mNXGhmuPQM^humhl($fPf^meB~3CxsFXF=+eO|< z&&+l~ge_2UPFlwd*-5A~@E>Apk!LP|K!|ulI1wDQ8InTKUYNr_*1?8yH98yTHp#^; z#uR0sODF4hb3MJl^LrA9DI3-Y3+Rr_7$Gpl37&}wMAkexM1oV-YVwCxR8cMUZInC?o>bk+5em%iud>R`PAPh5tWxKHVz)M7^cmRt~R= z22t2_{?fr~r(w;>>rBygisfNpiDR@p)h`a7;5pR~(fEVde{D~C-$XPN4C1&k$g1Oa zV6c5nbzXgqNbF7>7D0X3Jsda3%!*EsKl%0l4HkD8nNVqHpd}z6Ab+*VLZz|Y4YP8! zbhER77r%FMiUvpg!{)E5-jgUc{h;|12cVCAU!{%r@j>i9WU3lDKrU$Cxk5R zUPrC#3x(Ua!p)v8QLpcF+To{%J)sc_q^tFtt0v|H)@Mi+eiF@^Zh#>cK{Plx)Nq1eDxy)Y*d8e&$$=$m;`VX zZit7^Hk+)V3+o1&iYuBQBT)od31x~U6UE(<1)TN!hpQ$@{VR-n^DO_jx6{p;>DyXM zOGcjY;C@_u&EJ5WwgC%+9ci$mj{$`agrOLFS2L2r>8Dj`FgmN1^djNM}|Op;#3@i0u#20C?OT-tdTgg9jq&$b7QSTNfj%e!sL zRYce62@K?FqI7H)thnBiBnOHD`2 zd16~>pd0j@)sfgE;xfh)nrLH%4GHf~xSI6H+Ty&|Fv6p_;H5+9e>nmyEhkonwd z>R&LxAFlD^&-a-pg|9)D2rDpqzn7!dpdM$@5wLF1oGD7nI;~G+;;pZ}$1P!KSwlTZ z1~A|wRrk+7No}{}f^>w33TbBJEvU5kH%t6RFD9-?swP|WRf$w)DbsY>X@KyRq_pA~ zSS&1z0>uFRCA7k>VRt%f0DkN5RoYLC#cHO7bG3hGh)u5GanAa@#`ppgl;I5iQF0ERsa>6i2qQRn=GJo7@wx zPz^*F`e_03ayxlu&oTw3wGKTauk%MM)pO*XZ)f^3v4C8l4dGR)91`x@4B%bBy%9bGH@< zj?w(g98%JtWYhJaAXDT-c%xC3dTf1@%+#7b->`=;JZqJ~(=6Rn)1#48-Vf_njOYD! z^h+A_6kn$8$~nXoD-03^>pFn)tcipQ2j=Cjs}~$)i%mT{1vV{Mo2ZjRRPA>a`4e$Y>{NX~(V+SV(_|=~oNi0w#PD zv9sA&kd5fkUTBB>8ItNUtLnHuy8)wAR!V85OIYV_R4!qZv2OKx{7FQNP0=$W8HUv1 z^h?Kq%xZAGBPKFTo~cKUhWbR`MpFwBIo8@&IiEiWWn?sovIhqR`L)p~=>e=x`tPev z3G+6b@Wie03T1_plghF=v1FGk(->2c!y7;<%gdx(NF0`q%SAtHag1;BGK10u!sz(e zqam&yShUQW8K84x)NsBj@oE}wZ#3pt*F{Dnc+!v1xqfibMZvjcKrVF7bBVa|Zrz>RuB=PkzH@r|=x9Hv50}EP??zMeXOPp^uwz?IdSZEsQ zx6P5XHnboKk(>0MIG6YYQAoh>D8CiFf~>`(y17p#@|hfk;frOM66w6ZT>A}ZvqL?HLx=Z?bh8ZTM;^=Xy3iJ z9i*u8DrU8yRe2624*7pT3Z@hpebIm?_-{V>jqF?Mt|b&^-CyD+UQ*8juk%|7YVqd; zy1*@(J@*^#!p>Cx=EAEq-6V}9L1mXcn3Xu0c$)?yI3oX2Xa}#*TzAUsMJ|$4X$iWS zb6Kgmeu6R6$fgRIb0OF?#0d^%PVe=eK^>rniGx25MsIb#JM153`q{+DUVM&C_LaO< z+h?IJ6w2#xWqtc0hzx@0de77~++)@SIJ~#M9FCw*idEHnyUi8&#?x}gaw=IzM9C&V zbGqnEe(0m%Be)g+FwJC%AxWX`j4Oov`2qRrs@*{MI!5wVlz<9=?|2Qhs z9LD!&z`BrenY&UOnbZipjZF@Q$mptklGI%V6RXVcYo>XuvRph)er2rB^NL0DXO?NB!O2#3X%z0L z`oxVhNXwhOG5PVwvzXh6k$cLnyOwrM_~H!DE6m2q#*}QvgHX&qI%=%FjMWfY)ciMo zqymC64^HOIhw#QQM+dB|R+*Ur`@)J;QQa(>7X+xW-x*U-~cLlytq0)a2R%LFx@b;_WhQLsj)P-P5M z+2|i$|H|g7I-F~ou?72Wa*8^K2}xrlRzYTf2p2d$tQlwNxk4U zK~97nZq-RXg~8f82FtHyw8;BQe>vB&$X9K=`NcD*4j5O$_T3snX{P*Tne8V`p5i3L z5a=K#4#tePe5j=php#D9`&wQ?%p%=-3Ub$femW01=n_rM;b(_1m8HtcAC^o92cHRD zrXXC;cj>-aNWynTJGzR9z{NI(CBoVYpDe}Le^S>O^utEaUvXHo2K^N4O%J!Y%_jn|^6(EN1+%=CB;c z&@Yiw#o;6e`&WlyO`H>Ik>Gi`{20o36H~f!1M9g_y(l=!|<(vb(~X0L&Jo{H27 zw=;8#BR35kCx!R@Xooy7QebGgS+6$?Kr3Q+^RoyU;DeVd425z2Iwcl({RGi&QHQ0u zN^607x4DePp9DqH1XzCASFtKF%vbarqWEari5W6$`^3E4Os^`nUA)CSDQwYB4^!0*7FPnJ z{ju_D!+|nEnX8O`w6vV7>YQ>>-ygzXxtW6hS%SOdvm3{$vwr?fK4WHQ0X~eTpm9AR z&v`2e;}j6NE)LpTtfEfi5GMh~&%r{+G<|c)lzy3Hfsx);{#s5hcy@ir06F|u{o0$z z(4QS{Thk*eE;-$7_qfMH(;IVR=4oh%n?HPzr~8y=J1mDxReThVbo*+31pU|>RF&?? zs3s&UUm%njX#va2@O_PS4Cv4mIOm4#7@tB__!hs|S8B1z2>U|I>P1vsfE&Oe&o8eW zY!#`Ht~q2CK{|x`xy=7-#68T8Ov>Zo52t((sM=4oEuiDAEia0XmqfhY%}0c)`$t834T*(8;x#n{Sz$Ue)AYf>iZBNJbbHeMf30d)rtCzl^@d4=i8 z8_sdSs{IPeADg@@(D%);V@|E z8K&b6OU&(m!TBo}SjcyL*4DPVc;cX29at-*-IDH`4wL%Esul$|6MIDTlXF~h=GK>( z4CKVIKb)?sJPgWZ4(2=V$1mO{*r?35#yVV+?DW4(DLdt@=Wwr3CF!K)Mc6imI~m^L zTjWfl(?e-kkdpfb&%;lEl%K=BFHx#tse6onY*Upoi?}LH;-|Z*@ugnuOZQKJ~2!;$K;Buv z5u?ZehN8`yrj$9<(~t9sIq=lHB-J*i7Ix?R3x@MeBV|Bsm#LjgIT2KSIRHKb#>HRl zvF^&1BiQnNl$JWyxx}Od{1eY*kdqet>9L2i;PZi;yOb1;0^1ol^37dYOx*AuR-E0; zqDoBND?=iwuyw$#%uKp{3RoWoH5PJXbp}I!51hXA#bk4>!`iPG51va2JRWhG*em~S z#6pcTxtFe#0UKgQ2lU*P?YD^P*->9qb%(S4!Z*p8(SN2({11Ipb&3e()qm<`kHY?M zpS|b?!#8U)A`b>+1*}%hQ+TKmto7`HMsIj&1h9*|+xoPAK}rCFu>87NX;df1PJv8} zRwcLVAO3|$8@IIT=yZ*Y1=m(mdsN^~pp$m*;Iomp2&PrD@)_|Q(~(mF39 z&T+Os$ECd~<^z!{pn6BoI?qv!FN0WS0W0NE%-osb`W?1cAKXc<)X?R0)jY@5)JX+j z!UJh7E=8oG7|#Xo*L?p_(L)6e$H*#=5l2;P_R~GFBe|VTc=hV$WIO2EXee53cOlx) zr5H4kP!EDfQLOMMeZID);VQCAEi?r#)Tu=yWv*K*wSAc}_2N73YnL_VW6 z*VQ=VtjwA-Qz5gC2+%fOdQv=VlTED^s2|OFlOx+706`F69jw92*}R9>CswWS2O{&S z?0-AOJp{uptEZf4Or(L^=y9x)*e{knrGxuA zfJG-S^ku&6%L-0k!$E`?>v+S+{P~i zzd;+jYzAm%B{%^`Ta$AY{wA7s-!Ft}mAI#xn-$aPwOyw=pLtbir=}3TMc{??>do8J z13MDC56V?Hxez>>L2!-y;)YXVe7@&JGGZw+fc3rq%j?H@<+t^vKhHi`;{gS92DT1} z-B4y3yvXr%eTG!|8v{T--QbdX0hLvIS5UlV_)*3-qdmESuVNoRQmnM*R=SXOX zC3_t-zy?|+WRm+un<|AH@tNNw<*>=)d|N?W=aV3J;-};McAQ5UXa!RH$JgI*(%7*^ z77X0)G_f9}Bo0cHL-bu9E?}J)&&32P(>!ipz#Kd;t>g-HUs)nv%SLvZEEgR9tilQj z|JItVIwo%NI5XCX$^FHyKcF6xq{)HY%XzHw1+z!ycr**UQnXPqRXRqc!jq`;J*+F!Zy%~-gWhrd z3DIUTn>AzZDlZx6q{or&&9H$g>@zng43nta97&Tt_g$MUkUqnpy*uHX!9EUYkM_-g z>7wsJM#e9Iz?IP!c%3w{t))9$jG>F~71Mw42d{^;kn7je!Vd%_HGH@--A12 zV1z=_|9`{~@I;;jRrz*1ZVP!Qy98~-MYAMwSMTj33W|;n?4jrD6^f)o2r>XrJ(Z*yUn(eqTD`U(pJ6y>)2K^q-sqLJy1k<36 zPN`8q12J8R(6OV)E$^E5DA8s!Y!+;QD(S$**Js!L)lb@|cZc{4MO>;bJq*`s)uaX4 z0lqBFCRc&kR`d{9)QtpWd7$vW-X!1h;lqLv6y~OiZ%Svy_wczgjPu9 zU~h%>nfD^R31DwM{GYe84NmtdL&-MGXs~drk@bIw2mW?ZmMwDngG&zQM2(kw;pI>7 z44m+(3M|2HoX|n>C(8VqeYk7jU9(B5>8Jo>QGy&$DrYp?{h-2sOR;L-1jvkXL5h>k z`3xaK{SXO|B)u?RrV(0zc3tUdj)JS(%zO*q(cRYCO4Ytc;$nN`5*|UobVmA=8=b@G zdN`WUPwm2wVT>)6Na*<$PN;LQxUov532{;$;|msc1i>oo4h72ci~&2App7M6nT?qc zlPBu#yDfUt_D8_8^$$x@IK1o9-EP!ccw&eFL>=l+cR4bd z@u+2CO|O-|{yzi>C4m`Kh{@L_Fe&QGz79~KVzy%esB=;O<-+{yh{S2j0E%U)(xYA0 z?mT`|IbLaw@uQi+AB{V5z_NBpRUT82{bfd{K%#$4SvZ<(1{mDc%AH8M%Th(?cXPb6 zk(Z#y8`x1CN&9{N*7Mv(VB$(|3HVwjr39dlHrzbmh@ZIZ>w0)pYuxvG@Dx5o1GMa17T}(i2M8|ys0!r#R+-6VG6uN~UbUR2J!Ia;9z51MjA^JG__UmJ z`$N|vWROYx6@@l0bM47no{AtMovV(=en6#^xBt?-g0N|lYe9c6cL&lqjE!J`GL zp9kN7f=n-;nu$hofJH0kxJr-4+ly&1f60t$NC;GURi=wpoP4Jh!@G|Fi>Bq3w=4Hj zbx`c+L3(T|mfxi+0$M&{t?x{J8~E?p`n>O+d6Tlne9NG^;{4iN7|O+~2r9Ei+wkJL zL3vvJ33oc&0;3}ro>dDwMyE0}Ecbqv_IlxPlUWZ?o7W14U?YeaqbCBe#9E3PMW=i^ zT$I8>{#x|Eq72hD0JQK6q&?S&g>8iJm=^(D)t{k9Q0}#_naeWNmt=wQg=LtyV!6Bd zvN*P7$9a|DU=nzlT66tweYc7e)(M4PWDxV2@l6$*TZIfMlRTw~s-4SKfTm$4yFXl? zI}r_c<3ZL$U-0NpNw@t=oAR}{x_+B~;DG_8WVNM=y9B&*zB6vyBz#IBd1w0)<))k4if6OTd1ge+jw_rsw7Nm6| z+TEBMR;GY?T3WgyTVI5OoBZY=bODuVIGb5)=Sk;xQG{7qT4ZKZkQ)E`WSatK*urN@ zmNit(_HM{1vjQ_{ADijnPchv@1xU`AFxeQQgJCk1kE7&B>@Se^xwYmPM-pY5(-~hv z3+-(t*{t-1%5CgYkqTu39A;?YBeS&`42UdbV3Zq?A(0nB_BlcW0bC3O*ALg*f2acv zOBTuUp`$t%OYxJUaG0!EWKUMZgy2_^P;q( zvjC8>WIEI~MJ=_zDHL{a>`a>UyQlwgWTkhSHyfBq{6cdfDJG;{QF1RO<+ba?*p%@M z+@fR^j*FH0lS%ej`Uuq^^zA~WK!fIz{c4`8*CWa#hlUHM^m z7tV*ag#1h;CeAZpgE=&IDri}-HZMSQMD9xla%K0L$1q|s8L7Aou%B;fHo!rnET*u} z2!&+yL^&9cHjC(AKFmB>aV}x*!{VB`_OHC4h7*ivOFdd(got~f-j%ic+|g7hl;h^) zgSk(lr$oKY`z_d|)Z61b#1g#((j^kO#ZjMZewSs1w}y~R%DZFA?$hMd?pjuQo+GGy zyt}0yV}pR^Jj&4F$JB=-#|k*OvWJ+@H5JpXO#W4_>|2e|J!hqFtVscO*`>u!pjnb- zgQT?|eU0(pLl*RAEcX)}XALlYrTqg-rMumAq0*CUA*Gnlf?9d_5FE;ZbH*Z+@|Twn zy7?k`xu_>fq&tE4NI6_(DMe|&p}4@td=J7IA6Spel8mcGv3{A*G}lB!{pi~&xbS9e z0A5hKtv9WtW)BtY>2m@GBs=$P^sW)TXR~axNI!mx1tfOf0z_$q^!D-o6zI`R!DNcqYicI=;vDU~M@9#g@7q?dB$+G<92<9}H+Ow@64 zmv&>fylKyER_YtM5Y~Y{PY7zB4FrN{DR!qRc8Iw!>~kchzgikShpby9kI;JGQE4A) z1j`W{!<AMt1SQe;%9QG^2MFnl^N-KI!l<>DK9~S6Qd3Lpif})%3LkX=4DlD3K*+7@te0Sd z^FR4(t--X{vgS^|0D^IWIYu~ZozhS8?#>c+?htsTWE2aQNGl*TXM0ua`3@wk^EZNO zw=c7d1P2mtK~p{dmZuO$`>W=^z_+_kU62Vk8k=%xR9|#(r{k10r)bj5gwmTPdAN)o z6yUT{9!GQg`J!&9f31Aikr9!23-T&87e%EA(Y*Ysd%8|8b9}|ktYlq19*`3=?0(AC zqdnoEJ;p8&KtG&FUeGGYz;P?PKP~F3L5Q!WK}HYab~UY19~V6I)+hX_;9`eE6Wh_? z#sWEQht74gI0I9FVwyxXfnH@wJ(vHotejVmm(M{+92>Xo?@q4()p8$(0FC2Sa;f|{ zeGfM)UbI5f?!PB^T-GkpUK*YydsYp7+T*&R$w?Z&^72%Ye$g8`a39_jx|@2iCwb|@ zoFQgb=ANO)cRz`kz?d=fvU{mGR%Ji$@a8_D_B?k?_-!Unw~u5~jU_(_%Tr*v@ z!8*P@cJl`}bUih4QeumMr&Z*ohl&(iVlW;RJNj59VM9}%3fOf+C&WuCM&+2k$<*Br zKIL;xBAIaC!Bdlo&UZvsIdvMMh>2H^+ppZU)JA+6fPnE}<;fGFn$9Tu zkan#9mhts9Nd&IDMpi|pd%iO?@I`@bdFA$szxDCbvHJhC6zb079d4L%6N67ZU4bNUj-eEY7Km>W%;B= zFfyst{fL06UsSBBY~Ki?AOF(fl1-;%2c2rF59Z?a33DX_zd7*>^7KQXfx8hs-Xm`5CF zO#sgYrmF3%h4*<1PZtuiLJSI{abUNQ-2adWN;Sv74JTEZG?|o#J2*FF&Z|pv&Za6= zBy}&L-a9E=NxB_tBUDn8Zfs8j zosZ2R^_qmEagv!uXMD3=QD%>o%q0w|D->Ir#X6^(wZ$BU)ivmh{zuK7xi2Km@LBJ5 zG=#{w28N-D9LFIu=h~$D$27vU`2$W{P-ATrZGzaLHr~y)`#Ag;JX` z7)HP>D3L$mLi1K)bqZF5ELj9=_B2n3v5muEfgG7I)^0lyIa7PO$r%)e5}x4DKt&53 zGlMTouiOEN*J}^_&OSyf{2YVY0xuYD2q1V;0uZnCr#F@|AZ((r>@I`jH0&^Fk_v}X zZ+_7skrM@sYrO!fr|xWkDhDTmaY8ED8~CxkF?`C4^mb8Zm*N2?$C-=?KZ78?vI)`< za3g0lOVg?dy+}7G^_dM?8a`YoT`RR;U3wobDxBzW%o+beRp(u_Mfg*f9&>AllsYMj zV;Iv2i@a^-8u2~~Yhs%D;uLCD!99S{AqK**WY$ zOUlv{!t?U$7wjQ&ZIQafw`dtBdM@Z&-^t>u#HQi*guc={#*jJw-=)&WUZ()K|D6LO z+k7z1CPYWd<^KHmDgqGGzqzKT_c_SnDnU$v3a=Qb+(lu=ldJLAs~uA+@F@odGpbEg=9+CdIV;0ip()hh@Jt`6ymU+tV@{y+cJ&~+zNYlVF34@dF9(w1W3^V)@$L!86fU8MwPV%Dk2%F@k&0YiOaZI$!?(*th zAf@KpOFJ1QI6UJj23>3iU$VwBe^yZPgY3xvl~(;gn|9H=D^9a}IAPyNs^y8r;YKsG z;-;@@MoCKccs=OMUMc=507QjXnVYM@7{j^nCnH70N?4_?(3CNx8zA}e@LUUjJZb%e|Qy({l1N{xJyCYNa` z;)qMIY38RF6M(V|kD4+&n082oGx$n_urojkr`_p)S~1!&Q3g;^WqxSW`CLg4L72c8 zZoADH)c1~YTX32V(im}C8kf;~;{U;XJuxs%f-Q9$D;@^#4%=7N7fS5g%Qg^oNR|<~ z%$0L@4vwNNKC(58K`fa@(PgZn?zDcU+2Q;>9n7S51&lf z467Xu%?Tt5I&LsTFud0%;rAAI?7GLErT((~RrnSFX=BsR$vUHIZO<+IE&Tpdu$uBw z%&mO`CdR?H7kmJgVbP-(#)_%}5O#^2y94+mB7X@rHXWaamN>@0at?yzr)yUrC8u}D zxX{*u)S?J*xjZiB$1HCFhR{Li(2w+=i3~KllyZ!B< zJLl)r&LhcXH!h=%Ou>Zbq|Iz|HTC1HtUolH>Kd9J!gCzXt7Gbef7OuytHPD%tiKG! z+ugcCTQn1QK~WCrMC_nz5PY^Bp4=gXmuc|NapMW5P55=C<8prcILHOqb(flmCc@(+ zVDw{6epZ>wS4HB#iRR>+{)GE!gfILX;u4yR3p>YBriH@v=L_blupiL|ybMsn#gHYL z!JhC(&AvdyM8olHCZyx_3Yfd|KV6D3)kw7OfDh~fc|^C4!Ewhh>gf1Z92+(X3c0w8)PB4zpjTcju)6qmfDj!ISj(Ni|RH zYl{d7Mr^_Q-Umv3pT&D(a+sJQR9js=IOG@a4bUTktynT$sO$|B?s-Y>)b&o;6jZ-$ ziqr5%droYZp;}9{wdHn^a_e-x-p@CZv6xN%HhI7nsDQ1Yn?YC60PZ}2=_QB~2etwu z`p}V*d_WV-PKTbVX{jCdKEgp)=@%^ggjsJ5V$l{~075{$zoRAtQy$*HdH>o_G~Q(d z;J*rP;VFm*i>T}Zo=lO93mDmaD|>w=N~ zdh}1k4i@h}@_#5xpJqjNqOPAbQCnid@2Q)+JWmbqlTi`!;YV7;25S|I>Fu%9o$cqR zU=^+Ybh5CMjT$zG^{;`S@469(!*D8NTZ;G=%dOWH3DFw=`R$dvlo8-QC`hL#0=}a` z6_W$dJQd>u zT1e_>0nbWx^FEYk0OwnwJvPf^L?Vp=`5)|A`N%U6Xlh`rWq3=%@OB3`&Dn8?+1Nh# ztd3Z?G{qgu@UkQLiC%>T1&q+7@#y7Pn42oZve0Cf-zaeSW;1|m)M#urv8$hsGel9T z78r<=;<1Qfxj|n|>6ZIjWADnksn%&)k$*%TOP|7s4UEl73R+}Nk5dWw;Nvq_fnpUU ze&f7if|9z%vr4m*4d&@!fLBa-oSU!b#v%oOi}cY-KH$ zmW8s02C#QA-we%k{c4y{WwkXA=#P6}8IaJ!eG-#{EEr+(L3^%Tr1Igt9u(jGA)W{! z`SW1(#ca=g&K;@w&yCVWla_%qB*$&<#?w79nIzOv4lR<4S9p}bY!PW?I(V()fprco z&ha)a-^Y?@L4)(X=Tyepl%-x88OeWFU}F_neRyY3u4LZB3B~&ur+FbhizL^pxupw6 zO594y@nvV~*_F=c@uQ2Ig5(T_+f%b$EaM(0lx4RBI?39%!j-}~(6)$Hy{OaF&D#W= zk#B7=C+3Pz@M+297v6$QK1lQV<3xES(P3pCdU9_}x>27}{Ujd@SvBMWM|WhI!-#X1e7D-|LM>M;Sc9*tNVby3wW zZj`XH*aXxz*-P$&C@O~;`Z1S9@;ph;SF|Gl@Tn|IJ3HUAYSm|_RTJhZW$o8vN-Ybl>FK;p}@u86A4`*M_+@R&lhLSFsN6xl13=&L@=Ts6nz z(;5g)Yzd4YbG)UA^dONzOn;N)tH}|_aSxbxM^4NPcn7`T3Y-5euOb&{);EZVaBtrp zoYsntXgof}L$gVFL@;RRCV3wtGukrc%|PWKgWnG~y!78y zf1Jv=;y}15$6DH%QlM)~e> zipL6wpfK;PwJw|s7j>ArAx(2EooXl;V{_524Zd&oy;6e+&5NVYSh77TR)d(a-ILic z=%5I~B#wL$opRV`P_y4>2Z$nlQR%eHoxiS@UhvnPo>oo)H1cQ=)_A%ouOxMapXHh) zcPD!cN5myC4~I4deKnELrt7ffa5bi!Kbk&c{5>9pYd$T2YCjwYrmxg>ISEYk`K|bj zJlwXBxbEm~#6&=PQ13<-P^`>c#rtfcJMEa)vY@m!+dK=cIbJyI$MEjR?;+G_G>?;! zaQ5KidqeKe433zCY9JMP1aqLAbkEY>ScU%zon{3!;}zBDgoSg{%%%Y|n_(%O`>$Q5 z64Cibm&PG4a#!gA8XV+%f=DH#$NU!HVz(&gG)BFZ8L%cJH+*_ta>e$T&^?Dd(3Mm? zFLGJAjIj8m0h=dL=#IbWlal(*m0!v__|A}MG zZM<1av=~^(w=P9ke&C5U+pUnrmzpDY_K|IRXZv%)1061ptZioyGojf);`!2tl}Fn5 zc4^hPo$iQdbt|y{);hG6rNcJ3%b`FV*uzQ{54D6J__gYH5SrBO#(dd;L~4w}l1%tp zrLiD)SpUEOwIX|kl(&s{xGQ~6+9A-<{zyulLel&EJ-AH>>86-g-oT!NmJ2$WFlWFu z+>As3#jLZm@lYH16B?jRJ}q~mdv=?T{^8DLIXmXNOz&Lg-A>kjP){9dA$u#a$??i7c%a4CSL5t1FSgh8pM&O`Tt zh`hmaPsptiw+9S`2_|{AlOBoJcX-p$zrxlj5xGI-cU@72n(&*uaWeULo47N4iyU{8 zNoaSYi@5j4?L@)|XORrHzbgo#a=h~arf5I#_N*>E`QyqZs~(q*?4F9j5ravY%u|K3 z@NdE90-`YDS%+}3)a_BdI3zwK5vBJ6mPLTl1uTkSxZxt3!a9|e$@&yFz@{;<-yd<0 z7mdd$Qt0zER=&d^U*_+%+*ZdZ=33~LE`3ruJ(^+)0 zeO7}UA#9)}``DO#KlMzIn$1CGi3x&4bQ{D+A!=j)D7T67;T6Sx{19nZY+pTsPS*{< zH)~*T;r6-(X(KK7TeXU3Kj>`YgtGKrnPFr}NdmLPk-TNq+wr@FU5}H2p^-v8XQOKo zTqDgX7z#_CqIp=vM}g<74#$rnWV-=#UobBZ`8v&$sRC(_v@;2e9Fw!Dt}GEBGvJ{3 zEmYYal`rN0LDb+Fr@&|E8BaqN4S?!k?ye4wvhS~~VJ7A3iTxXzGUoVW5w8cKkRx?C zxm36rnU(;Ev#%*8LQkXMHQeetMza8NDoS>9yt&Yttxn>Y7Hx+k0KQ`=T`z*YuAuri z;PvI?;%_<5B1C6-=%=S!#x1^kg@-xVo-B9{S%Ru=_DkVIQ3zGnp>HUvShj_tuOX>y zEr9OF#Wpc?4p*7uqF~gIQZ6CahlpN7905RVzD&$NvM0*oUt`sol?_q&h{z!~{R~v1 zhq=VlUlvX}A46F0z3JyYV=BBZR8<}3Lfws{%Oi!A%&U~@^-$;*Y1j9!Kjc)N?ozQ^ zogp82$wf8vPX-HHoM1+E>MkW--Rhfa)vGU|fA58p5!eW8pKGQX18IAUoIvM;bVqpg zL}|m<(0jEK!x8H=x^1omHH*-o8gPPt+nf~WpzECrg+tAgBao$Oe3AyCS9?-DYl0Tu z@#&Sz3~fPn!NN}a3cktRF?(Xw}$$APwp-)QG%Mqo^(3Mqay7oAotV9WXvo#tjAvX^&9^GZ!IWe9~7k1Q%(R@vV< zqYziJf}S&KaZDr_?Vvz*3!xfUI#}9r4dnBQvE#&V^r<6}`^iTyob?9OUqc{1EqaB9 zrnR_9f7BE?V@qZlP@xV*0+zr-bmh0BmzN~Fs{`#*rEiy|0Da0DUAhlfm#)MPh3s1| z@?_H>QxS5HJ0ry6J_(#>#xYaF3xp8@zumIK@^eQLC)zkj4LIJfP|6T&m(KfLoCuF4 zT}invY-=+KrGql5EGB(Qs?%SN|6f;oE2O#^!CjKK-2t&(0~AFE{KJaW=x~hhE{7xi zaLQLw)M0kHGUgzY=Wyn{OxJi8rAAB9x|KF^!8q^LRd>=DcBL^ra1@>GXqV_WdHsbR z3Fb8Vh+8!W*vnuo^f{M2X3k7UJEwpbB!C96myFGA8WTy2!@5SyMJPm!y5JB9lDvT!qs%n0;# zWiKkMtsHQ;=E3>(@;JA7C~<1tDfRJ*#EncGhxPbaplpPUK7ze}gE)Wlas{Q*CX&p! z7&s6!7;><4Um9kwn>xv`vUH|}Q2jzD2`JPpmL=}9HDH}3W%#Y6>bj@uIFzgegMn2m z1OK`wF#q0CpDU=&bKbe~>&F!&**0-RB2k zy(UwVTfLBd3_AKGg1O08jk438J!ALdQ^l~t=MbW$GEI3|wFEYQ5qc3r{m&gB7Kf`B z?W{W(-IecRi9dz#El!z1vHhFf!XwqB637xAl6f6=yCNT$d(Zo0Md0<0L3(Or=g9ut z6~kO1aL4%=Bm8vIZ+`MO!ut4vqf4f4Zk%8sKX}^Nr`;TP)w{Oo7qdj084FiNomizV zN?xUT8>6>qt0r?W7*RwXFzRDksD*s94~}I95kgfc^h65q#iE1}p?{LEFl=K-eb_bh zfSBTWGsf@}-%m_Ji|~KScr9jpC=+HK8CfKzuD*j(ZqH2cg8@Uhi98@;aBYr7bmIvS zEL0z&yZ<LwLi6Pp&i zmzT-}mc#5Ibytyp3T16{Gy`iSJ`BNU9|zr7j7}%AYH@yrKaR0o3aa5~^-QqC@MQZY z?&$Ep)FmiLGwNA@9*M(muxrgJ$~nKK=z_tT4gzEG+@t93K#Nd zgz>feT_I(^mliI%4E~{$PL_Nj6rIa_2v+?a+K8J+y!uyk&ZL;@;WQr}hTtI>R z1goXuZ22LNoAkRpr1WjNs)I~0ZGWeo=PIz&4e$AMhtmF4tvK-i(W40YLWR3wl5QKn zX}_jtgW}AwNUCDp9opN$#GPRj0HsZ*{Ws@P0OL2n480=uxVpLOi4G*6*vW41lHV!n zO5~Ixi&`UbELW=@H5jk*hLUL+#UzR_JA4^vx7+Z96Wx9V8a@bO6@5b41c>ZXG$dWQ zSIzfl3IhD`}Iqtkn86g4^tEk~h zB6oK6f<88(IcW^6jGf=uMX&&2NGZovk&Sy?4-PL16N7>A&MQzlxPC2(Nf}8=CO8m? zhslN2feF}Xa1_kVVz;RKa&AcY*>u#er1|-#%~Qsz`oHPN8|f1q(wk)#ocxMH?g8nKt*Z37|RVqBm>Vcvieh?puzm2&+q3Th z$GxRH!WzglEt{sk7B(0$b8`hqsnjo3)}jt?D&vYTi=zygebR>~-#HI3>BJ2GGNlcW zYm0KKD+$e~7Ulwq|8)>2cV(F7Bbb(nG$8p3IuuQ{JMJ~kHDU!iDB!;7HESveD219` z03t)-B(Z!3bplO!Q@!rm=D_*s?66 zRDVIz&|@Iyz2q)Dt_%blq*sWZL&h=U@uv_tZVve)?kLS-!~RQxg@e6jqFeVg3NP$d4V_<0YE5mRf-EE$WQtVHT_Ni<$7!;!h;7wGJTuuSI{jw`>jRB8s z#Aga6VtX@fCLbMi>f-sw64xu3o8J}NNg^$0%o%yE5*G-OphdzSx^PWef8=gn0d=*i zti1t)Wo+IX*Tcl78OXvXM!!(Gp$f(sK03k{lQ)r6xv(tSFke=V4fPSM9onK^AO2nK zZl8bA2HYziq4u4csSciCD(urCYevzYbq#OtGc-H=ko%I<7)A^+!1!-bco@E7T+AL% z!C$Pu?=>aa%x9Z`efvJJLEC?LQX2OY zYZScsq~QRl#uanSH&-q4ZxaJMtdu>Adc;(6EX^C7`pKc4gr0;v7EW_8u1m*l>3u_~ z_EvS9{Zu0`rxiP@9Yq{((y_M-EO;K}E}SS;{jZ@)q(ocjcC^y~8c~*UNR74i+FEvY zfl_XgG4cOKi|r!zEWBqDbi|<8p1V|DAGnrv-NVM7{hX&BWD1{n_Gy=8^w~2De;kWy zyAa)#-)oZP(HSbhD4i`Mhq*Sq-DX(DGpDmi@-;xHqLNB#aRR@xWt|IH5uYXe%ANl4 zzn2m<5hY9Ae}EJ?i*8iMG&V+*(sWrC*-RIPWm!mPpt#tM1@KLa+&!aeP%vmq_~&Yp zw|SwWSL@$}58l-=aBj?8!NC4JUf6ywX4iR&X&}oZRwn7bHeY-ihNTLHi+L305$&H! z&eSpV$LDB;G@2b@M0PUVFXEWs)n-V<8CG_}-gfW$NJk$jmb)Z=34t%7vSPI9bt6SU z;p1vAj3!hzDy{UH=9Q^+20qWYtmI#(t4n=Xsl#o@iR^br%tNYgID;h`d!2Ao63Gq& z@(i1X<|vmvyNKU{xfH-f0hhiYJJfS-6i$*tjBE0Oq#`qNqOl2z?NNrSr;t^*@MSyv zM!yYjp?MFrjpSdr0%gFyz^Sw(heB|)raA&EH29pq-C>;LMDg_c;$nxrOWO8xQ|5$o z%Do9h`QEf4%S;`s^p_#+ZA)O+S*mvRH1zlg6#0Z^FgX z>G9PHe&`(au;*hmwMqWbgJKim-*%J8%l`%3(8q6t_br8SxEPLo7Bt+I>@L@JqwFYU z6TY?(hphLCMR_s7{sfWyRfABH=ABC}va>ZJJF^VijGQ+?(D z5`x^auor()1IR6iCc6LFe0(adPK@i*`MRN{J0&)!oB~P+@2Au-(U$V-&Fe&vi$0x~ zW9SI|ZSmg>S-(KqLz>?f?Leks(O_j~@mQ1?4W*i^)CsbK-mA{k=N_PMIaUi zOOOm=aSN;DbD=;hEVwxeOHLt5BJrCho#W%s`Amoo_7h0T*%nX&D!bj}4CtC*m*U#2 zyvqTh66cu=45RIO8Hd@_riB#d_H_K0ZelnwAGjwq=FccK%pWKNVH~S#cAi_q21YZj z?W@?gx1&ikxbG&)mF=kjfTOR^<&YRf0rnI5Q$IqE_~nXT_EvT55h{Puxkx2}HX7$4 zcc!a0xJ}G}QOYU_uohhZpW*v3X8=mYMeH3T1_3;Fe@o0^i;&qUmuPhMaF$LcS3DAPR|ln@JVrOs0e z&9J|RNB=Q(P?|F*o8=-Xy{o=svv7qQ(9m?>^l9ga#@T$1-$<6FJg_@prc40fjr@!L zA}LE;hBhEGq=5!0FN?6enH756RBjLzo>Et*T?%O*_}bI_gmV7w`?Y0v`O|i}Rzx|a z0W}7&!w^vuNZEoeQNv&2E3MhKZSSbZZs;z(bKeN>s#Pp7Jvb&gsCx_xPo5lAX-nKO zvxB(;A6H&)X##1@=Lxt)@7WatBcPnzSPbxHL~o5*I}i!Cv3d$#(PwdS?=LMHx-}2H zG{Col+~vXfUu`z3fLu)K&f@IdVEwmT1XQ4|BhY~`!J0rcPj{@_2`c>|O$%<}^4JSf zu&I(hJ2t8Y2+b6;Nq@3noNhY)he1BInEK)n6CDd&?3a?)LIs^ON_ge)p_zR<$Aatj?ld!D zW-Gpuz;T#*(7$b4glgl-qt!+lE%%G{WjH_=>N9E=3)`H?_6S!#gy**){Onk@Q5CHQ z#Y!o^D%99ln|FuF{_EKiwS}!6tc@CaRp+}TvSwq0MGCZqm`q5AWf)lm@LoLr3klzx zz{8=bk*`XOssu$(bH;Mc6}C##`QQJyjC8>GO`I6xS_9zGpsdjK=|Mf1*{K1orBc5< z{6efYYE1jalH0I_LwNa9`X9lClJn+0;^>CZq+>FNJy!&(^F*aflzi-r$tWJ*q^SHp zxiC^neg4H7E5w+DcIz>BV%`vO94_i}hhbq`lU0NzU zz3os1^eiTht!_CT{ZjupT*d6roz0#0+NF_52vuY;dW| zKG}spO=)ZrIhC4xUGA5<>e*F70qEb~&Y$sxe=*v>q&1)sX%XoDE$0=bF9Lf5EJWYd z2+JQFwCTOZ-CbgQOA>#9J=QgQBvS_qNsnD@O~3zkl`RcPz|2JSmsJyA(}|#YGdup6 zq&qh5v#-9r`nN6~p&=}=cGknG_5_{Vl6wT4&Q;mCYRHV1S!OA)(pM2u#yqPm9Qp#h zP|IVQDX8k#5%3MaBr+}M{iY$Y?#y)AFSuW5M98RnVdQ|s=8&>aRbnC{9b(&Z<}?up%LLS0LUz?;sBe?z?CrBbGr~Lez}zs7^nl zPtxm3s7v=!qal*zEzU2?WX@_#@}^-iDQ}mUn_wxUca^gLx-ogHqB`b~Vol%gZ%}k3 z*V-&itVo3*HZH51ri5)pSb$<&rsFcZsMYvs?5+twK1C=bMJV?#uMC`x4D#oI>14;I zq<6$-0FSckC~;D+I&3R)6lN?a+9VE$pivT@rl)67CR}br(zk%Q9sMn zP1xF9t_IwoGMm(pKfKCc2q2c412CHU-4R3}=LB)KmL;S0hj|>N(;ToSX@sffkLp49 zBlq%>GbHx{4+L7`((owvrvC*+ur9?DPyQ3nCzw?Lwp zPYTPn`FE-u0y6i1KXSto+&SGKvT{o+2|U##|3FGwIZH34cF!_B7_DhB8|;Aic?n$s zB~OkZ_pHxXB&L?)ASy$#T@K`_XQ zm`Sypq_jasri<)7*bUmX47;=PejX6KTpVgy)t+3Urmhd6$gw0y961^SyI11{ zb$0ZRgL1q(>>n!`d_1K9GN)7}5bqb^*3CJUD;Ps(A>VjX@QuXIK0k8SHO4f(T_tc^ zA0AdI(AwvI=|w(DNd6{Ne!cyOVPXa%doX+CUso=bO>9B=IqWsc`M9UK-&W#|n8cly z{C>#K=}!ssopui)J0mwLcKqkWLa5uFE&535(Fk^R`$M6P z#`M0y_UvnZtU9|q6yp1_IaxaI6Uz*sbp#bf)*fzi!Aih+X)-1Y61x@dkgs>`&hj=W z{AnFP(YG3b*wBzzMu?g(u_z zVw`Y;YrT=LHrLs|Qw`f;_)^LlFa;G0PG@$%cw;fdPQ0eHIVCK+v|hBiWQ8h|WAym> z-&<5R+xLaj%llpm!l6$T8{fjm%pcgPmc0#uSs85&R&%Vo`)%|+pIdsQeSZ!h3YYJL z^aY9Mmv8hd7s*cC%v2Y(TI8fPBW90VB1#KKJTGUJBp_CR>~Pi64z5${2i3ar1gn{< zk}kbI1(LkH&JZ{*Pth9zSByLpE*vF;>2J?w?IaSu3|X;LIe#zv13-PmO9{kTQlsaY zD@)1wT(H`O;*ODI?ZCHTTSgQ%A>pm2@$Vxf;-md>c&Af4lm{uXbVI)hxgNv|*{3`W z%}`Qo;l)AM+H1yWz24*zLE^FMhOURk^KItk@5Pas8=E-Idpz02Tg4Blvdx_P&UEJH zzaG?%1$ZQC{DIZso@TOIcrM`vV&<7Uu#+|pHUstp7R$)Pgv7%xq?>HSKa-|{4&OiP z#`&+V7Cpo3Nq!^eT%e;@y_>W>kGa3me5Q$Qei8@e2-P571M92Yshzgg&Z+#RUlsE#9O3p|6qwP<){rOSAJ3V#Qke!a0 z)Vc}rfhF8@?JFPb&?x=6aR-76v7GSRF231LNJX4E8p=-sv&#sXjHn*djGrxN%b=L) zei+Yg#bL)Wp!AvKSV)eBDx*JA{+>&g{u|-qH@a9^UdfEI2DBO-I8|-CyH4QO=xdxNx@4B_Ew~erb9pvps6WnIGG-zJch26U!!;h3T2& zH%$7sJ5{@+66nKXn#xn15=9?Lxw&9ZR;kD@SO{-^lPoI=Wb@(Z@fa4HTt>n|p^kdF zinbKSdpsNA{YzK49I6)F_cbOx`1#6x(z+7rQL61%$tf=d{3znZy-)k%i&csxosJQk>EOV*qPN@HW@b(f>-xhK&}L3ooo!6dImeVIcrP^4muBw7}v zz4YPUn=+QZ;Jr`ts?2B7^fqkk=Ny3GUKkW~)22kD3WfW*7QpdZGFWrJ2B#Z?~ZF@b=nZ(t09Bkle)`M>c@N%09o9 zQ0CtO=u%*1Hu14tRmhU!w59P$Kop=aW37`g_4q#jJa6qtgGt*iXk#*Tca*H8Ov!;D%4u|@g51%qq= zhCI^bLDxVwjU-7=HN1oy!>KiWx>O3^OHg2@F?eYde;AbVxF_>jhydH(x;CmXYC1sk ziapdbA&#wOG?*|3L{vOWhsFbRWzR|Mneof?Oq zyL)*qn@|ZjNI5cUMH2VBXz<}Qfhq+j@q)|hY8ak+blPU^ z>yK1T9mr~FNpdmEKhw9=P>KleznNJ2mNNZOX_=Hh9p4zL2xGFm8vrqBgh+f#&8R2R zg7qqL$hDTbkLx*8NFTg>qV`XFuo;?FCh6yo32UA@-7mBh9S3_nCB^P7`R(CwT^J}R z?d+)I)`uWepEoG|w9LXJ<-2b^?eU}Vb8Tc^@DcS892>~;%gc!lSTO+l%OenhBec_* zZhVo}*t9P9HNdCMpgE*WhE|Jm$;RD*C*&3JIZU??<1*@Q`43Bdxs;p;)Sqkz)p7F0 zufuB}!Zpo?m@@o@+vffRLkX*f&*7W`=@x(BhoxfVK?J}RS#1p%=yg zx6+MQ5xgtdGNiO^&Ns*D%VdjuS9-^{hr^G7dP#+}RG||K<;a0e_pPy7cK*5knE2!Z zz_~5uWd1!|%3B+eS@OSxx@a;>v><4etCw^}eI2dwYv-dMZ%lxPv@_j=5<>N)*E zGW3)>&L2-_^=FDVs&iWZ_umtSEWBQ$3qE{c#AtxD(1Nl`?~iRpoYvu}C7JW;L*4_^ zRTKy!Gvc+mzoGv+bt>RKH>p9%@0V!zt{dk55RsWL3&ILUTnjA*F_vm04eDld5d4c# z%|3sl4z!0GIMcS%RsKgls~$)DIKLGSlXh|CojfR3sT!ycZvP2cxCk&G7h3VZRZAv5 zVuTJE{tOl+pUl+#Ntg|jNbgZF14|H(2KC(%EB9Y6y)uO*mF0$&rz;hNWyrQlUSWwh$5Vxjeq;yuK=T0&Tp$lt0~&rQYA z6WP7Dpk@vvFpM5GAb!!;M#0eD^*mB(9W?ZmAaS6c3qHnf|ML)1lvbJ4-qrD_8O&IKnfqidcAOE@Wq~U0f3=}_LI!R0 zpjMt;?#;SyUKQPy6`RI{jyYkmSAY*ZWtS@mQ!`!{0g%cc%qptKp4?|$4myhF^RAx? zf5;qannTL|$k4YZX|iXuyjmpL3Q;?IztjDxEvw%(_fr|*iz=^*x!kBe>(Ipu`&Aqz zFdQ&lVuT@gcUOHmSh)SH)@DyjTd#@XuH_x%4F&Qw)zbfMliu)Y8h$3rk<|aLP~upUJL(@#eZGwt1;#zJQU1KJLYo1J6U57M38rK7X9{!&O5-`Fi>3LR3k$+Afaf|2jqHg#Hbl^ZImaTg1OM}%nm z-!9D9KM&scYB|_;1bg6XDQ~`@`j1B4!!k_=`a=4@H12#TwjY9$CyXXZ4FwxQW!AA% zEt*yD=3DsDt+p*{37b*+W}-<*hH$5^&hFX@JSsxZt8k5`gUv@qg%o`zgAj%ud8wJh z^3~ktbe}e6$@$Zp!Lu=v%z`YvVJc#IA91h*tQf|q0}da``Ysk$SKQJunLSAX^Ecbo zDB1sqN0LQ-$70r*=pd25wTC)>TtUtB>^3b?AY5vbv-8DAUG$-ILi5<99i8&M2Ia}) zf?^8shEG*e_AKuIaZv84T`#5_%? z{GyAo0&*jUp=ix+74C~4R66sHg(v4}7Lxhvx(M;4MG9WOYx>b}rFNx(*~=Bk;lLxT z3V+d}&@PiIAHC1?6tAw1Ib3q3%>z%exT5HOBT_Rw5{dVE%aKTFCB@=S4o`v-;uhNw zSNz2X;92y%)rY#2zN3=j1wRoJwWXw(Aymw#iY&Yd@Wh}I`=X5S;p&IGMuHpC+d0)I z`_nb4#T+NeYlA5mH3*=DsYPD5ZHW)=n?kpXFo;1xVAD5+MZuOPytaKM;z7KwEuTyL zSprXz3v)tIjo25Nlzdb9BH0DNV%$4#F>dCAAP`L$R~Oo%+&UV}m)fzMpbFBtf_&ET zzqyp+k>IeH>o=>HJF)9S>$i)NOnTs~@E(W`ogXA%fP;*YL@$obO%k~V&uRg&pBvfd?zf`VK=#T50uDzC~_!AnA>oOW?K9EUqJnAI2 ze@!gb;KL?Z^(GeOW!uqjHn%vjeHR#K?Vz;UMO}45%5|t-WDxtL6;Jn|CwV9v*r}o! zYwIzfEHxnNI#l`}$om@gPsFgS^P7Jtzankq=go;W3Fjb*o|}?ZX>bE+90A*9SUh^N=R6pS7!!Q= z|6Di5lQfk7|N3hP;G~8cqz2IrBn-0@4E@K~krBxXKz2~|yG1>uX064uF+KMLI9ykr1g=&0&YJt@ zA*hT%|}NJo8P?G$OvoHyxDJ~0{i@<4&u9zITnFj=AYH&b-som zFUtKvkbphH88b^TRvK!=mT!avvG8;uo#DYQBYv}SY{%~x@&WJ~yz0OJHtZAxZ@ev} zJ(E;Zew11-f{szkC9dDGv@NxJT1rs*!6FL&uCjM&Zv**$Ub#MqIw<_(CU zzSe{d?9*(zrH!=!-IKvB|5f6W<}-1HL#S>l{d4-Sgf=0OMNtd9wyihm;rzXyZ6d$t zHOoONm!kMt$CmrNcMp{~jL9W5?8%ovE2hQFJp9rfnu3o$@ES7;pU*mq;j)w z05q{oeq%Y^-m(I4=9f6okaVsS?PW~^heNxTEv4q(enV2AaFE+|sv_ZU_mqpSF(3Mj za=%S|Z+(JB<&}Q^wd^2yj3^RF-+PQaRN_lUAI(XUP zR7n1m9W|s9k-CQ6EO;?H(VZU!&HMF4>AB`0H%4S=+I@%M>p;Rg{O8J{3i|g3oYy7m z&xEk2w>q4Li((a-!8et`yN`pi1_!TUq5nu^ZFd9plB?Bx+tzqqg{^oyM2s>Xkn}5! z>8Pj613kJ1r&@F{^2pSVA+*Oq!)`)O3xojh_u-`*6UY`uKh@vk;XKe|#dVj- z*W5Tvvn}nk17Th1aNT~z;_2b&oHINOCWc!M^xog;QnJ|QAx|6EYDs>`iui~whrdS% z_jgtNz@_Jt51Em%hXV*mjc@S~pYpq&4INKv3n zxn;BN38rR6l<1oPt8+F=!OmQ`zOZwO%&TN5#!%LA%HJ7)i#9<)qG%UF+Gm|>xJ`s4 zo>%}^i6-q{mo2RxIY&dt7M@C|B5cDUyq$D5$WWiy-bel9b!>z#Tj>}+;55D-#>d(* z7Q@yj11xKl`9aGlpe|}C2u6+L@ac#6Q?LQ+;Dq&IBHOD_k<$`Z9sM_6OYA3F8b%hQ zdWb$5(&VLMDr(x?m)|$do}a-50s*yy=M3%HdC|9$#Wwp5qPKi6}Qu?z)!#c((uQNMQk%iyT&DgOf3=%NN>N{XM znf|sMqKpQD z+1+}%PYwU{3REc~L9}7)?En#a7GTMVP*vBpge;{}F&G290kXSAtR0=__f((1qR^_Y zzn$ae3IO6Y-~~I&nR>KJr+ak4un7W{VCp9Cuq_$1J3>`$^Yy|oejR{Icn38*RD*c~S&*Y>>Dwzbdxg2Z;bY%LNG z(~rre;cS?5;(pBaB!CsJu{zNXxmXRPPv^UVB{h51;MSWFaY|(Vm)jd|noWA&nOfyf zWn?kNM5_^{Z9f00tmSD%gzz!bmfa$F7@ynA3VvKd*t(mUe0RDz1G{wBqKEQ;H?HDY zc_&dU1M{Gap7S&~bjJdmy}3A21`CK`{o*+*|I4Cm+LqqxlV-6Kz!8}(fN}2)NWJZ4`+tA#j<5Z_oZFs;Ed@?dhN8fnU@gQpv@%e1-#0C4LgD3`j zIZK<0Y$crNfcU4&O+Nof&*2z6UJ6h-;?f|VKkmpb$c7yRXOUc*lFT6*Smk?+j?vpR>n%slvlSW%B9X9f5+CXBl?xs-n1yJ zzf(#lRM!7tWoRQ`bQQru24>k*27dJZk6VHEtS$((pACAyZ50>9^}qMC=001to`m2& zzg0J`mx&Glh9f7A-KhKX1Ap%Y0AV=~e4Q+U|M2EuMCWBJSrVhwKjEZ@*7~d;GP2VX zXZQxbltT54yT?uBS)|fY_hMU0l@`T}ILk1sAdxORWu^2l7Q9bHnuGErkFoBCMop25d?gu&de&+X+db4bgr;HU2;vhuT+d*5(aJD__(ws%#X8jl zQx_Q_v4J26G> zL6Tmc#&pO8drJ_S_T3cJUghJ7eTQ&1#49RS8Q^Jfs@-N2{_#}$r))=PZ6D&N{$K|6 zL1YwOs9WsF@WTZHcn@C*k2h;m=&PVPQbcQNg=wq3HKV@t9LhoYwz~%2{iLj^c-#^>aSSpPE-!V(`^kzO_DR2XpTsrnru`l85Wf z%^=qMUkMWL+wjP*;D($Sar9N`7_T$gZW(Aji=7PwrRX8uCu^?On0k+34*_YxwsgKB zTqlZC-sqkv^<;Cn0MVN;t=x#v^>`n9nNbju+m9-)g))kn=7vGU8V#>b_eB(wF-{q1 zvjID32(vKI&#|*W9a{5BqSW)SklCUXW#uyeeX(LSBAk3~%a?5t#D& zA@(}soD)jQ@)ZREUd*GokP!d5E$dgW!$sFWs_S?BXW870SjcE9sy0B5amnPBk0FL! zUSd)FktzchPMf+J7K+v=69=j_ox$Bj5XZ*fJkOBMD2(8oI6z;#%sUcjunp-!*U~;c zkr4}MZ0|({~oDl1M+=wo}YS2QFT;kSV5Xvm-yU)$Mq7< z)$%R@Wj&h0cE1(?a7+$s)}DJ`W{!#Jk(IF1+kl0xynM(Kg|#fPERcqXg)4>$AKPr- zRrpR*1eIO75hdM8HTUlPrb0~w9v=?ATxcZC_x>uIeOi5!>!R)R))Nr6RsJU*%={&r z9N_x|PTdcjsKE|Zakm}GM8y(vcXYL+71HQjkJ%IXQe^%z%_H$Qn372?ZqKa)k-jzl zXWN-by=E{`UqcQ=9IgngL$FHbK9fnj`m1WTXN97IhRCB6!|!22erdHa)F#m!$aNp2 zt5{!xE@2h*>^er4&NgN-BCq;mDz!o$1~nf}L4V`Tq}k`!(51Yn6BJ~n~f`*M8+NaRip%jrko;lZD$#|G*s2>s8Q zZ)j@e$+VPr6#gU0fCd=m*y8>3JK; zC1%(Wec;x0(jmX)9ChE{W_U{0P=B=eJ-zo{<*92{@Ym>xRrqbt(m^a7YJ@Qd~_P|?7!)#Mf z(k_g{#Bo?i4Jf&X6(>HDC)>p;??G$D04&DCp@go0xEV6~kbl|YR>k7lx=aA895K0S z`E&WyUqjs^NR$u@RhSR1!0op4{a}_j^r({+No5kAXQ1U?szEH}qIMP8!JYP9wtEGY zTrR<|5eK;y>Z)Kj@@HqrOMI| zLAX+Yl2hQG2?pwaM56wwz-?&uDLQM2u9Uu#91>6?Z4~zYc;GA1MdYCT9imQu#Y2WB z@(#D|8T~NSOV4LJ&!1>J)4|6#FjZ%qTDUtRev-4Oc;uFubW?*tib?dH(LnDszH>Af zkj66x3hyD^F>!$H8P;S!j-2Iye7(YJ6rF&{T2R(-;Bc2!slf!w0n7sG0^yEwvCkqj zby;{sJ^mQl;}uW_rD3v;zS0^6CA?gwYzC70WYbwm#pZ_~qn-$c&i)v{DId1Q&Lr5$SRDp&ZG=* zCZCdXsIc@9B}g(w#2lB5h4}5GNlQV4{$y#G%tBi;uQJ*UAytF?>Mno8D04 z@6(P#^X&ujmWmY6nAe^`%W&Xu#S=<+cl9jtR`UWq-O`}7KxZ(EVJRXoEs3br_n$h*JzRq&{Tt+c zbVH0yciagq=C-cqm=CUqf^gR}6zeCNd29ZtZO7T%-;ozd$~`P1MK_IpY{yAlLAmw4 zrA(vV(RDy@mn40oROR^_bceJDXXi0-k_JreiB>! zzG&qk!RnQa3cNYxCC813a)W}i5CGkujER%O23fUbezbPz30*MSqs@=f@=IW*=1eTc zUh1XgX3uqr>vzA~7oIq$lkHK5KlpJ5=h++()N}{%AW9r58g=K_G@G)mdjY(kJ~k71 zHh!up`1Htec4-_l)|C-fqcS=a2p%(?C0=M;>2nYI>vUxFX9pv&miU*Yx*(v@{(4R^ zmyX>G;G7q94fpCDX=fc1;5D(hhk@@AUd#4R^bH0#uLE)i!mO`q;s7xn!ic7y&@Ju| z#QR+V(sn zQeQx@lmxGC4I3zj%nTIo=G2RIrxV$1w||V4{rxTI$aYptrOGV%lTdi~lE8DZsKjXp znAG`dAjkVq=EghSB+lr{ok-1J!)}7$D|7VM%Deh>qpLO}bB|77m}%b;gvUSM`{Jl= z1EQL7fju58=9%zTg6O>J`U;8~$@=FHtwxv%7)XET7OLLV5z6|I!{-3H37hi4`lsA4 zBqRT${5eBK?vce3$6a`R=d6B_z!T+uM5Ks*yhzntE*m{Pq&2W%xVY9s^u|>xB_ePo z$`pF+pqQY;Ct3b7yo2f^wkY8owMY{Ts2Kn+b_AU`f1^^0))g_TKC(S8S^xD{=B=K3 zZAzf}VzFC(5K?E^2PjbNR`=LzT4u$U3veF{_`_|N!i4b#R%SZc_3Jscg{I^Br>gf? z6ZPfVkB?Jm?OfPSQ%VuMu>`Dwmu_zXiMrilNx@${w{8+v;B79SE;G-R9zs|OIeP~q1wOE0 zj@)@9mVQ`I)M(}AFHu-}uZccxXe4G#P#~fW%wnBGH}@k6S{m?YU-(Q%E)cpsj&aaO zuaz@sI=aTP>&5;tq~R~2ossjh*ah5AgL-n*8PTNU4Z#Tb>^8~zWl5!V9n0C~TCKnI z3zfe8scSBw#%(~>=#=thmhSG>bE^w<}*(B)}=IE1rQ@_7G1qqaJos6-%LGo z5Tp{aM`!WZf!TQJff2=Sfz1^RKxZDLwQ0WwBK*j@cp(9FG*N$cshw9L;wK%D+*_Tc zRgzkzzhyH4B}~MdT}nC{kh4czI*uwAV(x{f8+etI$n!i9028F9loP%ji(Q<_5k$AQI_IErOdy+f-gm_Qf2u}*$jvJxY*N~ zIU3*Ol~~7c#dBeYO+YaXiNhgg*)t9pH|)cDJ_%8UGFwDGXZC}=ei1-N(NCpl$?8zI z-2HG0{SPw`CRauRUl^!+eyt@3LZ|!87`{*!q?Yn-X)ypF;F_s9sg2>i2cfKu>VSrO zCQJT1c@Mw4-@mtTHUl}s$MUuc-gMSy9T8*04CzauCi}A@bEF{8a=DYb!--k=A?OGz z6&;#L3_QrzJ8!G|1@#0zcFgbmfNI=oOKDlYaPJqijBcJ;C@X%JXoh&?*)|SRgZ-Sf z-S2Y=NGTb?i!kgRkR+Xgw56WY;^phwBm6Hb5)HI|qhK`Us=ixaD)ME~z2FlDd_7&{ z!Z)A=UVO}ZwKs23GLcL*74zONlQtyc46k7V#jYocti1awe`l7*%PCC|TjLu+h6SN4 zFo9&!)WulO4Y%p^tL5`RGA0qqY~LAGE7 zKG3JQhd#;$-0oJ$QrOk6z$232qp%*kau~5W?JIAP+XRqWIFGcgi`cWICf|q^09n*_ z+!Zv#V}CTqt_-ZI8!!>)`jr#Oa*iHq8-Of@pI|XO|2a`RS-qDRC^iI3(Yp|DL(6of z!$o8+KVv(vxCHyhKBJ^C=Ic~OAt!JXU&Y7)l`*8Rw8<~5U^7~t1cb+tM$!FEBs2l* z{4BP)n~Y$_M~s3hWktD}l!`$aI#SR*-r*_QVivbw#n#(6eh_cxd0I*{aFMNOePJ6M zYJs*qE{@u`G59T}p!kFeB+QOBmVAS*m?oCA4%cQ(o803lp}}eGlWZwzK~w?*JBUs; z*-33&cZFp&wG4tD|Vvl|3jI%3yi{Vyu+ z&u0D(lq+}NS)|%_>^M~L2#)yBN85AJ?r#lL^oEb+&0n zV*E3R-M}bZ-K!j*FjmuGm)WPMn9wzK;EHaB{HcmugIq^M4V7ucc(xRS-(w)xjuXK>zq{nLvuc-<=O)3h z&bl$c#IJLUue^!rtuLucNA~i#{%Jajlt1gPfo2x93No^qPOk8x+VnL05vU?zuhwlR zLgHdj`AXc{mG-cu-|qgxxIEFzQaYbaoXerq5&~4kGoO>ZbE8`uN#1h)*(jo_(RAbc z+~YdOq>f`82}pdijv<09hL)`_%T=yVWx<^Rk?HMWO_4qShjbJTSMC$V)|zUWg}!&l z0uITEgRAF+uJ3CZmMnwMuR&US$r+3x$p}B-t@9+}L+ZNU$X7g#ECeK=^SP3%BVCrEJFZ9#Wyj0>E#NY4f*HbB67 z);%7iuG*j6*EZ<;+DSI_Y^Ry9-z6rQa_VQ;9*OXK3hlwo?!;gi3fo2c!Gggn?L*uE zU#gC7Y_F!hDi>2+e3qs#-J>P62eggYm*rgL)?Kb(!P{tbU@w~H!BBhqJTaV7;9^n% zXIATFN~KD6_#z!_8_#WRdyPfijrZ(moFWU(>49$Y){e}$Y;DMCVY<}xQj%unoS5=e z`||c2zJ|drL^V_PmGDy?FU>zAAEA-UM-AN=>F`mnE<=Ft{=LiQ1E%x(Ar&BYQjrxo z1F&|ka|)voDs~sCohrc>x490p-*1cKP7Mk*H8Im7+oKw79plIBL6}{RnA2JDK~gi& z7V}>KWp(H=fP~Ue4j~X%=aXR@or&IpHQEPk0jV^}$LhUha*s zSWb$7eU~v9ga{1tg*mGgmQ0$nI|U}w=M0)Q_2%N$Wj0aE*g{H2DCdKp2Eb5}x%cZr z3I%~3Isc>whE{cdb+pgmMVjOK36d6=_0hjzw=FspD&GpH5T zK4$}X9EmuBTq!H*3Y1lvogjM|J@SO2!8wzubCpwk=-$(J+L9s`+HiXDx4MT zS=hGTuU&NvIVnqRLdgGmP9R(1;$gSU z#*FRuojHrpjkCMZLVss?H2M79U^z(k66lyvT5Ao1K9N3Te`hzTqMpw=H#93~R7S?a z9QeVJmVEw~^aZv8KeFKs0q9M|614}<=1W5yJng@gQ;3q%z&-q?41+ob0vno-6Kcs}kp3$8q=gIqm%V|*T zlE)(eCyEcVFKDPfi@h)xkfO7t+Pd5m_z0o>D;H$MmM9Y#(1=5$nhZUW)?X^N{lL{{ zU?l7pT7@(n8LxS#L zNmyo5qPlL8+&5XkXkX0l+2{jjAMuTzu4r_S<`_M2+O^^+4Nafz!;W|-YNPt@{&v0! zD9syRP==!Y-7|tHB!1y(ZP2MkK3iNE9@F7C{ut?jy1i{6f~93+Ee2u+{Si6OQmfe- z@m3l?!a+&clS6sr&YAju-|PsI%zJLXix~XUCCBwFO}W{dsTukQ+njH&_(PJcho;@Y z(^WmDVx;SE^tMIs#-B0>($4Z8P5_N4)bUgGj4C%`>z?JiK@LmSy4JsBYfI&GPZ>M#c@Y)R%hN!ShvS{}-feYv& zu>SR}Eo<`kze$EWw3AVfgg(xK#YT9KF_UxI*KM7tS7;?gIE_-H=_FgiA4|Ht6x#=* zih0IwwBW8Cm_fFPU(o=I-^$DI*W3&VQ+R$qvm zDUbS@Wl|?xn8|8vt>3K(exPVqsZH**6fk`-{ITw8i?VVPyBe{;Z|eInuF7w%*On&< zdSx{DO8A)jGFJ(a(_lVEEv%5t8dijCfM70jV%_^N`rs9wW-4z)rWXVs#=$0wvqygd zdq3>+F#?hknAFsjrNkS)#9DV$EwvsFc%MGrAB{FYovKQ6JNf3Zi0~xVy49RUct{sa zHt>;~W#X`sJsI4>cp*@2Dr3BW)1ZrHdx~AVM7_{Ri7--3z~Vom&4J_S5kA#@RCqQ3 zW3uj*l}D7SqavnpoWY{QmPq`h=$9Nh*6P8zcSvuih?}!J?LoUC@ z_35g}Fj2|rV-x=uo*TCc+dw-GUj1FwyvYYT#UdOsJYV(GZRVYO{}~!!MwzO#h-fHu z<~z6`(~Fr^{?8nC5;ybqD*Tn;@qh8@On))&uiRLxJY#jaom&dAYJ+?=?u}W%NZPHa zcO93sTGpvl=56xC+RiL3gq`%HVBQBz8rIm@l$EyaAt=*YQCr&!P~97AY8NtO)5O-L zmziRhf5%XVG3w&k+~s6ll84W^%LE}Teqw!(8f2xX0^J3$PHe9}wzK-sFmXEK4hOSVJuL5#m3P?Qur zUd-z#N-KFC`CCqNaq=u8achSYBJUmc11!0H8#@!dXnNct0cYemECxM1ZT2zvR7KrD zU=D4`Z*uB1)Z21LHx~5gCnpo2ra*|K$=<6BdTDA%iUalEAcG|25=sCmo~2doerva1 z@2&)g`DdvR7@0p995bF1BE{f95=nk6y)~1~kyMB_>vSi6hq%^r9leEkRXuUHA77@y z)8Bgyao`Cb_+uhf?1U~ zz1TN=C5{Y%bcn&ZO3DOJUcP<&0~Xhx(Fhf^#67PGqs{uz#+mK=N(aCt-f@7Vb$z^g zOw@&Iw7w}wMkL}4Pp?-#CLjA&PIS-hdQG4B%bWm&9b=4FtGOa0oHj*cmlJI~yCYH| z|I}{wPhH|Gzs#pYv-(%I|MkHMN2wO6Qdje+M2IEHx5M&o14id$>L1p2U0!({J>a)< zNbkr0ax`%TbiwfK5Xygg#VwdpI1NZ@OY&#d`^h*Lf8pB1o%tjy=fDCNC#JYcKBUgg z=3Jso>p+m^G|XeAbl`|H|Y3sTld6sty1WNN=^*bw{TT zU-Y0g?6y*uIv+St`*)egV|>eNS=V+z$ z8u@tfj+!Ds$?wrV@&sy)TDvRa1>!1cpAgWOv5iX>A;kI|x%V5PlBZeKpsJh2)8jWh zyp>-O^*_$MxV!x!XnLu_cBxcvdl8@@d znu%W-XpS=F)LV@Pw;%?dey3rC>FaS3{*$)74)v^VM-j5CWY_QZSKK(zfFDaN8 zd%PbJ2w=H~xO(=X?D58TD^!9FDg_1=33>bLlSh3o)>yZufY*X=_%?} zvyBKOjdJSG*sO0%FF!IHup1o+E~KBES8v^b;dhUqMR}cC$(O!b2`L%Ot`ENJ{1Etl zd(ZQTzVy;rzWrc)Yn{MMnx5IkNurF?Pw%!4_rR&ZxZ?v5Mt-tTXg-bza~ZK5%R9eV z{_pdKuM`n!E;FPAxSYd>6D$*M#Qvn$JL?s64)8l&dww8GvW@t5Kl?#Sr)RagKXgF?|1f z8mL`Mu>eX}cNkE5`^M&{s6C9BGS*3~hsPJY=7PC~(2%A*%;P;567SetR?ID{m1;jD zk4MSm#x$t~ewsdsg*LPDBZu^suD6K_FkhIGft(> zOLFaWwptGr_2sGLTARnNLT2`2W_CR&zgItoNQ|+%ZhPr$xg(houp-Dum?*zvK&z`+ zcKYdh=T`p7C_#|8>W{IjYaGwv9jo+hCUzLlD{`2|n67+^d|F6k>QLw?=%X?2D(*%8 zV7X~;v?4KgS}GaT!^Oif)<1wtrgS#1G3}~(I7S|JA$D$&X=hzpoi`~9EY6^enM~!j zM>|SSSW@4~>b77%YZM{|yF-B7gRjBMe#k;C1G_jB$)aM=g2>#(9i(gFr|IG~EvaPw zTJ_KbA2_qx&k?Yx&SwqbZXlh+FQB||YI-lm6NwSjEf;fkFr`$KLJ4MBH+`x9TB;+D z{m6Ln%YhF-NpPUX^_3mhmX%BezvqTCkmj|IrQ^8WG_4c*0pU(ti8;}+HGn}IMA(nF zm;vH5q>OWn1dfD@y=%NE?GCa&p>QMV*e|p3NG4-ocAqrTyti#dnR?(uSC}9{V?uKB z?9azzLv89|CMaGTO0p=}DRMY8@EHmhL9d!x$ocsmu22n=5|~k*g*ViX)dxzZw!nm{ zxx{nCqML6?ZpV6yp0xnL&Hqxm=7fxyWOqjo6iPSRb)V-&CKoOUYc-6ozyhIp4B2hy zxsV^0QC=u40y-VKlH8K+lq3&^y)<~^V}|hrgrB$quVVf^8v{LIqdng>9uDaORB);W zO5!@wz~5doJHTTf7)q-9WL)K1I0@es3R@fvDnt!$M!2lt>n0-YR^9p$1;&H)`HU_M z^m^FFdBhahybm-2pe<)fH8eDCwR#s zs~z5V1;4g04d(GeS(&sElStf^<$Af-w~6QSDCz`1u7;jMh?snI>?R1ZFP%OgSF-;~ z+(Y}Zr1N1TgZ%~ozO^Y=L+1(u!(os#?Rab6AT@rvN;_MwUAv_@9c;50DUA|WU-Aa+ zgc1dieR;B4`Vn&yy{kX*)<^v!?snD3!=z297Ns{B?gHsWHHNh|9HxS#g*54Uj>10V z@bfuGtAS3>x`gRz&I2Hz8iaZ&2Rg*Qnm)qXd;Q88mh#3e32t|ck4VkJvDC-onNZ!Z zFM)k{HC-l7BDO~hWat#mNpR5)BQi2*=Im_h{M!B6zf3Vc5D3bi3MUclSUXwd zqnRvS?7LI`-!xE)Q;iTB;`N7K?nnV%hWg~$dNdZBET^mNYH-2bCSWgK6>;}8wa3Gs zIAAwtsKjVxw$C;eknALd1P_?HIz{>Pd;t?5>IRQm*(TC9R1?c(Fx4KRWYJ%4=rGyDMP zwJkzrZ=J!|A&&V6(|Y+;sS70Hv;&mP=OF~}U9uo`qjwZRUQ)F~6j1uEskRhPwkEy} z47FyC{$PZrZrj{8!58t~h`C(tkHm7~-my|3{C}1x6EnFjYr9ar_&|lt3qC$>N+PlFjg$Lw2m%C zgDGBc@}E?PTObp1h4~exsdhG}H^BByvjRRW6z+|&yp3p?4$Zo##$H5_JwJLTdZ@QS zt9^cMLcvL7{J5~|?Or{)sdaab7Yb!6{9XM@*wpS*U&{kekON@Ovd#w_xYZVcHLZIfP6}U%DYYDAYr%9XtEeK|Aivs^uqwu-jGxmHVJYfXH_L& z-}lnB`yRA8qutfyJBpt3QRxP0KY4W~G~3!d+OonC3x-^0j~%FuOtwtLOTw*6UeOp2 zF!mMY>_*(h4x6TNV_N)a6|G*R@qDW(;baS3d{&<($QE@v9u3h;U$^2FRaA|?6Zp^U zB*MAV#B?9sown2+c-I-x!g9eD^f~dCRPn~Glb}4Y^bv9>qkB> zi*MNA|!U1oi< z@ymcYd1zk*+*^4D+xy+;k`P1Vi$iFGsSZMyq&yd3bzjFoZb&@;+H{(0d(mJMotZD% z;a7r!ivU0$Az`$riU!?dzzg;on^FNHib9`nwLD9q0!g=Gn=F05BhN1_fMj2&W^W)6 z2c;})Gq$dgpW>K#<5S-@!D|zHez9+c^sqTwt6A0e!nMO*4cKWATDVV~{YDAN)1MFG zR$zZtJtWt+9A3+rk@yGAERs)>Xe~y|wUKG*Djto((u7Sz>$bO^jk)HysjQA<0s+1Y zC|CB0Zo3JtLg4qtAYluC$@*P7mKMwYVJHQBld$wwVwg6^rc*&HjR1b6yF(PDT{Tc;%y^*bif+6 zk8EWjbeFK;rISpNnPZXnj@%)$%%>ba|G(-|B{n4;2V(o zcZw6T%2m-{UugN5w}4gGbZdXh=$UfJ8(wN34QXP*O44{>gsy-6<_4g&&FKDc&AtoJ zq4Y;+P6heusT2*KpWabp#g>+UG)7}|MUE16;5A&`v?4zwG{G%&Z}K(xpl3OH&&@)bi_yTV2T>7(XNBaIC18WoaJ@wEY$`!Oiz>@Y#W2SRMBMpEDo90Y+{-Cb z;48d(q==w>j>X*es2T&Pd2@VwX$A2SxjxkwzH~&Cj8rz4QiCmpE_Sw@OK5cPIeyQQ z=jZ7)ef+2(=8sb@CJZkVaR8+uU|+V*3Uwjqllq5_L= zR;Y1BYz0GT#@uE`cw)+$3m^ZHMH4Fer{#8mfvB~p0R>XMNQ|kV9((T0Sx#vjGu3Td z@WM_IzrvglTIOgog~5I1zXBFcX9gJWkC%))4r`NUFS}j#6vV?Z2)+#8UvaSC_?nrE zrvm|^(>Ip;jn@Lnp%2~OKHiug5)4Voxl;QHDcrS=-)!4CH+G4>i^S@vKz` zZ+pKWYD88`F;kQ$h|2|7^uEwQ!+BjTdMI=*5kcv zkgwTEio)F~c&?o6s{^%Q;v$b-4kpOJZ+e8*2ZQ=yv(`3d^MhA@t!)!KL!%D4d(;Kw;( zAnJLrRY$)?yBqU>b%(;6uqp2~VfrQzvD)yPKrg;!BSYy;)!K=eZRrGo-JSV==swi_r^uuw%Wvv8PTY)Jee&Y%#92RPyt>@p|>> z?^Vn#&CzHwOPd~k6OR&puW=#wUf`&T)1v!LCy098aSxFOFMhUU|FIb;o(Lez;tpRX+aq!Zp zHak#5Jv~NFwLkA7uE6rAVy}EzUCtp5+ycgX5z8(1cy+&#HtCc+3q`|>_+*|TTF+p@ zV!TBhdZv8Hw@pRKZNzPT7qz4{9BJ$EjZw`E2~xef*kr93MjbKGEz9x<{D!g=H`6PK zFvV>TX^wxkDpGur5_bocy%22U1f9*9(YGLnhs45SE39&p&SBc!S}^4nCz@=Tf%K7m zaTxCZ@YA0r->6v&obzy&_z%*GPeoU{c?%1MK)-2c+ssv)s)_>jc)Apo2T2v*UL_$d zbBI`zBz)w&tlfP;ZAI}Dc=?-Olq&v;<>M`@I$vlw9U2RoaZb^GAvYSPAKWG`4@NSr zDvR~n#6Gz9OP6w1_}@q}4DaxD;pRC4_J2YI9F9w_h;j2Q_eop6o@{X%e%iZhu_EMl zAhNvb2A(r!IJ{ za=zVoe33MHFZzLeBeu^Dj}{}IY;3@6M{hpNBnJjzh7O^g^0_u6rXj7~{swZ6AInp| z6#U_?+mKa=F^y_<=(P4R;h+EPYKHx-JCKr~j;Loi)kM}J;wxgL+^`ABrm*?ZQ<65^ zy&!Je@|q2YgpU@)4@XBjt(=KsI+;bxp^zH4+@sjE~i$r6*f*7(1%g%_SULxyOTyYFB&C67bbb?76l~eb=gh)IzxI`x_vq7FQ%bQWwr&8m%#ws0D8p)F zC)t$w>Kn>6DY?tJz|K>n!8FCfLW@55;?3M;DR5?^B9SCRxHr;6#}TNGzeSL+?gRbU zretR3FQ8y}o@tQ}g*-(njT-B}*gB^2(UrngsUs*+%5CBLBne5LLS2fvRPbKm#yVX2 z@eWG7rf%EZ+we}kUrB7-iOjIrl2W%f+J;4}w}y?Me~$f#g__WVECO>Dt(j3YS`r{Z z^NHQPQ6%|rde9aScCO+Bf;~nQqzan&h1teto#j{6|FB7c4o7f?gfgjcABsC@-QF;W zL&!&B3)>gp%_f1`fI;~x-@YP1x`g$JU|-a0mu@4!V(Z4YX860L_3GMDoP7)aFTHcUiL)BTFa6J*R zhtt%H08W$TTY&~k9UUs!OodzO5zb!&N%Xx6v3GS5dm2DM@D(LM^UllvDGy(M7pvkPm{B| z)Uo?+f9BohohKpV4%Nu1Zg8d8zVc-o zB)}Cz4i6==;*Y_Xo(!$mCNPmUi)@?6`SMsGJr0Qif1_dpJ0i99^!`^Cw3JjE@IHxs zxp#H?8fG_MO-x}kLl-BhgF-SgqnuF^nc3DO{=IQn8LWHAL3>Tt#M!}JzwKd|5v#rf zm-^Ridld{hM3Y88scd+4vFT#l>Is;yHv~XRIZe0y|kp=Ynw)X}$ z)YyTlq{97t&a1?QVY1R}ZQiWf{{4ey(5yAvl@{HoKIX-YpHt31Zc{o_>=3n@Ydm>g zxLR(_+UhQS5Md4uaj=S`dQWly;i?4WaLmId<(v2>4PQ({8Axq6N(!Kc>ZOgGORjiP z6D3MrhUN=Mvh5RO79YP0r8(AauP~8iy|EZ^8~#@u1Vo?ZQwvy0$#N?4ew$UmJ_x`I z@}$5&$Np3~_CI$M1`F7m-U;VW+z3i z7tvhviXd4&YprkzN%i5-ULKM4GwRI$oKD(3l~ zTem@=1p}Vz5>Z5Krr~rk$Q;xHe1iw?Wo^gR)ZwH++58iV&dH?H_I3k-rqQl0rdPz` z8%@6gbSJY=PprP%e1nsr;o_B>Eb`fd5z^04w&R1<`W@lQ?5K^Ag>dI)k>9HXuP-po z0E*>zH6Y}SX6o}+)H)T@5kNX?Jp#tzh-v&jn~_uIiRz9_mtD23M|+U@5#eBc1F_H( zz$e!=a&UJP7=OI(M}PWT-K!bLlRr^~G82FIu;rCd+OjY(f?(NT9s@K8^($NbfHi6? zOo!_vWTy*-i&^dGP9#hmms(m9cbts&l{_kcM|bt*Y86|aM0{J~DnN!Gqzu!jjv~Ob z5?1KFjcAy7@W(6`@Juo`fBSm`hKcJEW)NC-#i%kO)OJ;DM;!Yja`H5t#-q)DehcIq zB_Bt3+{({uWOBbAi*9#xiZeqZN*vQ)d&lfHhJqQjL|?su9z@dwQO{Qq2gbWG7rNt} zdm~2k#vfF9DF<0ADiLQ9RJO1ZRlI9sdLyk3EB&YO4lQbZ!4XkC1ZI22aY|!}uC4so z9*MYH&c%wQ;(x_@eofiz#=F3wi z_4I!d>6wz3dpfpK%+L(RAS%5t?=z~;JUMDHc4YcWvC`!>wIhte6?aAQXfE?j&=lx+ zEUZoso@M6}7TjTZy=0}gR~clu*wpqeQqO-`*b~*@syqZIy%YiZ?X9*<7NmhD6W(l`Bo%z1VRI^?rDE__9z-Tp^}f$v0NqbTtW6ZE YzL6%1ni#KQq68%R^WF2=>-cUHPzhnK=Kufz diff --git a/worlds/wargroove/docs/en_Wargroove.md b/worlds/wargroove/docs/en_Wargroove.md index 31fd8c81301c..b8dcc7aca852 100644 --- a/worlds/wargroove/docs/en_Wargroove.md +++ b/worlds/wargroove/docs/en_Wargroove.md @@ -1,4 +1,4 @@ -# Wargroove (Steam, Windows) +# Wargroove (Steam, Windows, Linux) ## Where is the options page? @@ -39,3 +39,5 @@ The following commands are only available when using the WargrooveClient to play - `/resync` Manually trigger a resync. - `/commander` Set the current commander to the given commander. +- `/deathlink` Toggle deathlink between On and Off. +- `/sacrifice_summon` Toggle sacrificing and summoning units between On and Off. diff --git a/worlds/wargroove/docs/wargroove_en.md b/worlds/wargroove/docs/wargroove_en.md index 9c2645178aa2..e4a6b0e393b7 100644 --- a/worlds/wargroove/docs/wargroove_en.md +++ b/worlds/wargroove/docs/wargroove_en.md @@ -2,8 +2,8 @@ ## Required Files -- Wargroove with the Double Trouble DLC installed through Steam on Windows - - Only the Steam Windows version is supported. MAC, Switch, Xbox, and Playstation are not supported. +- Wargroove with the Double Trouble DLC installed through Steam on Windows and Linux + - Only the Steam versions on Windows and Linux are supported. MAC, Switch, Xbox, and Playstation are not supported. - [The most recent Archipelago release](https://github.com/ArchipelagoMW/Archipelago/releases) ## Backup playerProgress files @@ -23,6 +23,16 @@ is strongly recommended in case they become corrupted. - You may have to replace all single \\ with \\\\. 4. Start the Wargroove client. +## Linux Only: Select AppData equivalent when starting the client +1. Shut down Wargroove if it is open. +2. Start the ArchipelagoWargrooveClient from the Archipelago installation. +3. A file select dialogue will appear, claiming it cannot detect a path to the AppData folder. +4. Navigate to your Steam install directory and select . +`/steamapps/compatdata/607050/pfx/drive_c/users/steamuser/AppData/Roaming` as the save directory. +5. Using a default Steam install path, the full AppData path is +`~/.steam/steam/steamapps/compatdata/607050/pfx/drive_c/users/steamuser/AppData/Roaming`. +6. The client should start. + ## Installing the Archipelago Wargroove Mod and Campaign files 1. Shut down Wargroove if it is open. From 3b8450036abf1861cf20129978e291f0e2baf9a3 Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Wed, 21 May 2025 23:22:55 +0000 Subject: [PATCH 070/183] core: don't reconfigure stdout if it's fake (#5020) --- Utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Utils.py b/Utils.py index f4752448e2c3..b38809ba1b9e 100644 --- a/Utils.py +++ b/Utils.py @@ -540,7 +540,8 @@ def filter(self, record: logging.LogRecord) -> bool: if add_timestamp: stream_handler.setFormatter(formatter) root_logger.addHandler(stream_handler) - sys.stdout.reconfigure(encoding="utf-8", errors="replace") + if hasattr(sys.stdout, "reconfigure"): + sys.stdout.reconfigure(encoding="utf-8", errors="replace") # Relay unhandled exceptions to logger. if not getattr(sys.excepthook, "_wrapped", False): # skip if already modified From 7079c17a0f761935b464e4949b0f08aab2535e00 Mon Sep 17 00:00:00 2001 From: Fly Hyping Date: Thu, 22 May 2025 03:11:34 -0400 Subject: [PATCH 071/183] Wargroove: apworld doc fixes (#5023) --- worlds/wargroove/docs/wargroove_en.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/wargroove/docs/wargroove_en.md b/worlds/wargroove/docs/wargroove_en.md index e4a6b0e393b7..d23f58309b5d 100644 --- a/worlds/wargroove/docs/wargroove_en.md +++ b/worlds/wargroove/docs/wargroove_en.md @@ -25,7 +25,7 @@ is strongly recommended in case they become corrupted. ## Linux Only: Select AppData equivalent when starting the client 1. Shut down Wargroove if it is open. -2. Start the ArchipelagoWargrooveClient from the Archipelago installation. +2. Start the Archipelago Wargroove Client from the Archipelago Launcher. 3. A file select dialogue will appear, claiming it cannot detect a path to the AppData folder. 4. Navigate to your Steam install directory and select . `/steamapps/compatdata/607050/pfx/drive_c/users/steamuser/AppData/Roaming` as the save directory. @@ -36,7 +36,7 @@ is strongly recommended in case they become corrupted. ## Installing the Archipelago Wargroove Mod and Campaign files 1. Shut down Wargroove if it is open. -2. Start the ArchipelagoWargrooveClient.exe from the Archipelago installation. +2. Start the Archipelago Wargroove Client from the Archipelago Launcher. This should install the mod and campaign for you. 3. Start Wargroove. From e3219ba45253132b932c1bad93d9d567d85e91c6 Mon Sep 17 00:00:00 2001 From: Silvris <58583688+Silvris@users.noreply.github.com> Date: Thu, 22 May 2025 02:47:48 -0500 Subject: [PATCH 072/183] WebHost: allow APPlayerContainers from "custom" worlds to be displayed in rooms (#4981) Gives WebHost the ability to verify that a patch file is an APPlayerContainer (defined by #4331 as a APContainer containing the "player" field), and allowed it to display any patch file that it can verify is an APPlayerContainer. --- WebHostLib/__init__.py | 4 +--- WebHostLib/templates/hostGame.html | 4 +--- WebHostLib/templates/macros.html | 14 +------------- worlds/Files.py | 13 +++++++++++++ 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/WebHostLib/__init__.py b/WebHostLib/__init__.py index 9c713419c986..934cc2498d03 100644 --- a/WebHostLib/__init__.py +++ b/WebHostLib/__init__.py @@ -80,10 +80,8 @@ def register(): """Import submodules, triggering their registering on flask routing. Note: initializes worlds subsystem.""" # has automatic patch integration - import worlds.AutoWorld import worlds.Files - app.jinja_env.filters['supports_apdeltapatch'] = lambda game_name: \ - game_name in worlds.Files.AutoPatchRegister.patch_types + app.jinja_env.filters['is_applayercontainer'] = worlds.Files.is_ap_player_container from WebHostLib.customserver import run_server_process # to trigger app routing picking up on it diff --git a/WebHostLib/templates/hostGame.html b/WebHostLib/templates/hostGame.html index 38406351537b..d7d0a9633129 100644 --- a/WebHostLib/templates/hostGame.html +++ b/WebHostLib/templates/hostGame.html @@ -17,9 +17,7 @@

    Host Game

    This page allows you to host a game which was not generated by the website. For example, if you have generated a game on your own computer, you may upload the zip file created by the generator to host the game here. This will also provide a tracker, and the ability for your players to download - their patch files if the game is core-verified. For Custom Games, you can find the patch files in - the output .zip file you are uploading here. You need to manually distribute those patch files to - your players. + their patch files.

    In addition to the zip file created by the generator, you may upload a multidata file here as well.

    diff --git a/WebHostLib/templates/macros.html b/WebHostLib/templates/macros.html index b95b8820a72f..0416658dde28 100644 --- a/WebHostLib/templates/macros.html +++ b/WebHostLib/templates/macros.html @@ -29,27 +29,15 @@ {% if patch.game == "Minecraft" %} Download APMC File... - {% elif patch.game == "Factorio" %} - - Download Factorio Mod... - {% elif patch.game == "Kingdom Hearts 2" %} - - Download Kingdom Hearts 2 Mod... - {% elif patch.game == "Ocarina of Time" %} - - Download APZ5 File... {% elif patch.game == "VVVVVV" and room.seed.slots|length == 1 %} Download APV6 File... {% elif patch.game == "Super Mario 64" and room.seed.slots|length == 1 %} Download APSM64EX File... - {% elif patch.game | supports_apdeltapatch %} + {% elif patch.game | is_applayercontainer(patch.data, patch.player_id) %} Download Patch File... - {% elif patch.game == "Final Fantasy Mystic Quest" %} - - Download APMQ File... {% else %} No file to download for this game. {% endif %} diff --git a/worlds/Files.py b/worlds/Files.py index e451d08cd9a9..447219bd191b 100644 --- a/worlds/Files.py +++ b/worlds/Files.py @@ -6,6 +6,7 @@ from enum import IntEnum import os import threading +from io import BytesIO from typing import ClassVar, Dict, List, Literal, Tuple, Any, Optional, Union, BinaryIO, overload, Sequence @@ -70,6 +71,18 @@ def get_handler(game: Optional[str]) -> Union[AutoPatchExtensionRegister, List[A container_version: int = 6 +def is_ap_player_container(game: str, data: bytes, player: int): + if not zipfile.is_zipfile(BytesIO(data)): + return False + with zipfile.ZipFile(BytesIO(data), mode='r') as zf: + if "archipelago.json" in zf.namelist(): + manifest = json.loads(zf.read("archipelago.json")) + if "game" in manifest and "player" in manifest: + if game == manifest["game"] and player == manifest["player"]: + return True + return False + + class InvalidDataError(Exception): """ Since games can override `read_contents` in APContainer, From b52310f641a07a579169ce0ce3b07e7f26f946cb Mon Sep 17 00:00:00 2001 From: qwint Date: Thu, 22 May 2025 08:12:28 -0500 Subject: [PATCH 073/183] Wargroove: Cleanup `script_name` Component in `LauncherComponents` (#5021) --- worlds/LauncherComponents.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/worlds/LauncherComponents.py b/worlds/LauncherComponents.py index d587e65d33cc..b3e3d9006092 100644 --- a/worlds/LauncherComponents.py +++ b/worlds/LauncherComponents.py @@ -232,8 +232,6 @@ def install_apworld(apworld_path: str = "") -> None: Component('ChecksFinder Client', 'ChecksFinderClient'), # Starcraft 2 Component('Starcraft 2 Client', 'Starcraft2Client'), - # Wargroove - Component('Wargroove Client', 'WargrooveClient'), # Zillion Component('Zillion Client', 'ZillionClient', file_identifier=SuffixIdentifier('.apzl')), From e0918a7a89513fc13ad648b20c1cdf9a2502fd19 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Thu, 22 May 2025 09:24:50 -0400 Subject: [PATCH 074/183] TUNIC: Move some UT stuff out of init, put in UT poptracker integration support (#4967) --- worlds/tunic/__init__.py | 44 +---- worlds/tunic/ut_stuff.py | 383 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 393 insertions(+), 34 deletions(-) create mode 100644 worlds/tunic/ut_stuff.py diff --git a/worlds/tunic/__init__.py b/worlds/tunic/__init__.py index cdc8f05cb91a..84f1338ad5e3 100644 --- a/worlds/tunic/__init__.py +++ b/worlds/tunic/__init__.py @@ -16,9 +16,10 @@ get_hexagons_in_pool, HexagonQuestAbilityUnlockType, EntranceLayout) from .breakables import breakable_location_name_to_id, breakable_location_groups, breakable_location_table from .combat_logic import area_data, CombatState +from . import ut_stuff from worlds.AutoWorld import WebWorld, World from Options import PlandoConnection, OptionError, PerGameCommonOptions, Removed, Range -from settings import Group, Bool +from settings import Group, Bool, FilePath class TunicSettings(Group): @@ -27,9 +28,15 @@ class DisableLocalSpoiler(Bool): class LimitGrassRando(Bool): """Limits the impact of Grass Randomizer on the multiworld by disallowing local_fill percentages below 95.""" + + class UTPoptrackerPath(FilePath): + """Path to the user's TUNIC Poptracker Pack.""" + description = "TUNIC Poptracker Pack zip file" + required = False disable_local_spoiler: Union[DisableLocalSpoiler, bool] = False limit_grass_rando: Union[LimitGrassRando, bool] = True + ut_poptracker_path: Union[UTPoptrackerPath, str] = UTPoptrackerPath() class TunicWeb(WebWorld): @@ -113,6 +120,7 @@ class TunicWorld(World): using_ut: bool # so we can check if we're using UT only once passthrough: Dict[str, Any] ut_can_gen_without_yaml = True # class var that tells it to ignore the player yaml + tracker_world: ClassVar = ut_stuff.tracker_world def generate_early(self) -> None: try: @@ -168,39 +176,7 @@ def replace_connection(old_cxn: PlandoConnection, new_cxn: PlandoConnection, ind f"They have Direction Pairs enabled and the connection " f"{cxn.entrance} --> {cxn.exit} does not abide by this option.") - # Universal tracker stuff, shouldn't do anything in standard gen - if hasattr(self.multiworld, "re_gen_passthrough"): - if "TUNIC" in self.multiworld.re_gen_passthrough: - self.using_ut = True - self.passthrough = self.multiworld.re_gen_passthrough["TUNIC"] - self.options.start_with_sword.value = self.passthrough["start_with_sword"] - self.options.keys_behind_bosses.value = self.passthrough["keys_behind_bosses"] - self.options.sword_progression.value = self.passthrough["sword_progression"] - self.options.ability_shuffling.value = self.passthrough["ability_shuffling"] - self.options.laurels_zips.value = self.passthrough["laurels_zips"] - self.options.ice_grappling.value = self.passthrough["ice_grappling"] - self.options.ladder_storage.value = self.passthrough["ladder_storage"] - self.options.ladder_storage_without_items = self.passthrough["ladder_storage_without_items"] - self.options.lanternless.value = self.passthrough["lanternless"] - self.options.maskless.value = self.passthrough["maskless"] - self.options.hexagon_quest.value = self.passthrough["hexagon_quest"] - self.options.hexagon_quest_ability_type.value = self.passthrough.get("hexagon_quest_ability_type", 0) - self.options.entrance_rando.value = self.passthrough["entrance_rando"] - self.options.shuffle_ladders.value = self.passthrough["shuffle_ladders"] - self.options.entrance_layout.value = EntranceLayout.option_standard - if ("ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].keys() - or "ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].values()): - self.options.entrance_layout.value = EntranceLayout.option_fixed_shop - self.options.decoupled = self.passthrough.get("decoupled", 0) - self.options.laurels_location.value = LaurelsLocation.option_anywhere - self.options.grass_randomizer.value = self.passthrough.get("grass_randomizer", 0) - self.options.breakable_shuffle.value = self.passthrough.get("breakable_shuffle", 0) - self.options.laurels_location.value = self.options.laurels_location.option_anywhere - self.options.combat_logic.value = self.passthrough.get("combat_logic", 0) - else: - self.using_ut = False - else: - self.using_ut = False + ut_stuff.setup_options_from_slot_data(self) self.player_location_table = standard_location_name_to_id.copy() diff --git a/worlds/tunic/ut_stuff.py b/worlds/tunic/ut_stuff.py new file mode 100644 index 000000000000..8296452c73ec --- /dev/null +++ b/worlds/tunic/ut_stuff.py @@ -0,0 +1,383 @@ +from typing import Any, TYPE_CHECKING + +from .options import EntranceLayout, LaurelsLocation + +if TYPE_CHECKING: + from . import TunicWorld + + +def setup_options_from_slot_data(world: "TunicWorld") -> None: + if hasattr(world.multiworld, "re_gen_passthrough"): + if "TUNIC" in world.multiworld.re_gen_passthrough: + world.using_ut = True + world.passthrough = world.multiworld.re_gen_passthrough["TUNIC"] + world.options.start_with_sword.value = world.passthrough["start_with_sword"] + world.options.keys_behind_bosses.value = world.passthrough["keys_behind_bosses"] + world.options.sword_progression.value = world.passthrough["sword_progression"] + world.options.ability_shuffling.value = world.passthrough["ability_shuffling"] + world.options.laurels_zips.value = world.passthrough["laurels_zips"] + world.options.ice_grappling.value = world.passthrough["ice_grappling"] + world.options.ladder_storage.value = world.passthrough["ladder_storage"] + world.options.ladder_storage_without_items = world.passthrough["ladder_storage_without_items"] + world.options.lanternless.value = world.passthrough["lanternless"] + world.options.maskless.value = world.passthrough["maskless"] + world.options.hexagon_quest.value = world.passthrough["hexagon_quest"] + world.options.hexagon_quest_ability_type.value = world.passthrough.get("hexagon_quest_ability_type", 0) + world.options.entrance_rando.value = world.passthrough["entrance_rando"] + world.options.shuffle_ladders.value = world.passthrough["shuffle_ladders"] + # world.options.shuffle_fuses.value = world.passthrough.get("shuffle_fuses", 0) + # world.options.shuffle_bells.value = world.passthrough.get("shuffle_bells", 0) + world.options.grass_randomizer.value = world.passthrough.get("grass_randomizer", 0) + world.options.breakable_shuffle.value = world.passthrough.get("breakable_shuffle", 0) + world.options.entrance_layout.value = EntranceLayout.option_standard + if ("ziggurat2020_3, ziggurat2020_1_zig2_skip" in world.passthrough["Entrance Rando"].keys() + or "ziggurat2020_3, ziggurat2020_1_zig2_skip" in world.passthrough["Entrance Rando"].values()): + world.options.entrance_layout.value = EntranceLayout.option_fixed_shop + world.options.decoupled = world.passthrough.get("decoupled", 0) + world.options.laurels_location.value = LaurelsLocation.option_anywhere + world.options.combat_logic.value = world.passthrough.get("combat_logic", 0) + else: + world.using_ut = False + else: + world.using_ut = False + + +# for UT poptracker integration map tab switching +def map_page_index(data: Any) -> int: + mapping: dict[str, int] = { + "Beneath the Earth": 1, + "Beneath the Well": 2, + "The Cathedral": 3, + "Dark Tomb": 4, + "Eastern Vault": 5, + "Frog's Domain": 6, + "Swamp": 7, + "Overworld": 8, + "The Quarry": 9, + "Ruined Atoll": 10, + "West Gardens": 11, + "The Grand Library": 12, + "East Forest": 13, + "The Far Shore": 14, + "The Rooted Ziggurat": 15, + } + return mapping.get(data, 0) + + +# mapping of everything after the second to last slash and the location id +# lua used for the name: string.match(full_name, "[^/]*/[^/]*$") +poptracker_data: dict[str, int] = { + "[Powered Secret Room] Chest/Follow the Purple Energy Road": 509342400, + "[Entryway] Chest/Mind the Slorms": 509342401, + "[Third Room] Beneath Platform Chest/Run from the tentacles!": 509342402, + "[Third Room] Tentacle Chest/Water Sucks": 509342403, + "[Entryway] Obscured Behind Waterfall/You can just go in there": 509342404, + "[Save Room] Upper Floor Chest 1/Through the Power of Prayer": 509342405, + "[Save Room] Upper Floor Chest 2/Above the Fox Shrine": 509342406, + "[Second Room] Underwater Chest/Hidden Passage": 509342407, + "[Back Corridor] Right Secret/Hidden Path": 509342408, + "[Back Corridor] Left Secret/Behind the Slorms": 509342409, + "[Second Room] Obscured Behind Waterfall/Just go in there": 509342410, + "[Side Room] Chest By Pots/Just Climb up There": 509342411, + "[Side Room] Chest By Phrends/So Many Phrends!": 509342412, + "[Second Room] Page/Ruined Atoll Map": 509342413, + "[Passage To Dark Tomb] Page Pickup/Siege Engine": 509342414, + "[1F] Guarded By Lasers/Beside 3 Miasma Seekers": 509342415, + "[1F] Near Spikes/Mind the Miasma Seeker": 509342416, + "Birdcage Room/[2F] Bird Room": 509342417, + "[2F] Entryway Upper Walkway/Overlooking Miasma": 509342418, + "[1F] Library/By the Books": 509342419, + "[2F] Library/Behind the Ladder": 509342420, + "[2F] Guarded By Lasers/Before the big reveal...": 509342421, + "Birdcage Room/[2F] Bird Room Secret": 509342422, + "[1F] Library Secret/Pray to the Wallman": 509342423, + "Spike Maze Near Exit/Watch out!": 509342424, + "2nd Laser Room/Can you roll?": 509342425, + "1st Laser Room/Use a bomb?": 509342426, + "Spike Maze Upper Walkway/Just walk right!": 509342427, + "Skulls Chest/Move the Grave": 509342428, + "Spike Maze Near Stairs/In the Corner": 509342429, + "1st Laser Room Obscured/Follow the red laser of death": 509342430, + "Guardhouse 2 - Upper Floor/In the Mound": 509342431, + "Guardhouse 2 - Bottom Floor Secret/Hidden Hallway": 509342432, + "Guardhouse 1 Obscured/Upper Floor Obscured": 509342433, + "Guardhouse 1/Upper Floor": 509342434, + "Guardhouse 1 Ledge HC/Dancing Fox Spirit Holy Cross": 509342435, + "Golden Obelisk Holy Cross/Use the Holy Cross": 509342436, + "Ice Rod Grapple Chest/Freeze the Blob and ascend With Orb": 509342437, + "Above Save Point/Chest": 509342438, + "Above Save Point Obscured/Hidden Path": 509342439, + "Guardhouse 1 Ledge/From Guardhouse 1 Chest": 509342440, + "Near Save Point/Chest": 509342441, + "Ambushed by Spiders/Beneath Spider Chest": 509342442, + "Near Telescope/Up on the Wall": 509342443, + "Ambushed by Spiders/Spider Chest": 509342444, + "Lower Dash Chest/Dash Across": 509342445, + "Lower Grapple Chest/Grapple Across": 509342446, + "Bombable Wall/Follow the Flowers": 509342447, + "Page On Teleporter/Page": 509342448, + "Forest Belltower Save Point/Near Save Point": 509342449, + "Forest Belltower - After Guard Captain/Chest": 509342450, + "East Bell/Forest Belltower - Obscured Near Bell Top Floor": 509342451, + "Forest Belltower Obscured/Obscured Beneath Bell Bottom Floor": 509342452, + "Forest Belltower Page/Page Pickup": 509342453, + "Forest Grave Path - Holy Cross Code by Grave/Single Money Chest": 509342454, + "Forest Grave Path - Above Gate/Chest": 509342455, + "Forest Grave Path - Obscured Chest/Behind the Trees": 509342456, + "Forest Grave Path - Upper Walkway/From the top of the Guardhouse": 509342457, + "The Hero's Sword/Forest Grave Path - Sword Pickup": 509342458, + "The Hero's Sword/Hero's Grave - Tooth Relic": 509342459, + "Fortress Courtyard - From East Belltower/Crack in the Wall": 509342460, + "Fortress Leaf Piles - Secret Chest/Dusty": 509342461, + "Fortress Arena/Hexagon Red": 509342462, + "Fortress Arena/Siege Engine|Vault Key Pickup": 509342463, + "Fortress East Shortcut - Chest Near Slimes/Mind the Custodians": 509342464, + "[West Wing] Candles Holy Cross/Use the Holy Cross": 509342465, + "Westmost Upper Room/[West Wing] Dark Room Chest 1": 509342466, + "Westmost Upper Room/[West Wing] Dark Room Chest 2": 509342467, + "[East Wing] Bombable Wall/Bomb the Wall": 509342468, + "[West Wing] Page Pickup/He will never visit the Far Shore": 509342469, + "Fortress Grave Path - Upper Walkway/Go Around the East Wing": 509342470, + "Vault Hero's Grave/Fortress Grave Path - Chest Right of Grave": 509342471, + "Vault Hero's Grave/Fortress Grave Path - Obscured Chest Left of Grave": 509342472, + "Vault Hero's Grave/Hero's Grave - Flowers Relic": 509342473, + "Bridge/Chest": 509342474, + "Cell Chest 1/Drop the Shortcut Rope": 509342475, + "Obscured Behind Waterfall/Muffling Bell": 509342476, + "Back Room Chest/Lose the Lure or take 2 Damage": 509342477, + "Cell Chest 2/Mind the Custodian": 509342478, + "Near Vault/Already Stolen": 509342479, + "Slorm Room/Tobias was Trapped Here Once...": 509342480, + "Escape Chest/Don't Kick Fimbleton!": 509342481, + "Grapple Above Hot Tub/Look Up": 509342482, + "Above Vault/Obscured Doorway Ledge": 509342483, + "Main Room Top Floor/Mind the Adult Frog": 509342484, + "Main Room Bottom Floor/Altar Chest": 509342485, + "Side Room Secret Passage/Upper Right Corner": 509342486, + "Side Room Chest/Oh No! Our Frogs! They're Dead!": 509342487, + "Side Room Grapple Secret/Grapple on Over": 509342488, + "Magic Orb Pickup/Frult Meeting": 509342489, + "The Librarian/Hexagon Green": 509342490, + "Library Hall/Holy Cross Chest": 509342491, + "Library Lab Chest by Shrine 2/Chest": 509342492, + "Library Lab Chest by Shrine 1/Chest": 509342493, + "Library Lab Chest by Shrine 3/Chest": 509342494, + "Library Lab by Fuse/Behind Chalkboard": 509342495, + "Library Lab Page 3/Page": 509342496, + "Library Lab Page 1/Page": 509342497, + "Library Lab Page 2/Page": 509342498, + "Hero's Grave/Mushroom Relic": 509342499, + "Mountain Door/Lower Mountain - Page Before Door": 509342500, + "Changing Room/Normal Chest": 509342501, + "Fortress Courtyard - Chest Near Cave/Next to the Obelisk": 509342502, + "Fortress Courtyard - Near Fuse/Pray": 509342503, + "Fortress Courtyard - Below Walkway/Under the Stairs": 509342504, + "Fortress Courtyard - Page Near Cave/Heir-To-The-Heir": 509342505, + "West Furnace/Lantern Pickup": 509342506, + "Maze Cave/Maze Room Chest": 509342507, + "Inside the Old House/Normal Chest": 509342508, + "Inside the Old House/Shield Pickup": 509342509, + "[West] Obscured Behind Windmill/Behind the Trees": 509342510, + "[South] Beach Chest/Beside the Bridge": 509342511, + "[West] Obscured Near Well/Hidden by Trees": 509342512, + "[Central] Bombable Wall/Let the flowers guide you": 509342513, + "[Northwest] Chest Near Turret/Mind the Autobolt...": 509342514, + "[East] Chest Near Pots/Chest": 509342515, + "[Northwest] Chest Near Golden Obelisk/Underneath the Staff": 509342516, + "[Southwest] South Chest Near Guard/End of the Bridge": 509342517, + "[Southwest] West Beach Guarded By Turret/Chest": 509342518, + "[Southwest] Chest Guarded By Turret/Behind the Trees": 509342519, + "[Northwest] Shadowy Corner Chest/Dark Ramps Chest": 509342520, + "[Southwest] Obscured In Tunnel To Beach/Deep in the Wall": 509342521, + "[Southwest] Grapple Chest Over Walkway/Jeffry": 509342522, + "[Northwest] Chest Beneath Quarry Gate/Across the Bridge": 509342523, + "[Southeast] Chest Near Swamp/Under the Bridge": 509342524, + "[Southwest] From West Garden/Dash Across": 509342525, + "[East] Grapple Chest/Grapple Across": 509342526, + "[Southwest] West Beach Guarded By Turret 2/Get Across": 509342527, + "Sand Hook/[Southwest] Beach Chest Near Flowers": 509342528, + "[Southwest] Bombable Wall Near Fountain/Let the flowers guide you": 509342529, + "[West] Chest After Bell/Post-Dong!": 509342530, + "[Southwest] Tunnel Guarded By Turret/Below Jeffry": 509342531, + "[East] Between ladders near Ruined Passage/Chest": 509342532, + "[Northeast] Chest Above Patrol Cave/Behind Blue Rudelings": 509342533, + "[Southwest] Beach Chest Beneath Guard/Under Bridge": 509342534, + "[Central] Chest Across From Well/Across the Bridge": 509342535, + "[Northwest] Chest Near Quarry Gate/Rudeling Camp": 509342536, + "[East] Chest In Trees/Above Locked House": 509342537, + "[West] Chest Behind Moss Wall/Around the Corner": 509342538, + "[South] Beach Page/Page": 509342539, + "[Southeast] Page on Pillar by Swamp/Dash Across": 509342540, + "[Southwest] Key Pickup/Old House Key": 509342541, + "[West] Key Pickup/Hero's Path Key": 509342542, + "[East] Page Near Secret Shop/Page": 509342543, + "Fountain/[Southwest] Fountain Page": 509342544, + "[Northwest] Page on Pillar by Dark Tomb/A Terrible Power Rises": 509342545, + "Magic Staff/[Northwest] Fire Wand Pickup": 509342546, + "[West] Page on Teleporter/Treasures and Tools": 509342547, + "[Northwest] Page By Well/If you seek to increase your power...": 509342548, + "Patrol Cave/Normal Chest": 509342549, + "Ruined Shop/Chest 1": 509342550, + "Ruined Shop/Chest 2": 509342551, + "Ruined Shop/Chest 3": 509342552, + "Ruined Passage/Page Pickup": 509342553, + "Shop/Potion 1": 509342554, + "Shop/Potion 2": 509342555, + "Shop/Coin 1": 509342556, + "Shop/Coin 2": 509342557, + "Special Shop/Secret Page Pickup": 509342558, + "Stick House/Stick Chest": 509342559, + "Sealed Temple/Page Pickup": 509342560, + "Inside Hourglass Cave/Hourglass Chest": 509342561, + "Secret Chest/Dash Across": 509342562, + "Page Pickup/A Long, Long Time Ago...": 509342563, + "Coins in the Well/10 Coins": 509342564, + "Coins in the Well/15 Coins": 509342565, + "Coins in the Well/3 Coins": 509342566, + "Coins in the Well/6 Coins": 509342567, + "Secret Gathering Place/20 Fairy Reward": 509342568, + "Secret Gathering Place/10 Fairy Reward": 509342569, + "[West] Moss Wall Holy Cross/Use the Holy Cross": 509342570, + "[Southwest] Flowers Holy Cross/Use the Holy Cross": 509342571, + "Fountain/[Southwest] Fountain Holy Cross": 509342572, + "[Northeast] Flowers Holy Cross/Use the Holy Cross": 509342573, + "[East] Weathervane Holy Cross/Use the Holy Cross": 509342574, + "[West] Windmill Holy Cross/Sacred Geometry": 509342575, + "Sand Hook/[Southwest] Haiku Holy Cross": 509342576, + "[West] Windchimes Holy Cross/Power Up!": 509342577, + "[South] Starting Platform Holy Cross/Back to Work": 509342578, + "Magic Staff/[Northwest] Golden Obelisk Page": 509342579, + "Inside the Old House/Holy Cross Door Page": 509342580, + "Cube Cave/Holy Cross Chest": 509342581, + "Southeast Cross Door/Chest 3": 509342582, + "Southeast Cross Door/Chest 2": 509342583, + "Southeast Cross Door/Chest 1": 509342584, + "Maze Cave/Maze Room Holy Cross": 509342585, + "Caustic Light Cave/Holy Cross Chest": 509342586, + "Inside the Old House/Holy Cross Chest": 509342587, + "Patrol Cave/Holy Cross Chest": 509342588, + "Ruined Passage/Holy Cross Chest": 509342589, + "Inside Hourglass Cave/Holy Cross Chest": 509342590, + "Sealed Temple/Holy Cross Chest": 509342591, + "Fountain Cross Door/Page Pickup": 509342592, + "Secret Gathering Place/Holy Cross Chest": 509342593, + "Mountain Door/Top of the Mountain - Page At The Peak": 509342594, + "Monastery/Monastery Chest": 509342595, + "[Back Entrance] Bushes Holy Cross/Use the Holy Cross": 509342596, + "[Back Entrance] Chest/Peaceful Chest": 509342597, + "[Central] Near Shortcut Ladder/By the Boxes": 509342598, + "[East] Near Telescope/Spoopy": 509342599, + "[East] Upper Floor/Reminds me of Blighttown": 509342600, + "[Central] Below Entry Walkway/Even more Stairs!": 509342601, + "[East] Obscured Near Winding Staircase/At the Bottom": 509342602, + "[East] Obscured Beneath Scaffolding/In the Miasma Mound": 509342603, + "[East] Obscured Near Telescope/Weird path?": 509342604, + "[Back Entrance] Obscured Behind Wall/Happy Water!": 509342605, + "[Central] Obscured Below Entry Walkway/Down the Stairs": 509342606, + "[Central] Top Floor Overhang/End of the ruined bridge": 509342607, + "[East] Near Bridge/Drop that Bridge!": 509342608, + "[Central] Above Ladder/Climb Ladder": 509342609, + "[Central] Obscured Behind Staircase/At the Bottom": 509342610, + "[Central] Above Ladder Dash Chest/Dash Across": 509342611, + "[West] Upper Area Bombable Wall/Boomy": 509342612, + "[East] Bombable Wall/Flowers Guide Thee": 509342613, + "Monastery/Hero's Grave - Ash Relic": 509342614, + "[West] Shooting Range Secret Path/Obscured Path": 509342615, + "[West] Near Shooting Range/End of bridge": 509342616, + "[West] Below Shooting Range/Clever little sneak!": 509342617, + "[Lowlands] Below Broken Ladder/Miasma Pits": 509342618, + "[West] Upper Area Near Waterfall/Yummy Polygons": 509342619, + "[Lowlands] Upper Walkway/Hate them Snipers": 509342620, + "[West] Lower Area Below Bridge/Go Around": 509342621, + "[West] Lower Area Isolated Chest/Burn Pots": 509342622, + "[Lowlands] Near Elevator/End of the Tracks": 509342623, + "[West] Lower Area After Bridge/Drop that Bridge!": 509342624, + "Upper - Near Bridge Switch/You can shoot it": 509342625, + "Upper - Beneath Bridge To Administrator/End of the First Floor": 509342626, + "Tower - Inside Tower/I'm Scared": 509342627, + "Lower - Near Corpses/They are Dead": 509342628, + "Lower - Spider Ambush/Use the Gun": 509342629, + "Lower - Left Of Checkpoint Before Fuse/Moment of Reprieve": 509342630, + "Lower - After Guarded Fuse/Defeat those Mechs": 509342631, + "Lower - Guarded By Double Turrets/Help": 509342632, + "Lower - After 2nd Double Turret Chest/Haircut Time!": 509342633, + "Lower - Guarded By Double Turrets 2/Oh god they're everywhere": 509342634, + "Lower - Hexagon Blue/Scavenger Queen": 509342635, + "[West] Near Kevin Block/Phonomath": 509342636, + "[South] Upper Floor On Power Line/Hidden Ladder Chest": 509342637, + "[South] Chest Near Big Crabs/His Name is Tom": 509342638, + "[North] Guarded By Bird/Skraw!": 509342639, + "[Northeast] Chest Beneath Brick Walkway/Mind the Crabbits": 509342640, + "[Northwest] Bombable Wall/Flowers Guide Thee": 509342641, + "[North] Obscured Beneath Bridge/In the shallow water": 509342642, + "[South] Upper Floor On Bricks/Up the Ladder": 509342643, + "[South] Near Birds/Danlarry and Thranmire ate Jerry!": 509342644, + "[Northwest] Behind Envoy/Mind the Fairies": 509342645, + "[Southwest] Obscured Behind Fuse/Saved by the Prayer": 509342646, + "Locked Brick House/[East] Locked Room Upper Chest": 509342647, + "[North] From Lower Overworld Entrance/Come from the Overworld": 509342648, + "Locked Brick House/[East] Locked Room Lower Chest": 509342649, + "[Northeast] Chest On Brick Walkway/Near Domain": 509342650, + "[Southeast] Chest Near Fuse/Around the Tower": 509342651, + "[Northeast] Key Pickup/Around the Hill": 509342652, + "Cathedral Gauntlet/Gauntlet Reward": 509342653, + "Secret Legend Trophy Chest/You can use the Holy Cross from the outside": 509342654, + "[Upper Graveyard] Obscured Behind Hill/Between Two Hills": 509342655, + "[South Graveyard] 4 Orange Skulls/DJ Khaled - Let's go Golfing!": 509342656, + "[Central] Near Ramps Up/Up them Ramps": 509342657, + "[Upper Graveyard] Near Shield Fleemers/Alternatively, Before the Cathedral": 509342658, + "[South Graveyard] Obscured Behind Ridge/Hidden passage by ladder": 509342659, + "[South Graveyard] Obscured Beneath Telescope/Through the Nook": 509342660, + "[Entrance] Above Entryway/Dash Across": 509342661, + "[Central] South Secret Passage/Wall Man Approves these Vibes": 509342662, + "[South Graveyard] Upper Walkway On Pedestal/Gazing out over the Graves": 509342663, + "[South Graveyard] Guarded By Tentacles/Isolated Island": 509342664, + "[Upper Graveyard] Near Telescope/Overlooking the Graves": 509342665, + "[Outside Cathedral] Near Moonlight Bridge Door/Down the Hidden Ladder": 509342666, + "[Entrance] Obscured Inside Watchtower/Go Inside": 509342667, + "[Entrance] South Near Fence/DAGGER STRAP!!!!!": 509342668, + "[South Graveyard] Guarded By Big Skeleton/Super Clipping": 509342669, + "[South Graveyard] Chest Near Graves/The Rest of Our Entire Life is Death": 509342670, + "[Entrance] North Small Island/Mildly Hidden": 509342671, + "First Hero's Grave/[Outside Cathedral] Obscured Behind Memorial": 509342672, + "[Central] Obscured Behind Northern Mountain/Hug the Wall": 509342673, + "[South Graveyard] Upper Walkway Dash Chest/Around the Hill": 509342674, + "[South Graveyard] Above Big Skeleton/End of Ledge": 509342675, + "[Central] Beneath Memorial/Do You Even Live?": 509342676, + "First Hero's Grave/Hero's Grave - Feathers Relic": 509342677, + "West Furnace/Chest": 509342678, + "[West] Near Gardens Entrance/Effigy Skip": 509342679, + "[Central Highlands] Holy Cross (Blue Lines)/Use the Holy Cross": 509342680, + "[West Lowlands] Tree Holy Cross Chest/Use the Holy Cross": 509342681, + "[Southeast Lowlands] Outside Cave/Mind the Chompignoms!": 509342682, + "[Central Lowlands] Chest Beneath Faeries/As you walk by": 509342683, + "[North] Behind Holy Cross Door/Extra Sword!": 509342684, + "[Central Highlands] Top of Ladder Before Boss/Try to be This Strong": 509342685, + "[Central Lowlands] Passage Beneath Bridge/Take the lower path": 509342686, + "[North] Across From Page Pickup/I Love Fish!": 509342687, + "[Central Lowlands] Below Left Walkway/Dash Across": 509342688, + "[West] In Flooded Walkway/Dash through the water": 509342689, + "[West] Past Flooded Walkway/Through the Shallow Water": 509342690, + "[North] Obscured Beneath Hero's Memorial/Take the Long Way Around": 509342691, + "[Central Lowlands] Chest Near Shortcut Bridge/Between a Rope and a Bridge Place": 509342692, + "[West Highlands] Upper Left Walkway/By the Rudeling": 509342693, + "[Central Lowlands] Chest Beneath Save Point/Behind the Way": 509342694, + "[Central Highlands] Behind Guard Captain/Under Boss Ladder": 509342695, + "[Central Highlands] After Garden Knight/Did Not Kill You": 509342696, + "[South Highlands] Secret Chest Beneath Fuse/Pray to the Wall Man": 509342697, + "[East Lowlands] Page Behind Ice Dagger House/Come from the Far Shore": 509342698, + "[North] Page Pickup/Survival Tips": 509342699, + "[Southeast Lowlands] Ice Dagger Pickup/Ice Dagger Cave": 509342700, + "Hero's Grave/Effigy Relic": 509342701, +} + + +# for setting up the poptracker integration +tracker_world = { + "map_page_maps": ["maps/maps_pop.json"], + "map_page_locations": ["locations/locations_pop_er.json"], + "map_page_setting_key": "Slot:{player}:Current Map", + "map_page_index": map_page_index, + "external_pack_key": "ut_poptracker_path", + "poptracker_name_mapping": poptracker_data +} From 44a78cc821002a4b59feb3ffc9a195a8e28d5143 Mon Sep 17 00:00:00 2001 From: josephwhite <22449090+josephwhite@users.noreply.github.com> Date: Thu, 22 May 2025 09:26:28 -0400 Subject: [PATCH 075/183] OoT: Stop Using Utils.get_options (#4957) --- OoTClient.py | 5 +++-- worlds/oot/__init__.py | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/OoTClient.py b/OoTClient.py index 6a87b9e72201..571300ed36f5 100644 --- a/OoTClient.py +++ b/OoTClient.py @@ -12,6 +12,7 @@ import Utils from Utils import async_start from worlds import network_data_package +from worlds.oot import OOTWorld from worlds.oot.Rom import Rom, compress_rom_file from worlds.oot.N64Patch import apply_patch_file from worlds.oot.Utils import data_path @@ -280,7 +281,7 @@ async def n64_sync_task(ctx: OoTContext): async def run_game(romfile): - auto_start = Utils.get_options()["oot_options"].get("rom_start", True) + auto_start = OOTWorld.settings.rom_start if auto_start is True: import webbrowser webbrowser.open(romfile) @@ -295,7 +296,7 @@ async def patch_and_run_game(apz5_file): decomp_path = base_name + '-decomp.z64' comp_path = base_name + '.z64' # Load vanilla ROM, patch file, compress ROM - rom_file_name = Utils.get_options()["oot_options"]["rom_file"] + rom_file_name = OOTWorld.settings.rom_file rom = Rom(rom_file_name) sub_file = None diff --git a/worlds/oot/__init__.py b/worlds/oot/__init__.py index 401c387d5e05..ed025f49719c 100644 --- a/worlds/oot/__init__.py +++ b/worlds/oot/__init__.py @@ -30,7 +30,6 @@ from .N64Patch import create_patch_file from .Cosmetics import patch_cosmetics -from settings import get_settings from BaseClasses import MultiWorld, CollectionState, Tutorial, LocationProgressType from Options import Range, Toggle, VerifyKeys, Accessibility, PlandoConnections, PlandoItems from Fill import fill_restrictive, fast_fill, FillError @@ -203,7 +202,8 @@ def __init__(self, world, player): @classmethod def stage_assert_generate(cls, multiworld: MultiWorld): - rom = Rom(file=get_settings()['oot_options']['rom_file']) + oot_settings = OOTWorld.settings + rom = Rom(file=oot_settings.rom_file) # Option parsing, handling incompatible options, building useful-item table @@ -1089,7 +1089,8 @@ def generate_output(self, output_directory: str): self.hint_rng = self.random outfile_name = self.multiworld.get_out_file_name_base(self.player) - rom = Rom(file=get_settings()['oot_options']['rom_file']) + oot_settings = OOTWorld.settings + rom = Rom(file=oot_settings.rom_file) try: if self.hints != 'none': buildWorldGossipHints(self) From 95efcf6803c7d60e0994e15dd18d1f00e9ff31a7 Mon Sep 17 00:00:00 2001 From: qwint Date: Thu, 22 May 2025 08:27:18 -0500 Subject: [PATCH 076/183] Tests: Create CollectionState after MultiWorld.worlds (#4949) --- BaseClasses.py | 1 + test/bases.py | 2 +- test/benchmark/locations.py | 2 +- test/general/__init__.py | 2 +- worlds/alttp/test/__init__.py | 2 +- worlds/kdl3/test/__init__.py | 2 +- worlds/stardew_valley/test/bases.py | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index f480cbbda3de..9e1a0a0d7a49 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -736,6 +736,7 @@ class CollectionState(): additional_copy_functions: List[Callable[[CollectionState, CollectionState], CollectionState]] = [] def __init__(self, parent: MultiWorld, allow_partial_entrances: bool = False): + assert parent.worlds, "CollectionState created without worlds initialized in parent" self.prog_items = {player: Counter() for player in parent.get_all_ids()} self.multiworld = parent self.reachable_regions = {player: set() for player in parent.get_all_ids()} diff --git a/test/bases.py b/test/bases.py index a3ea233174dd..c9610c862da7 100644 --- a/test/bases.py +++ b/test/bases.py @@ -159,7 +159,6 @@ def world_setup(self, seed: typing.Optional[int] = None) -> None: self.multiworld.game[self.player] = self.game self.multiworld.player_name = {self.player: "Tester"} self.multiworld.set_seed(seed) - self.multiworld.state = CollectionState(self.multiworld) random.seed(self.multiworld.seed) self.multiworld.seed_name = get_seed_name(random) # only called to get same RNG progression as Generate.py args = Namespace() @@ -168,6 +167,7 @@ def world_setup(self, seed: typing.Optional[int] = None) -> None: 1: option.from_any(self.options.get(name, option.default)) }) self.multiworld.set_options(args) + self.multiworld.state = CollectionState(self.multiworld) self.world = self.multiworld.worlds[self.player] for step in gen_steps: call_all(self.multiworld, step) diff --git a/test/benchmark/locations.py b/test/benchmark/locations.py index 857e1882368b..16667a17b9af 100644 --- a/test/benchmark/locations.py +++ b/test/benchmark/locations.py @@ -59,13 +59,13 @@ def main(self): multiworld.game[1] = game multiworld.player_name = {1: "Tester"} multiworld.set_seed(0) - multiworld.state = CollectionState(multiworld) args = argparse.Namespace() for name, option in AutoWorld.AutoWorldRegister.world_types[game].options_dataclass.type_hints.items(): setattr(args, name, { 1: option.from_any(getattr(option, "default")) }) multiworld.set_options(args) + multiworld.state = CollectionState(multiworld) gc.collect() for step in self.gen_steps: diff --git a/test/general/__init__.py b/test/general/__init__.py index 6c4d5092cf13..34df741a8ca6 100644 --- a/test/general/__init__.py +++ b/test/general/__init__.py @@ -49,7 +49,6 @@ def setup_multiworld(worlds: Union[List[Type[World]], Type[World]], steps: Tuple multiworld.game = {player: world_type.game for player, world_type in enumerate(worlds, 1)} multiworld.player_name = {player: f"Tester{player}" for player in multiworld.player_ids} multiworld.set_seed(seed) - multiworld.state = CollectionState(multiworld) args = Namespace() for player, world_type in enumerate(worlds, 1): for key, option in world_type.options_dataclass.type_hints.items(): @@ -57,6 +56,7 @@ def setup_multiworld(worlds: Union[List[Type[World]], Type[World]], steps: Tuple updated_options[player] = option.from_any(option.default) setattr(args, key, updated_options) multiworld.set_options(args) + multiworld.state = CollectionState(multiworld) for step in steps: call_all(multiworld, step) return multiworld diff --git a/worlds/alttp/test/__init__.py b/worlds/alttp/test/__init__.py index 307e75381d7e..031d508604d4 100644 --- a/worlds/alttp/test/__init__.py +++ b/worlds/alttp/test/__init__.py @@ -10,12 +10,12 @@ def world_setup(self): from worlds.alttp.Options import Medallion self.multiworld = MultiWorld(1) self.multiworld.game[1] = "A Link to the Past" - self.multiworld.state = CollectionState(self.multiworld) self.multiworld.set_seed(None) args = Namespace() for name, option in AutoWorldRegister.world_types["A Link to the Past"].options_dataclass.type_hints.items(): setattr(args, name, {1: option.from_any(getattr(option, "default"))}) self.multiworld.set_options(args) + self.multiworld.state = CollectionState(self.multiworld) self.world = self.multiworld.worlds[1] # by default medallion access is randomized, for unittests we set it to vanilla self.world.options.misery_mire_medallion.value = Medallion.option_ether diff --git a/worlds/kdl3/test/__init__.py b/worlds/kdl3/test/__init__.py index 92f1d7261f1f..46f78aadaa3d 100644 --- a/worlds/kdl3/test/__init__.py +++ b/worlds/kdl3/test/__init__.py @@ -26,13 +26,13 @@ def world_setup(self, seed: typing.Optional[int] = None) -> None: self.multiworld.game[1] = self.game self.multiworld.player_name = {1: "Tester"} self.multiworld.set_seed(seed) - self.multiworld.state = CollectionState(self.multiworld) args = Namespace() for name, option in AutoWorld.AutoWorldRegister.world_types[self.game].options_dataclass.type_hints.items(): setattr(args, name, { 1: option.from_any(self.options.get(name, getattr(option, "default"))) }) self.multiworld.set_options(args) + self.multiworld.state = CollectionState(self.multiworld) self.multiworld.plando_options = PlandoOptions.connections for step in gen_steps: call_all(self.multiworld, step) diff --git a/worlds/stardew_valley/test/bases.py b/worlds/stardew_valley/test/bases.py index 64ada395682c..affc20cde191 100644 --- a/worlds/stardew_valley/test/bases.py +++ b/worlds/stardew_valley/test/bases.py @@ -293,12 +293,12 @@ def setup_multiworld(test_options: Iterable[Dict[str, int]] = None, seed=None) - multiworld = MultiWorld(len(test_options)) multiworld.player_name = {} multiworld.set_seed(seed) - multiworld.state = CollectionState(multiworld) for i in range(1, len(test_options) + 1): multiworld.game[i] = StardewValleyWorld.game multiworld.player_name.update({i: f"Tester{i}"}) args = fill_namespace_with_default(test_options) multiworld.set_options(args) + multiworld.state = CollectionState(multiworld) for step in gen_steps: call_all(multiworld, step) From aeac83d643aaa91c2ab310414c959447d2be5cda Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 22 May 2025 08:29:24 -0500 Subject: [PATCH 077/183] Generate: Don't Force Player Name for Weights Files (#4943) --- Generate.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Generate.py b/Generate.py index 9bc8d1066f59..f9607e328bc8 100644 --- a/Generate.py +++ b/Generate.py @@ -224,10 +224,14 @@ def main(args=None) -> tuple[argparse.Namespace, int]: except Exception as e: raise Exception(f"Error setting {k} to {v} for player {player}") from e - if path == args.weights_file_path: # if name came from the weights file, just use base player name - erargs.name[player] = f"Player{player}" - elif player not in erargs.name: # if name was not specified, generate it from filename - erargs.name[player] = os.path.splitext(os.path.split(path)[-1])[0] + # name was not specified + if player not in erargs.name: + if path == args.weights_file_path: + # weights file, so we need to make the name unique + erargs.name[player] = f"Player{player}" + else: + # use the filename + erargs.name[player] = os.path.splitext(os.path.split(path)[-1])[0] erargs.name[player] = handle_name(erargs.name[player], player, name_counter) player += 1 From 8cc6f1063475433e80f62107b95bb58769e3ed6b Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 22 May 2025 08:40:50 -0500 Subject: [PATCH 078/183] The Messenger: Swap Options Docstrings to use rst, Add Option Groups (#4913) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/messenger/__init__.py | 4 +- worlds/messenger/options.py | 78 +++++++++++++++++++++++++++++------- 2 files changed, 67 insertions(+), 15 deletions(-) diff --git a/worlds/messenger/__init__.py b/worlds/messenger/__init__.py index 09911fd531dd..4e2c870dae8f 100644 --- a/worlds/messenger/__init__.py +++ b/worlds/messenger/__init__.py @@ -11,7 +11,7 @@ from .connections import CONNECTIONS, RANDOMIZED_CONNECTIONS, TRANSITIONS from .constants import ALL_ITEMS, ALWAYS_LOCATIONS, BOSS_LOCATIONS, FILLER, NOTES, PHOBEKINS, PROG_ITEMS, TRAPS, \ USEFUL_ITEMS -from .options import AvailablePortals, Goal, Logic, MessengerOptions, NotesNeeded, ShuffleTransitions +from .options import AvailablePortals, Goal, Logic, MessengerOptions, NotesNeeded, option_groups, ShuffleTransitions from .portals import PORTALS, add_closed_portal_reqs, disconnect_portals, shuffle_portals, validate_portals from .regions import LEVELS, MEGA_SHARDS, LOCATIONS, REGION_CONNECTIONS from .rules import MessengerHardRules, MessengerOOBRules, MessengerRules @@ -35,6 +35,7 @@ class GamePath(FilePath): class MessengerWeb(WebWorld): theme = "ocean" + rich_text_options_doc = True bug_report_page = "https://github.com/alwaysintreble/TheMessengerRandomizerModAP/issues" @@ -56,6 +57,7 @@ class MessengerWeb(WebWorld): ) tutorials = [tut_en, plando_en] + option_groups = option_groups class MessengerWorld(World): diff --git a/worlds/messenger/options.py b/worlds/messenger/options.py index 6b04118893b1..5010f40b4bfa 100644 --- a/worlds/messenger/options.py +++ b/worlds/messenger/options.py @@ -2,8 +2,11 @@ from schema import And, Optional, Or, Schema -from Options import Choice, DeathLinkMixin, DefaultOnToggle, ItemsAccessibility, OptionDict, PerGameCommonOptions, \ - PlandoConnections, Range, StartInventoryPool, Toggle +from Options import ( + Choice, DeathLinkMixin, DefaultOnToggle, ItemsAccessibility, OptionDict, OptionGroup, + PerGameCommonOptions, + PlandoConnections, Range, StartInventoryPool, Toggle, +) from . import RANDOMIZED_CONNECTIONS from .portals import CHECKPOINTS, PORTALS, SHOP_POINTS @@ -48,8 +51,10 @@ class Logic(Choice): """ The level of logic to use when determining what locations in your world are accessible. - Normal: Can require damage boosts, but otherwise approachable for someone who has beaten the game. - Hard: Expects more knowledge and tighter execution. Has leashing, normal clips and much tighter d-boosting in logic. + **Normal:** Can require damage boosts, but otherwise approachable for someone who has beaten the game. + + **Hard:** Expects more knowledge and tighter execution. + Has leashing, normal clips and much tighter d-boosting in logic. """ display_name = "Logic Level" option_normal = 0 @@ -76,7 +81,10 @@ class EarlyMed(Toggle): class AvailablePortals(Range): - """Number of portals that are available from the start. Autumn Hills, Howling Grotto, and Glacial Peak are always available. If portal outputs are not randomized, Searing Crags will also be available.""" + """ + Number of portals that are available from the start. Autumn Hills, Howling Grotto, and Glacial Peak are always + available. If portal outputs are not randomized, Searing Crags will also be available. + """ display_name = "Available Starting Portals" range_start = 3 range_end = 6 @@ -89,10 +97,14 @@ class ShufflePortals(Choice): Entering a portal from its vanilla area will always lead to HQ, and will unlock it if relevant. Supports plando. - None: Portals will take you where they're supposed to. - Shops: Portals can lead to any area except Music Box and Elemental Skylands, with each portal output guaranteed to not overlap with another portal's. Will only put you at a portal or a shop. - Checkpoints: Like Shops except checkpoints without shops are also valid drop points. - Anywhere: Like Checkpoints except it's possible for multiple portals to output to the same map. + **None:** Portals will take you where they're supposed to. + + **Shops:** Portals can lead to any area except Music Box and Elemental Skylands, with each portal output guaranteed + to not overlap with another portal's. Will only put you at a portal or a shop. + + **Checkpoints:** Like Shops except checkpoints without shops are also valid drop points. + + **Anywhere:** Like Checkpoints except it's possible for multiple portals to output to the same map. """ display_name = "Shuffle Portal Outputs" option_none = 0 @@ -107,9 +119,11 @@ class ShuffleTransitions(Choice): Whether the transitions between the levels should be randomized. Supports plando. - None: Level transitions lead where they should. - Coupled: Returning through a transition will take you from whence you came. - Decoupled: Any level transition can take you to any other level transition. + **None:** Level transitions lead where they should. + + **Coupled:** Returning through a transition will take you from whence you came. + + **Decoupled:** Any level transition can take you to any other level transition. """ display_name = "Shuffle Level Transitions" option_none = 0 @@ -119,7 +133,10 @@ class ShuffleTransitions(Choice): class Goal(Choice): - """Requirement to finish the game. To win with the power seal hunt goal, you must enter the Music Box through the shop chest.""" + """ + Requirement to finish the game. + To win with the power seal hunt goal, you must enter the Music Box through the shop chest. + """ display_name = "Goal" option_open_music_box = 0 option_power_seal_hunt = 1 @@ -132,7 +149,8 @@ class MusicBox(DefaultOnToggle): class NotesNeeded(Range): """ - How many notes need to be found in order to access the Music Box. 6 are always needed to enter, so this places the others in your start inventory. + How many notes need to be found in order to access the Music Box. + 6 are always needed to enter, so this places the others in your start inventory. """ display_name = "Notes Needed" range_start = 1 @@ -240,3 +258,35 @@ class MessengerOptions(DeathLinkMixin, PerGameCommonOptions): shop_price_plan: PlannedShopPrices portal_plando: PortalPlando plando_connections: TransitionPlando + + +option_groups = [ + OptionGroup( + "Difficulty", + [ + EarlyMed, + Logic, + LimitedMovement, + ], + ), + OptionGroup( + "Goal", + [ + Goal, + MusicBox, + NotesNeeded, + AmountSeals, + RequiredSeals, + ], + ), + OptionGroup( + "Entrances", + [ + AvailablePortals, + ShufflePortals, + ShuffleTransitions, + PortalPlando, + TransitionPlando, + ], + ), +] From c5e768ffe32fcea48ecfc81adca330e4a0b11d38 Mon Sep 17 00:00:00 2001 From: FlitPix <8645405+FlitPix@users.noreply.github.com> Date: Thu, 22 May 2025 09:42:54 -0400 Subject: [PATCH 079/183] Minecraft: Stop Using Utils.get_options (#4879) --- MinecraftClient.py | 15 +++++++++------ worlds/minecraft/__init__.py | 8 +++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/MinecraftClient.py b/MinecraftClient.py index 93385ec5385e..3047dc540e86 100644 --- a/MinecraftClient.py +++ b/MinecraftClient.py @@ -14,6 +14,7 @@ import Utils from Utils import is_windows +from settings import get_settings atexit.register(input, "Press enter to exit.") @@ -147,9 +148,11 @@ def find_jdk(version: str) -> str: if os.path.isfile(jdk_exe): return jdk_exe else: - jdk_exe = shutil.which(options["minecraft_options"].get("java", "java")) + jdk_exe = shutil.which(options.java) if not jdk_exe: - raise Exception("Could not find Java. Is Java installed on the system?") + jdk_exe = shutil.which("java") # try to fall back to system java + if not jdk_exe: + raise Exception("Could not find Java. Is Java installed on the system?") return jdk_exe @@ -285,8 +288,8 @@ def is_correct_forge(forge_dir) -> bool: # Change to executable's working directory os.chdir(os.path.abspath(os.path.dirname(sys.argv[0]))) - options = Utils.get_options() - channel = args.channel or options["minecraft_options"]["release_channel"] + options = get_settings().minecraft_options + channel = args.channel or options.release_channel apmc_data = None data_version = args.data_version or None @@ -299,8 +302,8 @@ def is_correct_forge(forge_dir) -> bool: versions = get_minecraft_versions(data_version, channel) - forge_dir = options["minecraft_options"]["forge_directory"] - max_heap = options["minecraft_options"]["max_heap_size"] + forge_dir = options.forge_directory + max_heap = options.max_heap_size forge_version = args.forge or versions["forge"] java_version = args.java or versions["java"] mod_url = versions["url"] diff --git a/worlds/minecraft/__init__.py b/worlds/minecraft/__init__.py index 75539fcf2ea6..7ec9b4b2b8d9 100644 --- a/worlds/minecraft/__init__.py +++ b/worlds/minecraft/__init__.py @@ -27,9 +27,15 @@ class ReleaseChannel(str): any games played on the "beta" channel have a high likelihood of no longer working on the "release" channel. """ - forge_directory: ForgeDirectory = ForgeDirectory("Minecraft Forge server") + class JavaExecutable(settings.OptionalUserFilePath): + """ + Path to Java executable. If not set, will attempt to fall back to Java system installation. + """ + + forge_directory: ForgeDirectory = ForgeDirectory("Minecraft NeoForge server") max_heap_size: str = "2G" release_channel: ReleaseChannel = ReleaseChannel("release") + java: JavaExecutable = JavaExecutable("") class MinecraftWebWorld(WebWorld): From 1d655a07cdffb6c58715ec1b97837a8be5bf8fab Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 22 May 2025 08:46:33 -0500 Subject: [PATCH 080/183] Core: Add State add/remove/set Helpers (#4845) --- BaseClasses.py | 38 ++++++++++++++++++++++++++++++++++++ worlds/AutoWorld.py | 6 ++---- worlds/messenger/__init__.py | 4 ++-- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 9e1a0a0d7a49..377dee7d631e 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -1013,6 +1013,17 @@ def collect(self, item: Item, prevent_sweep: bool = False, location: Optional[Lo return changed + def add_item(self, item: str, player: int, count: int = 1) -> None: + """ + Adds the item to state. + + :param item: The item to be added. + :param player: The player the item is for. + :param count: How many of the item to add. + """ + assert count > 0 + self.prog_items[player][item] += count + def remove(self, item: Item): changed = self.multiworld.worlds[item.player].remove(self, item) if changed: @@ -1021,6 +1032,33 @@ def remove(self, item: Item): self.blocked_connections[item.player] = set() self.stale[item.player] = True + def remove_item(self, item: str, player: int, count: int = 1) -> None: + """ + Removes the item from state. + + :param item: The item to be removed. + :param player: The player the item is for. + :param count: How many of the item to remove. + """ + assert count > 0 + self.prog_items[player][item] -= count + if self.prog_items[player][item] < 1: + del (self.prog_items[player][item]) + + def set_item(self, item: str, player: int, count: int) -> None: + """ + Sets the item in state equal to the provided count. + + :param item: The item to modify. + :param player: The player the item is for. + :param count: How many of the item to now have. + """ + assert count >= 0 + if count == 0: + del (self.prog_items[player][item]) + else: + self.prog_items[player][item] = count + class EntranceType(IntEnum): ONE_WAY = 1 diff --git a/worlds/AutoWorld.py b/worlds/AutoWorld.py index f0004a9f1b5b..6ea6c237d970 100644 --- a/worlds/AutoWorld.py +++ b/worlds/AutoWorld.py @@ -528,7 +528,7 @@ def collect(self, state: "CollectionState", item: "Item") -> bool: """Called when an item is collected in to state. Useful for things such as progressive items or currency.""" name = self.collect_item(state, item) if name: - state.prog_items[self.player][name] += 1 + state.add_item(name, self.player) return True return False @@ -536,9 +536,7 @@ def remove(self, state: "CollectionState", item: "Item") -> bool: """Called when an item is removed from to state. Useful for things such as progressive items or currency.""" name = self.collect_item(state, item, True) if name: - state.prog_items[self.player][name] -= 1 - if state.prog_items[self.player][name] < 1: - del (state.prog_items[self.player][name]) + state.remove_item(name, self.player) return True return False diff --git a/worlds/messenger/__init__.py b/worlds/messenger/__init__.py index 4e2c870dae8f..8df59d9b2942 100644 --- a/worlds/messenger/__init__.py +++ b/worlds/messenger/__init__.py @@ -428,13 +428,13 @@ def create_group(cls, multiworld: "MultiWorld", new_player_id: int, players: set def collect(self, state: "CollectionState", item: "Item") -> bool: change = super().collect(state, item) if change and "Time Shard" in item.name: - state.prog_items[self.player]["Shards"] += int(item.name.strip("Time Shard ()")) + state.add_item("Shards", self.player, int(item.name.strip("Time Shard ()"))) return change def remove(self, state: "CollectionState", item: "Item") -> bool: change = super().remove(state, item) if change and "Time Shard" in item.name: - state.prog_items[self.player]["Shards"] -= int(item.name.strip("Time Shard ()")) + state.remove_item("Shards", self.player, int(item.name.strip("Time Shard ()"))) return change @classmethod From 45e3027f81fc0eba4ccd06b5e1ed1f3a1597a38d Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 22 May 2025 09:06:44 -0500 Subject: [PATCH 081/183] The Messenger: Add a Component Icon and Description (#4850) Co-authored-by: qwint Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/messenger/__init__.py | 13 +++++++++++-- worlds/messenger/assets/component_icon.png | Bin 0 -> 19691 bytes 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 worlds/messenger/assets/component_icon.png diff --git a/worlds/messenger/__init__.py b/worlds/messenger/__init__.py index 8df59d9b2942..e403ff59d862 100644 --- a/worlds/messenger/__init__.py +++ b/worlds/messenger/__init__.py @@ -6,7 +6,7 @@ from Utils import output_path from settings import FilePath, Group from worlds.AutoWorld import WebWorld, World -from worlds.LauncherComponents import Component, Type, components +from worlds.LauncherComponents import Component, Type, components, icon_paths from .client_setup import launch_game from .connections import CONNECTIONS, RANDOMIZED_CONNECTIONS, TRANSITIONS from .constants import ALL_ITEMS, ALWAYS_LOCATIONS, BOSS_LOCATIONS, FILLER, NOTES, PHOBEKINS, PROG_ITEMS, TRAPS, \ @@ -20,9 +20,18 @@ from .transitions import disconnect_entrances, shuffle_transitions components.append( - Component("The Messenger", component_type=Type.CLIENT, func=launch_game, game_name="The Messenger", supports_uri=True) + Component( + "The Messenger", + component_type=Type.CLIENT, + func=launch_game, + game_name="The Messenger", + supports_uri=True, + icon="The Messenger", + description="Launch The Messenger.\nInstalls and checks for updates for the randomizer.") ) +icon_paths["The Messenger"] = f"ap:{__name__}/assets/component_icon.png" + class MessengerSettings(Group): class GamePath(FilePath): diff --git a/worlds/messenger/assets/component_icon.png b/worlds/messenger/assets/component_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee91224ca069e806a7b976a3dbdcc55026390ae GIT binary patch literal 19691 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 Date: Thu, 22 May 2025 15:16:16 +0100 Subject: [PATCH 082/183] AHiT: Add Dweller Mask Requirement to Normal Logic Rush Hour (#4499) --- worlds/ahit/Locations.py | 2 +- worlds/ahit/Rules.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/ahit/Locations.py b/worlds/ahit/Locations.py index 713113e6919b..9937c774d1c8 100644 --- a/worlds/ahit/Locations.py +++ b/worlds/ahit/Locations.py @@ -477,7 +477,7 @@ def get_location_names() -> Dict[str, int]: "Act Completion (Rush Hour)": LocData(2000311210, "Rush Hour", dlc_flags=HatDLC.dlc2, hookshot=True, - required_hats=[HatType.ICE, HatType.BREWING]), + required_hats=[HatType.ICE, HatType.BREWING, HatType.DWELLER]), "Act Completion (Time Rift - Rumbi Factory)": LocData(2000312736, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2), diff --git a/worlds/ahit/Rules.py b/worlds/ahit/Rules.py index 2ca0628a6875..1c2c5845dbda 100644 --- a/worlds/ahit/Rules.py +++ b/worlds/ahit/Rules.py @@ -455,7 +455,7 @@ def set_moderate_rules(world: "HatInTimeWorld"): if "Pink Paw Station Thug" in key and is_location_valid(world, key): set_rule(world.multiworld.get_location(key, world.player), lambda state: True) - # Moderate: clear Rush Hour without Hookshot + # Moderate: clear Rush Hour without Hookshot or Dweller Mask set_rule(world.multiworld.get_location("Act Completion (Rush Hour)", world.player), lambda state: state.has("Metro Ticket - Pink", world.player) and state.has("Metro Ticket - Yellow", world.player) From 984df75f837044aa55168816109ea284efba52f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Thu, 22 May 2025 10:24:04 -0400 Subject: [PATCH 083/183] Stardew Valley: Move and Rework Monstersanity Tests (#4911) --- worlds/stardew_valley/test/TestGeneration.py | 159 ------------------ .../stardew_valley/test/TestMonstersanity.py | 132 +++++++++++++++ 2 files changed, 132 insertions(+), 159 deletions(-) create mode 100644 worlds/stardew_valley/test/TestMonstersanity.py diff --git a/worlds/stardew_valley/test/TestGeneration.py b/worlds/stardew_valley/test/TestGeneration.py index 1e843ea69094..5e60f8e80abb 100644 --- a/worlds/stardew_valley/test/TestGeneration.py +++ b/worlds/stardew_valley/test/TestGeneration.py @@ -120,165 +120,6 @@ def test_does_not_create_exactly_two_items(self): self.assertTrue(count == 0 or count == 2) -class TestMonstersanityNone(SVTestBase): - options = { - options.Monstersanity.internal_name: options.Monstersanity.option_none, - # Not really necessary, but it adds more locations, so we don't have to remove useful items. - options.Fishsanity.internal_name: options.Fishsanity.option_all - } - - @property - def run_default_tests(self) -> bool: - # None is default - return False - - def test_when_generate_world_then_5_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 5) - - def test_when_generate_world_then_zero_specific_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 0) - self.assertEqual(item_pool.count("Progressive Club"), 0) - self.assertEqual(item_pool.count("Progressive Dagger"), 0) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_3_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 3) - - -class TestMonstersanityGoals(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_goals} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - -class TestMonstersanityOnePerCategory(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_one_per_category} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - -class TestMonstersanityProgressive(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_progressive_goals} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_many_rings_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertIn("Hot Java Ring", item_pool) - self.assertIn("Wedding Ring", item_pool) - self.assertIn("Slime Charmer Ring", item_pool) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - -class TestMonstersanitySplit(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_split_goals} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_many_rings_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertIn("Hot Java Ring", item_pool) - self.assertIn("Wedding Ring", item_pool) - self.assertIn("Slime Charmer Ring", item_pool) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - class TestProgressiveElevator(SVTestBase): options = { options.ElevatorProgression.internal_name: options.ElevatorProgression.option_progressive, diff --git a/worlds/stardew_valley/test/TestMonstersanity.py b/worlds/stardew_valley/test/TestMonstersanity.py new file mode 100644 index 000000000000..8393715474fb --- /dev/null +++ b/worlds/stardew_valley/test/TestMonstersanity.py @@ -0,0 +1,132 @@ +import unittest +from typing import ClassVar + +from . import SVTestBase +from .. import options +from ..locations import LocationTags, location_table +from ..mods.mod_data import ModNames + + +class SVMonstersanityTestBase(SVTestBase): + expected_progressive_generic_weapon: ClassVar[int] = 0 + expected_progressive_specific_weapon: ClassVar[int] = 0 + expected_progressive_slingshot: ClassVar[int] = 0 + expected_progressive_footwear: ClassVar[int] = 0 + expected_rings: ClassVar[list[str]] = [] + + @classmethod + def setUpClass(cls) -> None: + if cls is SVMonstersanityTestBase: + raise unittest.SkipTest("Base tests disabled") + + super().setUpClass() + + def test_when_generate_world_then_expected_generic_weapons_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Weapon"), self.expected_progressive_generic_weapon) + + def test_when_generate_world_then_expected_specific_weapons_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Sword"), self.expected_progressive_specific_weapon) + self.assertEqual(item_pool.count("Progressive Club"), self.expected_progressive_specific_weapon) + self.assertEqual(item_pool.count("Progressive Dagger"), self.expected_progressive_specific_weapon) + + def test_when_generate_world_then_expected_slingshots_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Slingshot"), self.expected_progressive_slingshot) + + def test_when_generate_world_then_expected_shoes_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Footwear"), self.expected_progressive_footwear) + + def test_when_generate_world_then_many_rings_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + for expected_ring in self.expected_rings: + self.assertIn(expected_ring, item_pool) + + def test_when_generate_world_then_all_monster_checks_are_inaccessible_with_empty_inventory(self): + for location in self.get_real_locations(): + if LocationTags.MONSTERSANITY not in location_table[location.name].tags: + continue + with self.subTest(location.name): + self.assert_cannot_reach_location(location.name) + + +class TestMonstersanityNone(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_none, + # Not really necessary, but it adds more locations, so we don't have to remove useful items. + options.Fishsanity: options.Fishsanity.option_all, + } + expected_progressive_generic_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 3 + + @property + def run_default_tests(self) -> bool: + # None is default + return False + + +class TestMonstersanityNoneWithSVE(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_none, + options.Mods: ModNames.sve, + } + expected_progressive_generic_weapon = 6 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 3 + + @property + def run_default_tests(self) -> bool: + # None is default + return False + + +class TestMonstersanityGoals(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_goals, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + + +class TestMonstersanityOnePerCategory(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_one_per_category, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + + +class TestMonstersanityProgressive(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_progressive_goals, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + expected_rings = ["Hot Java Ring", "Wedding Ring", "Slime Charmer Ring"] + + +class TestMonstersanitySplit(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_split_goals, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + expected_rings = ["Hot Java Ring", "Wedding Ring", "Slime Charmer Ring"] + + +class TestMonstersanitySplitWithSVE(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_split_goals, + options.Mods: ModNames.sve, + } + expected_progressive_specific_weapon = 6 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + expected_rings = ["Hot Java Ring", "Wedding Ring", "Slime Charmer Ring"] From 0351698ef71f3aa7b8fe178a6517c69e93e49053 Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Thu, 22 May 2025 11:07:57 -0400 Subject: [PATCH 084/183] SDV: Fixed Import bases (#5025) --- worlds/stardew_valley/test/TestMonstersanity.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/stardew_valley/test/TestMonstersanity.py b/worlds/stardew_valley/test/TestMonstersanity.py index 8393715474fb..dd058274326f 100644 --- a/worlds/stardew_valley/test/TestMonstersanity.py +++ b/worlds/stardew_valley/test/TestMonstersanity.py @@ -1,7 +1,7 @@ import unittest from typing import ClassVar -from . import SVTestBase +from .bases import SVTestBase from .. import options from ..locations import LocationTags, location_table from ..mods.mod_data import ModNames From 88b529593f655084b64040b731ad57a93a243e5a Mon Sep 17 00:00:00 2001 From: qwint Date: Thu, 22 May 2025 10:08:15 -0500 Subject: [PATCH 085/183] CommonClient: Add docs for Attributes (#5003) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- CommonClient.py | 75 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/CommonClient.py b/CommonClient.py index 94c558bf8aec..3a5f51aeee33 100644 --- a/CommonClient.py +++ b/CommonClient.py @@ -266,38 +266,71 @@ def update_game(self, game: str, name_to_id_lookup_table: typing.Dict[str, int]) last_death_link: float = time.time() # last send/received death link on AP layer # remaining type info - slot_info: typing.Dict[int, NetworkSlot] - server_address: typing.Optional[str] - password: typing.Optional[str] - hint_cost: typing.Optional[int] - hint_points: typing.Optional[int] - player_names: typing.Dict[int, str] + slot_info: dict[int, NetworkSlot] + """Slot Info from the server for the current connection""" + server_address: str | None + """Autoconnect address provided by the ctx constructor""" + password: str | None + """Password used for Connecting, expected by server_auth""" + hint_cost: int | None + """Current Hint Cost per Hint from the server""" + hint_points: int | None + """Current avaliable Hint Points from the server""" + player_names: dict[int, str] + """Current lookup of slot number to player display name from server (includes aliases)""" finished_game: bool + """ + Bool to signal that status should be updated to Goal after reconnecting + to be used to ensure that a StatusUpdate packet does not get lost when disconnected + """ ready: bool - team: typing.Optional[int] - slot: typing.Optional[int] - auth: typing.Optional[str] - seed_name: typing.Optional[str] + """Bool to keep track of state for the /ready command""" + team: int | None + """Team number of currently connected slot""" + slot: int | None + """Slot number of currently connected slot""" + auth: str | None + """Name used in Connect packet""" + seed_name: str | None + """Seed name that will be validated on opening a socket if present""" # locations - locations_checked: typing.Set[int] # local state - locations_scouted: typing.Set[int] - items_received: typing.List[NetworkItem] - missing_locations: typing.Set[int] # server state - checked_locations: typing.Set[int] # server state - server_locations: typing.Set[int] # all locations the server knows of, missing_location | checked_locations - locations_info: typing.Dict[int, NetworkItem] + locations_checked: set[int] + """ + Local container of location ids checked to signal that LocationChecks should be resent after reconnecting + to be used to ensure that a LocationChecks packet does not get lost when disconnected + """ + locations_scouted: set[int] + """ + Local container of location ids scouted to signal that LocationScouts should be resent after reconnecting + to be used to ensure that a LocationScouts packet does not get lost when disconnected + """ + items_received: list[NetworkItem] + """List of NetworkItems recieved from the server""" + missing_locations: set[int] + """Container of Locations that are unchecked per server state""" + checked_locations: set[int] + """Container of Locations that are checked per server state""" + server_locations: set[int] + """Container of Locations that exist per server state; a combination between missing and checked locations""" + locations_info: dict[int, NetworkItem] + """Dict of location id: NetworkItem info from LocationScouts request""" # data storage - stored_data: typing.Dict[str, typing.Any] - stored_data_notification_keys: typing.Set[str] + stored_data: dict[str, typing.Any] + """ + Data Storage values by key that were retrieved from the server + any keys subscribed to with SetNotify will be kept up to date + """ + stored_data_notification_keys: set[str] + """Current container of watched Data Storage keys, managed by ctx.set_notify""" # internals - # current message box through kvui _messagebox: typing.Optional["kvui.MessageBox"] = None - # message box reporting a loss of connection + """Current message box through kvui""" _messagebox_connection_loss: typing.Optional["kvui.MessageBox"] = None + """Message box reporting a loss of connection""" def __init__(self, server_address: typing.Optional[str] = None, password: typing.Optional[str] = None) -> None: # server state From 9c0ad2b825ac3f95216a34b529291e3a1c02b8c1 Mon Sep 17 00:00:00 2001 From: Rosalie <61372066+Rosalie-A@users.noreply.github.com> Date: Thu, 22 May 2025 11:35:38 -0400 Subject: [PATCH 086/183] FF1: Bizhawk Client and APWorld Support (#4448) Co-authored-by: beauxq Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- FF1Client.py | 267 ---------------- data/lua/connector_ff1.lua | 462 ---------------------------- inno_setup.iss | 1 + setup.py | 1 - worlds/LauncherComponents.py | 2 - worlds/ff1/Client.py | 328 ++++++++++++++++++++ worlds/ff1/Items.py | 18 +- worlds/ff1/Locations.py | 14 +- worlds/ff1/__init__.py | 1 + worlds/ff1/docs/en_Final Fantasy.md | 9 +- worlds/ff1/docs/multiworld_en.md | 25 +- 11 files changed, 356 insertions(+), 772 deletions(-) delete mode 100644 FF1Client.py delete mode 100644 data/lua/connector_ff1.lua create mode 100644 worlds/ff1/Client.py diff --git a/FF1Client.py b/FF1Client.py deleted file mode 100644 index 748a95b72cf4..000000000000 --- a/FF1Client.py +++ /dev/null @@ -1,267 +0,0 @@ -import asyncio -import copy -import json -import time -from asyncio import StreamReader, StreamWriter -from typing import List - - -import Utils -from Utils import async_start -from CommonClient import CommonContext, server_loop, gui_enabled, ClientCommandProcessor, logger, \ - get_base_parser - -SYSTEM_MESSAGE_ID = 0 - -CONNECTION_TIMING_OUT_STATUS = "Connection timing out. Please restart your emulator, then restart connector_ff1.lua" -CONNECTION_REFUSED_STATUS = "Connection Refused. Please start your emulator and make sure connector_ff1.lua is running" -CONNECTION_RESET_STATUS = "Connection was reset. Please restart your emulator, then restart connector_ff1.lua" -CONNECTION_TENTATIVE_STATUS = "Initial Connection Made" -CONNECTION_CONNECTED_STATUS = "Connected" -CONNECTION_INITIAL_STATUS = "Connection has not been initiated" - -DISPLAY_MSGS = True - - -class FF1CommandProcessor(ClientCommandProcessor): - def __init__(self, ctx: CommonContext): - super().__init__(ctx) - - def _cmd_nes(self): - """Check NES Connection State""" - if isinstance(self.ctx, FF1Context): - logger.info(f"NES Status: {self.ctx.nes_status}") - - def _cmd_toggle_msgs(self): - """Toggle displaying messages in EmuHawk""" - global DISPLAY_MSGS - DISPLAY_MSGS = not DISPLAY_MSGS - logger.info(f"Messages are now {'enabled' if DISPLAY_MSGS else 'disabled'}") - - -class FF1Context(CommonContext): - command_processor = FF1CommandProcessor - game = 'Final Fantasy' - items_handling = 0b111 # full remote - - def __init__(self, server_address, password): - super().__init__(server_address, password) - self.nes_streams: (StreamReader, StreamWriter) = None - self.nes_sync_task = None - self.messages = {} - self.locations_array = None - self.nes_status = CONNECTION_INITIAL_STATUS - self.awaiting_rom = False - self.display_msgs = True - - async def server_auth(self, password_requested: bool = False): - if password_requested and not self.password: - await super(FF1Context, self).server_auth(password_requested) - if not self.auth: - self.awaiting_rom = True - logger.info('Awaiting connection to NES to get Player information') - return - - await self.send_connect() - - def _set_message(self, msg: str, msg_id: int): - if DISPLAY_MSGS: - self.messages[time.time(), msg_id] = msg - - def on_package(self, cmd: str, args: dict): - if cmd == 'Connected': - async_start(parse_locations(self.locations_array, self, True)) - elif cmd == 'Print': - msg = args['text'] - if ': !' not in msg: - self._set_message(msg, SYSTEM_MESSAGE_ID) - - def on_print_json(self, args: dict): - if self.ui: - self.ui.print_json(copy.deepcopy(args["data"])) - else: - text = self.jsontotextparser(copy.deepcopy(args["data"])) - logger.info(text) - relevant = args.get("type", None) in {"Hint", "ItemSend"} - if relevant: - item = args["item"] - # goes to this world - if self.slot_concerns_self(args["receiving"]): - relevant = True - # found in this world - elif self.slot_concerns_self(item.player): - relevant = True - # not related - else: - relevant = False - if relevant: - item = args["item"] - msg = self.raw_text_parser(copy.deepcopy(args["data"])) - self._set_message(msg, item.item) - - def run_gui(self): - from kvui import GameManager - - class FF1Manager(GameManager): - logging_pairs = [ - ("Client", "Archipelago") - ] - base_title = "Archipelago Final Fantasy 1 Client" - - self.ui = FF1Manager(self) - self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI") - - -def get_payload(ctx: FF1Context): - current_time = time.time() - return json.dumps( - { - "items": [item.item for item in ctx.items_received], - "messages": {f'{key[0]}:{key[1]}': value for key, value in ctx.messages.items() - if key[0] > current_time - 10} - } - ) - - -async def parse_locations(locations_array: List[int], ctx: FF1Context, force: bool): - if locations_array == ctx.locations_array and not force: - return - else: - # print("New values") - ctx.locations_array = locations_array - locations_checked = [] - if len(locations_array) > 0xFE and locations_array[0xFE] & 0x02 != 0 and not ctx.finished_game: - await ctx.send_msgs([ - {"cmd": "StatusUpdate", - "status": 30} - ]) - ctx.finished_game = True - for location in ctx.missing_locations: - # index will be - 0x100 or 0x200 - index = location - if location < 0x200: - # Location is a chest - index -= 0x100 - flag = 0x04 - else: - # Location is an NPC - index -= 0x200 - flag = 0x02 - - # print(f"Location: {ctx.location_names[location]}") - # print(f"Index: {str(hex(index))}") - # print(f"value: {locations_array[index] & flag != 0}") - if locations_array[index] & flag != 0: - locations_checked.append(location) - if locations_checked: - # print([ctx.location_names[location] for location in locations_checked]) - await ctx.send_msgs([ - {"cmd": "LocationChecks", - "locations": locations_checked} - ]) - - -async def nes_sync_task(ctx: FF1Context): - logger.info("Starting nes connector. Use /nes for status information") - while not ctx.exit_event.is_set(): - error_status = None - if ctx.nes_streams: - (reader, writer) = ctx.nes_streams - msg = get_payload(ctx).encode() - writer.write(msg) - writer.write(b'\n') - try: - await asyncio.wait_for(writer.drain(), timeout=1.5) - try: - # Data will return a dict with up to two fields: - # 1. A keepalive response of the Players Name (always) - # 2. An array representing the memory values of the locations area (if in game) - data = await asyncio.wait_for(reader.readline(), timeout=5) - data_decoded = json.loads(data.decode()) - # print(data_decoded) - if ctx.game is not None and 'locations' in data_decoded: - # Not just a keep alive ping, parse - async_start(parse_locations(data_decoded['locations'], ctx, False)) - if not ctx.auth: - ctx.auth = ''.join([chr(i) for i in data_decoded['playerName'] if i != 0]) - if ctx.auth == '': - logger.info("Invalid ROM detected. No player name built into the ROM. Please regenerate" - "the ROM using the same link but adding your slot name") - if ctx.awaiting_rom: - await ctx.server_auth(False) - except asyncio.TimeoutError: - logger.debug("Read Timed Out, Reconnecting") - error_status = CONNECTION_TIMING_OUT_STATUS - writer.close() - ctx.nes_streams = None - except ConnectionResetError as e: - logger.debug("Read failed due to Connection Lost, Reconnecting") - error_status = CONNECTION_RESET_STATUS - writer.close() - ctx.nes_streams = None - except TimeoutError: - logger.debug("Connection Timed Out, Reconnecting") - error_status = CONNECTION_TIMING_OUT_STATUS - writer.close() - ctx.nes_streams = None - except ConnectionResetError: - logger.debug("Connection Lost, Reconnecting") - error_status = CONNECTION_RESET_STATUS - writer.close() - ctx.nes_streams = None - if ctx.nes_status == CONNECTION_TENTATIVE_STATUS: - if not error_status: - logger.info("Successfully Connected to NES") - ctx.nes_status = CONNECTION_CONNECTED_STATUS - else: - ctx.nes_status = f"Was tentatively connected but error occured: {error_status}" - elif error_status: - ctx.nes_status = error_status - logger.info("Lost connection to nes and attempting to reconnect. Use /nes for status updates") - else: - try: - logger.debug("Attempting to connect to NES") - ctx.nes_streams = await asyncio.wait_for(asyncio.open_connection("localhost", 52980), timeout=10) - ctx.nes_status = CONNECTION_TENTATIVE_STATUS - except TimeoutError: - logger.debug("Connection Timed Out, Trying Again") - ctx.nes_status = CONNECTION_TIMING_OUT_STATUS - continue - except ConnectionRefusedError: - logger.debug("Connection Refused, Trying Again") - ctx.nes_status = CONNECTION_REFUSED_STATUS - continue - - -if __name__ == '__main__': - # Text Mode to use !hint and such with games that have no text entry - Utils.init_logging("FF1Client") - - options = Utils.get_options() - DISPLAY_MSGS = options["ffr_options"]["display_msgs"] - - async def main(args): - ctx = FF1Context(args.connect, args.password) - ctx.server_task = asyncio.create_task(server_loop(ctx), name="ServerLoop") - if gui_enabled: - ctx.run_gui() - ctx.run_cli() - ctx.nes_sync_task = asyncio.create_task(nes_sync_task(ctx), name="NES Sync") - - await ctx.exit_event.wait() - ctx.server_address = None - - await ctx.shutdown() - - if ctx.nes_sync_task: - await ctx.nes_sync_task - - - import colorama - - parser = get_base_parser() - args = parser.parse_args() - colorama.just_fix_windows_console() - - asyncio.run(main(args)) - colorama.deinit() diff --git a/data/lua/connector_ff1.lua b/data/lua/connector_ff1.lua deleted file mode 100644 index afae5d3c81dc..000000000000 --- a/data/lua/connector_ff1.lua +++ /dev/null @@ -1,462 +0,0 @@ -local socket = require("socket") -local json = require('json') -local math = require('math') -require("common") - -local STATE_OK = "Ok" -local STATE_TENTATIVELY_CONNECTED = "Tentatively Connected" -local STATE_INITIAL_CONNECTION_MADE = "Initial Connection Made" -local STATE_UNINITIALIZED = "Uninitialized" - -local ITEM_INDEX = 0x03 -local WEAPON_INDEX = 0x07 -local ARMOR_INDEX = 0x0B - -local goldLookup = { - [0x16C] = 10, - [0x16D] = 20, - [0x16E] = 25, - [0x16F] = 30, - [0x170] = 55, - [0x171] = 70, - [0x172] = 85, - [0x173] = 110, - [0x174] = 135, - [0x175] = 155, - [0x176] = 160, - [0x177] = 180, - [0x178] = 240, - [0x179] = 255, - [0x17A] = 260, - [0x17B] = 295, - [0x17C] = 300, - [0x17D] = 315, - [0x17E] = 330, - [0x17F] = 350, - [0x180] = 385, - [0x181] = 400, - [0x182] = 450, - [0x183] = 500, - [0x184] = 530, - [0x185] = 575, - [0x186] = 620, - [0x187] = 680, - [0x188] = 750, - [0x189] = 795, - [0x18A] = 880, - [0x18B] = 1020, - [0x18C] = 1250, - [0x18D] = 1455, - [0x18E] = 1520, - [0x18F] = 1760, - [0x190] = 1975, - [0x191] = 2000, - [0x192] = 2750, - [0x193] = 3400, - [0x194] = 4150, - [0x195] = 5000, - [0x196] = 5450, - [0x197] = 6400, - [0x198] = 6720, - [0x199] = 7340, - [0x19A] = 7690, - [0x19B] = 7900, - [0x19C] = 8135, - [0x19D] = 9000, - [0x19E] = 9300, - [0x19F] = 9500, - [0x1A0] = 9900, - [0x1A1] = 10000, - [0x1A2] = 12350, - [0x1A3] = 13000, - [0x1A4] = 13450, - [0x1A5] = 14050, - [0x1A6] = 14720, - [0x1A7] = 15000, - [0x1A8] = 17490, - [0x1A9] = 18010, - [0x1AA] = 19990, - [0x1AB] = 20000, - [0x1AC] = 20010, - [0x1AD] = 26000, - [0x1AE] = 45000, - [0x1AF] = 65000 -} - -local extensionConsumableLookup = { - [432] = 0x3C, - [436] = 0x3C, - [440] = 0x3C, - [433] = 0x3D, - [437] = 0x3D, - [441] = 0x3D, - [434] = 0x3E, - [438] = 0x3E, - [442] = 0x3E, - [435] = 0x3F, - [439] = 0x3F, - [443] = 0x3F -} - -local noOverworldItemsLookup = { - [499] = 0x2B, - [500] = 0x12, -} - -local consumableStacks = nil -local prevstate = "" -local curstate = STATE_UNINITIALIZED -local ff1Socket = nil -local frame = 0 - -local isNesHawk = false - - ---Sets correct memory access functions based on whether NesHawk or QuickNES is loaded -local function defineMemoryFunctions() - local memDomain = {} - local domains = memory.getmemorydomainlist() - if domains[1] == "System Bus" then - --NesHawk - isNesHawk = true - memDomain["systembus"] = function() memory.usememorydomain("System Bus") end - memDomain["saveram"] = function() memory.usememorydomain("Battery RAM") end - memDomain["rom"] = function() memory.usememorydomain("PRG ROM") end - elseif domains[1] == "WRAM" then - --QuickNES - memDomain["systembus"] = function() memory.usememorydomain("System Bus") end - memDomain["saveram"] = function() memory.usememorydomain("WRAM") end - memDomain["rom"] = function() memory.usememorydomain("PRG ROM") end - end - return memDomain -end - -local memDomain = defineMemoryFunctions() - -local function StateOKForMainLoop() - memDomain.saveram() - local A = u8(0x102) -- Party Made - local B = u8(0x0FC) - local C = u8(0x0A3) - return A ~= 0x00 and not (A== 0xF2 and B == 0xF2 and C == 0xF2) -end - -function generateLocationChecked() - memDomain.saveram() - data = uRange(0x01FF, 0x101) - data[0] = nil - return data -end - -function setConsumableStacks() - memDomain.rom() - consumableStacks = {} - -- In order shards, tent, cabin, house, heal, pure, soft, ext1, ext2, ext3, ex4 - consumableStacks[0x35] = 1 - consumableStacks[0x36] = u8(0x47400) + 1 - consumableStacks[0x37] = u8(0x47401) + 1 - consumableStacks[0x38] = u8(0x47402) + 1 - consumableStacks[0x39] = u8(0x47403) + 1 - consumableStacks[0x3A] = u8(0x47404) + 1 - consumableStacks[0x3B] = u8(0x47405) + 1 - consumableStacks[0x3C] = u8(0x47406) + 1 - consumableStacks[0x3D] = u8(0x47407) + 1 - consumableStacks[0x3E] = u8(0x47408) + 1 - consumableStacks[0x3F] = u8(0x47409) + 1 -end - -function getEmptyWeaponSlots() - memDomain.saveram() - ret = {} - count = 1 - slot1 = uRange(0x118, 0x4) - slot2 = uRange(0x158, 0x4) - slot3 = uRange(0x198, 0x4) - slot4 = uRange(0x1D8, 0x4) - for i,v in pairs(slot1) do - if v == 0 then - ret[count] = 0x118 + i - count = count + 1 - end - end - for i,v in pairs(slot2) do - if v == 0 then - ret[count] = 0x158 + i - count = count + 1 - end - end - for i,v in pairs(slot3) do - if v == 0 then - ret[count] = 0x198 + i - count = count + 1 - end - end - for i,v in pairs(slot4) do - if v == 0 then - ret[count] = 0x1D8 + i - count = count + 1 - end - end - return ret -end - -function getEmptyArmorSlots() - memDomain.saveram() - ret = {} - count = 1 - slot1 = uRange(0x11C, 0x4) - slot2 = uRange(0x15C, 0x4) - slot3 = uRange(0x19C, 0x4) - slot4 = uRange(0x1DC, 0x4) - for i,v in pairs(slot1) do - if v == 0 then - ret[count] = 0x11C + i - count = count + 1 - end - end - for i,v in pairs(slot2) do - if v == 0 then - ret[count] = 0x15C + i - count = count + 1 - end - end - for i,v in pairs(slot3) do - if v == 0 then - ret[count] = 0x19C + i - count = count + 1 - end - end - for i,v in pairs(slot4) do - if v == 0 then - ret[count] = 0x1DC + i - count = count + 1 - end - end - return ret -end -local function slice (tbl, s, e) - local pos, new = 1, {} - for i = s + 1, e do - new[pos] = tbl[i] - pos = pos + 1 - end - return new -end -function processBlock(block) - local msgBlock = block['messages'] - if msgBlock ~= nil then - for i, v in pairs(msgBlock) do - if itemMessages[i] == nil then - local msg = {TTL=450, message=v, color=0xFFFF0000} - itemMessages[i] = msg - end - end - end - local itemsBlock = block["items"] - memDomain.saveram() - isInGame = u8(0x102) - if itemsBlock ~= nil and isInGame ~= 0x00 then - if consumableStacks == nil then - setConsumableStacks() - end - memDomain.saveram() --- print('ITEMBLOCK: ') --- print(itemsBlock) - itemIndex = u8(ITEM_INDEX) --- print('ITEMINDEX: '..itemIndex) - for i, v in pairs(slice(itemsBlock, itemIndex, #itemsBlock)) do - -- Minus the offset and add to the correct domain - local memoryLocation = v - if v >= 0x100 and v <= 0x114 then - -- This is a key item - memoryLocation = memoryLocation - 0x0E0 - wU8(memoryLocation, 0x01) - elseif v >= 0x1E0 and v <= 0x1F2 then - -- This is a movement item - -- Minus Offset (0x100) - movement offset (0xE0) - memoryLocation = memoryLocation - 0x1E0 - -- Canal is a flipped bit - if memoryLocation == 0x0C then - wU8(memoryLocation, 0x00) - else - wU8(memoryLocation, 0x01) - end - elseif v >= 0x1F3 and v <= 0x1F4 then - -- NoOverworld special items - memoryLocation = noOverworldItemsLookup[v] - wU8(memoryLocation, 0x01) - elseif v >= 0x16C and v <= 0x1AF then - -- This is a gold item - amountToAdd = goldLookup[v] - biggest = u8(0x01E) - medium = u8(0x01D) - smallest = u8(0x01C) - currentValue = 0x10000 * biggest + 0x100 * medium + smallest - newValue = currentValue + amountToAdd - newBiggest = math.floor(newValue / 0x10000) - newMedium = math.floor(math.fmod(newValue, 0x10000) / 0x100) - newSmallest = math.floor(math.fmod(newValue, 0x100)) - wU8(0x01E, newBiggest) - wU8(0x01D, newMedium) - wU8(0x01C, newSmallest) - elseif v >= 0x115 and v <= 0x11B then - -- This is a regular consumable OR a shard - -- Minus Offset (0x100) + item offset (0x20) - memoryLocation = memoryLocation - 0x0E0 - currentValue = u8(memoryLocation) - amountToAdd = consumableStacks[memoryLocation] - if currentValue < 99 then - wU8(memoryLocation, currentValue + amountToAdd) - end - elseif v >= 0x1B0 and v <= 0x1BB then - -- This is an extension consumable - memoryLocation = extensionConsumableLookup[v] - currentValue = u8(memoryLocation) - amountToAdd = consumableStacks[memoryLocation] - if currentValue < 99 then - value = currentValue + amountToAdd - if value > 99 then - value = 99 - end - wU8(memoryLocation, value) - end - end - end - if #itemsBlock > itemIndex then - wU8(ITEM_INDEX, #itemsBlock) - end - - memDomain.saveram() - weaponIndex = u8(WEAPON_INDEX) - emptyWeaponSlots = getEmptyWeaponSlots() - lastUsedWeaponIndex = weaponIndex --- print('WEAPON_INDEX: '.. weaponIndex) - memDomain.saveram() - for i, v in pairs(slice(itemsBlock, weaponIndex, #itemsBlock)) do - if v >= 0x11C and v <= 0x143 then - -- Minus the offset and add to the correct domain - local itemValue = v - 0x11B - if #emptyWeaponSlots > 0 then - slot = table.remove(emptyWeaponSlots, 1) - wU8(slot, itemValue) - lastUsedWeaponIndex = weaponIndex + i - else - break - end - end - end - if lastUsedWeaponIndex ~= weaponIndex then - wU8(WEAPON_INDEX, lastUsedWeaponIndex) - end - memDomain.saveram() - armorIndex = u8(ARMOR_INDEX) - emptyArmorSlots = getEmptyArmorSlots() - lastUsedArmorIndex = armorIndex --- print('ARMOR_INDEX: '.. armorIndex) - memDomain.saveram() - for i, v in pairs(slice(itemsBlock, armorIndex, #itemsBlock)) do - if v >= 0x144 and v <= 0x16B then - -- Minus the offset and add to the correct domain - local itemValue = v - 0x143 - if #emptyArmorSlots > 0 then - slot = table.remove(emptyArmorSlots, 1) - wU8(slot, itemValue) - lastUsedArmorIndex = armorIndex + i - else - break - end - end - end - if lastUsedArmorIndex ~= armorIndex then - wU8(ARMOR_INDEX, lastUsedArmorIndex) - end - end -end - -function receive() - l, e = ff1Socket:receive() - if e == 'closed' then - if curstate == STATE_OK then - print("Connection closed") - end - curstate = STATE_UNINITIALIZED - return - elseif e == 'timeout' then - print("timeout") - return - elseif e ~= nil then - print(e) - curstate = STATE_UNINITIALIZED - return - end - processBlock(json.decode(l)) - - -- Determine Message to send back - memDomain.rom() - local playerName = uRange(0x7BCBF, 0x41) - playerName[0] = nil - local retTable = {} - retTable["playerName"] = playerName - if StateOKForMainLoop() then - retTable["locations"] = generateLocationChecked() - end - msg = json.encode(retTable).."\n" - local ret, error = ff1Socket:send(msg) - if ret == nil then - print(error) - elseif curstate == STATE_INITIAL_CONNECTION_MADE then - curstate = STATE_TENTATIVELY_CONNECTED - elseif curstate == STATE_TENTATIVELY_CONNECTED then - print("Connected!") - itemMessages["(0,0)"] = {TTL=240, message="Connected", color="green"} - curstate = STATE_OK - end -end - -function main() - if not checkBizHawkVersion() then - return - end - server, error = socket.bind('localhost', 52980) - - while true do - gui.drawEllipse(248, 9, 6, 6, "Black", "Yellow") - frame = frame + 1 - drawMessages() - if not (curstate == prevstate) then - -- console.log("Current state: "..curstate) - prevstate = curstate - end - if (curstate == STATE_OK) or (curstate == STATE_INITIAL_CONNECTION_MADE) or (curstate == STATE_TENTATIVELY_CONNECTED) then - if (frame % 60 == 0) then - gui.drawEllipse(248, 9, 6, 6, "Black", "Blue") - receive() - else - gui.drawEllipse(248, 9, 6, 6, "Black", "Green") - end - elseif (curstate == STATE_UNINITIALIZED) then - gui.drawEllipse(248, 9, 6, 6, "Black", "White") - if (frame % 60 == 0) then - gui.drawEllipse(248, 9, 6, 6, "Black", "Yellow") - - drawText(5, 8, "Waiting for client", 0xFFFF0000) - drawText(5, 32, "Please start FF1Client.exe", 0xFFFF0000) - - -- Advance so the messages are drawn - emu.frameadvance() - server:settimeout(2) - print("Attempting to connect") - local client, timeout = server:accept() - if timeout == nil then - -- print('Initial Connection Made') - curstate = STATE_INITIAL_CONNECTION_MADE - ff1Socket = client - ff1Socket:settimeout(0) - end - end - end - emu.frameadvance() - end -end - -main() diff --git a/inno_setup.iss b/inno_setup.iss index adf9acc83409..d9d4d7fb0178 100644 --- a/inno_setup.iss +++ b/inno_setup.iss @@ -86,6 +86,7 @@ Type: dirifempty; Name: "{app}" [InstallDelete] Type: files; Name: "{app}\*.exe" Type: files; Name: "{app}\data\lua\connector_pkmn_rb.lua" +Type: files; Name: "{app}\data\lua\connector_ff1.lua" Type: filesandordirs; Name: "{app}\SNI\lua*" Type: filesandordirs; Name: "{app}\EnemizerCLI*" #include "installdelete.iss" diff --git a/setup.py b/setup.py index ccca46390b02..a46b1e8ce5df 100644 --- a/setup.py +++ b/setup.py @@ -64,7 +64,6 @@ "ArchipIDLE", "Archipelago", "Clique", - "Final Fantasy", "Lufia II Ancient Cave", "Meritous", "Ocarina of Time", diff --git a/worlds/LauncherComponents.py b/worlds/LauncherComponents.py index b3e3d9006092..2bd96369313e 100644 --- a/worlds/LauncherComponents.py +++ b/worlds/LauncherComponents.py @@ -224,8 +224,6 @@ def install_apworld(apworld_path: str = "") -> None: Component('OoT Client', 'OoTClient', file_identifier=SuffixIdentifier('.apz5')), Component('OoT Adjuster', 'OoTAdjuster'), - # FF1 - Component('FF1 Client', 'FF1Client'), # TLoZ Component('Zelda 1 Client', 'Zelda1Client', file_identifier=SuffixIdentifier('.aptloz')), # ChecksFinder diff --git a/worlds/ff1/Client.py b/worlds/ff1/Client.py new file mode 100644 index 000000000000..f7315f69f0ad --- /dev/null +++ b/worlds/ff1/Client.py @@ -0,0 +1,328 @@ +import logging +from collections import deque +from typing import TYPE_CHECKING + +from NetUtils import ClientStatus + +import worlds._bizhawk as bizhawk +from worlds._bizhawk.client import BizHawkClient + +if TYPE_CHECKING: + from worlds._bizhawk.context import BizHawkClientContext + + +base_id = 7000 +logger = logging.getLogger("Client") + + +rom_name_location = 0x07FFE3 +locations_array_start = 0x200 +locations_array_length = 0x100 +items_obtained = 0x03 +gp_location_low = 0x1C +gp_location_middle = 0x1D +gp_location_high = 0x1E +weapons_arrays_starts = [0x118, 0x158, 0x198, 0x1D8] +armors_arrays_starts = [0x11C, 0x15C, 0x19C, 0x1DC] +status_a_location = 0x102 +status_b_location = 0x0FC +status_c_location = 0x0A3 + +key_items = ["Lute", "Crown", "Crystal", "Herb", "Key", "Tnt", "Adamant", "Slab", "Ruby", "Rod", + "Floater", "Chime", "Tail", "Cube", "Bottle", "Oxyale", "EarthOrb", "FireOrb", "WaterOrb", "AirOrb"] + +consumables = ["Shard", "Tent", "Cabin", "House", "Heal", "Pure", "Soft"] + +weapons = ["WoodenNunchucks", "SmallKnife", "WoodenRod", "Rapier", "IronHammer", "ShortSword", "HandAxe", "Scimitar", + "IronNunchucks", "LargeKnife", "IronStaff", "Sabre", "LongSword", "GreatAxe", "Falchon", "SilverKnife", + "SilverSword", "SilverHammer", "SilverAxe", "FlameSword", "IceSword", "DragonSword", "GiantSword", + "SunSword", "CoralSword", "WereSword", "RuneSword", "PowerRod", "LightAxe", "HealRod", "MageRod", "Defense", + "WizardRod", "Vorpal", "CatClaw", "ThorHammer", "BaneSword", "Katana", "Xcalber", "Masamune"] + +armor = ["Cloth", "WoodenArmor", "ChainArmor", "IronArmor", "SteelArmor", "SilverArmor", "FlameArmor", "IceArmor", + "OpalArmor", "DragonArmor", "Copper", "Silver", "Gold", "Opal", "WhiteShirt", "BlackShirt", "WoodenShield", + "IronShield", "SilverShield", "FlameShield", "IceShield", "OpalShield", "AegisShield", "Buckler", "ProCape", + "Cap", "WoodenHelm", "IronHelm", "SilverHelm", "OpalHelm", "HealHelm", "Ribbon", "Gloves", "CopperGauntlets", + "IronGauntlets", "SilverGauntlets", "ZeusGauntlets", "PowerGauntlets", "OpalGauntlets", "ProRing"] + +gold_items = ["Gold10", "Gold20", "Gold25", "Gold30", "Gold55", "Gold70", "Gold85", "Gold110", "Gold135", "Gold155", + "Gold160", "Gold180", "Gold240", "Gold255", "Gold260", "Gold295", "Gold300", "Gold315", "Gold330", + "Gold350", "Gold385", "Gold400", "Gold450", "Gold500", "Gold530", "Gold575", "Gold620", "Gold680", + "Gold750", "Gold795", "Gold880", "Gold1020", "Gold1250", "Gold1455", "Gold1520", "Gold1760", "Gold1975", + "Gold2000", "Gold2750", "Gold3400", "Gold4150", "Gold5000", "Gold5450", "Gold6400", "Gold6720", + "Gold7340", "Gold7690", "Gold7900", "Gold8135", "Gold9000", "Gold9300", "Gold9500", "Gold9900", + "Gold10000", "Gold12350", "Gold13000", "Gold13450", "Gold14050", "Gold14720", "Gold15000", "Gold17490", + "Gold18010", "Gold19990", "Gold20000", "Gold20010", "Gold26000", "Gold45000", "Gold65000"] + +extended_consumables = ["FullCure", "Phoenix", "Blast", "Smoke", + "Refresh", "Flare", "Black", "Guard", + "Quick", "HighPotion", "Wizard", "Cloak"] + +ext_consumables_lookup = {"FullCure": "Ext1", "Phoenix": "Ext2", "Blast": "Ext3", "Smoke": "Ext4", + "Refresh": "Ext1", "Flare": "Ext2", "Black": "Ext3", "Guard": "Ext4", + "Quick": "Ext1", "HighPotion": "Ext2", "Wizard": "Ext3", "Cloak": "Ext4"} + +ext_consumables_locations = {"Ext1": 0x3C, "Ext2": 0x3D, "Ext3": 0x3E, "Ext4": 0x3F} + + +movement_items = ["Ship", "Bridge", "Canal", "Canoe"] + +no_overworld_items = ["Sigil", "Mark"] + + +class FF1Client(BizHawkClient): + game = "Final Fantasy" + system = "NES" + + weapons_queue: deque[int] + armor_queue: deque[int] + consumable_stack_amounts: dict[str, int] | None + + def __init__(self) -> None: + self.wram = "RAM" + self.sram = "WRAM" + self.rom = "PRG ROM" + self.consumable_stack_amounts = None + self.weapons_queue = deque() + self.armor_queue = deque() + self.guard_character = 0x00 + + async def validate_rom(self, ctx: "BizHawkClientContext") -> bool: + try: + # Check ROM name/patch version + rom_name = ((await bizhawk.read(ctx.bizhawk_ctx, [(rom_name_location, 0x0D, self.rom)]))[0]) + rom_name = rom_name.decode("ascii") + if rom_name != "FINAL FANTASY": + return False # Not a Final Fantasy 1 ROM + except bizhawk.RequestFailedError: + return False # Not able to get a response, say no for now + + ctx.game = self.game + ctx.items_handling = 0b111 + ctx.want_slot_data = True + # Resetting these in case of switching ROMs + self.consumable_stack_amounts = None + self.weapons_queue = deque() + self.armor_queue = deque() + + return True + + async def game_watcher(self, ctx: "BizHawkClientContext") -> None: + if ctx.server is None: + return + + if ctx.slot is None: + return + try: + self.guard_character = await self.read_sram_value(ctx, status_a_location) + # If the first character's name starts with a 0 value, we're at the title screen/character creation. + # In that case, don't allow any read/writes. + # We do this by setting the guard to 1 because that's neither a valid character nor the initial value. + if self.guard_character == 0: + self.guard_character = 0x01 + + if self.consumable_stack_amounts is None: + self.consumable_stack_amounts = {} + self.consumable_stack_amounts["Shard"] = 1 + other_consumable_amounts = await self.read_rom(ctx, 0x47400, 10) + self.consumable_stack_amounts["Tent"] = other_consumable_amounts[0] + 1 + self.consumable_stack_amounts["Cabin"] = other_consumable_amounts[1] + 1 + self.consumable_stack_amounts["House"] = other_consumable_amounts[2] + 1 + self.consumable_stack_amounts["Heal"] = other_consumable_amounts[3] + 1 + self.consumable_stack_amounts["Pure"] = other_consumable_amounts[4] + 1 + self.consumable_stack_amounts["Soft"] = other_consumable_amounts[5] + 1 + self.consumable_stack_amounts["Ext1"] = other_consumable_amounts[6] + 1 + self.consumable_stack_amounts["Ext2"] = other_consumable_amounts[7] + 1 + self.consumable_stack_amounts["Ext3"] = other_consumable_amounts[8] + 1 + self.consumable_stack_amounts["Ext4"] = other_consumable_amounts[9] + 1 + + await self.location_check(ctx) + await self.received_items_check(ctx) + await self.process_weapons_queue(ctx) + await self.process_armor_queue(ctx) + + except bizhawk.RequestFailedError: + # The connector didn't respond. Exit handler and return to main loop to reconnect + pass + + async def location_check(self, ctx: "BizHawkClientContext"): + locations_data = await self.read_sram_values_guarded(ctx, locations_array_start, locations_array_length) + if locations_data is None: + return + locations_checked = [] + if len(locations_data) > 0xFE and locations_data[0xFE] & 0x02 != 0 and not ctx.finished_game: + await ctx.send_msgs([ + {"cmd": "StatusUpdate", + "status": ClientStatus.CLIENT_GOAL} + ]) + ctx.finished_game = True + for location in ctx.missing_locations: + # index will be - 0x100 or 0x200 + index = location + if location < 0x200: + # Location is a chest + index -= 0x100 + flag = 0x04 + else: + # Location is an NPC + index -= 0x200 + flag = 0x02 + if locations_data[index] & flag != 0: + locations_checked.append(location) + + found_locations = await ctx.check_locations(locations_checked) + for location in found_locations: + ctx.locations_checked.add(location) + location_name = ctx.location_names.lookup_in_game(location) + logger.info( + f'New Check: {location_name} ({len(ctx.locations_checked)}/' + f'{len(ctx.missing_locations) + len(ctx.checked_locations)})') + + + async def received_items_check(self, ctx: "BizHawkClientContext") -> None: + assert self.consumable_stack_amounts, "shouldn't call this function without reading consumable_stack_amounts" + write_list: list[tuple[int, list[int], str]] = [] + items_received_count = await self.read_sram_value_guarded(ctx, items_obtained) + if items_received_count is None: + return + if items_received_count < len(ctx.items_received): + current_item = ctx.items_received[items_received_count] + current_item_id = current_item.item + current_item_name = ctx.item_names.lookup_in_game(current_item_id, ctx.game) + if current_item_name in key_items: + location = current_item_id - 0xE0 + write_list.append((location, [1], self.sram)) + elif current_item_name in movement_items: + location = current_item_id - 0x1E0 + if current_item_name != "Canal": + write_list.append((location, [1], self.sram)) + else: + write_list.append((location, [0], self.sram)) + elif current_item_name in no_overworld_items: + if current_item_name == "Sigil": + location = 0x28 + else: + location = 0x12 + write_list.append((location, [1], self.sram)) + elif current_item_name in gold_items: + gold_amount = int(current_item_name[4:]) + current_gold_value = await self.read_sram_values_guarded(ctx, gp_location_low, 3) + if current_gold_value is None: + return + current_gold = int.from_bytes(current_gold_value, "little") + new_gold = min(gold_amount + current_gold, 999999) + lower_byte = new_gold % (2 ** 8) + middle_byte = (new_gold // (2 ** 8)) % (2 ** 8) + upper_byte = new_gold // (2 ** 16) + write_list.append((gp_location_low, [lower_byte], self.sram)) + write_list.append((gp_location_middle, [middle_byte], self.sram)) + write_list.append((gp_location_high, [upper_byte], self.sram)) + elif current_item_name in consumables: + location = current_item_id - 0xE0 + current_value = await self.read_sram_value_guarded(ctx, location) + if current_value is None: + return + amount_to_add = self.consumable_stack_amounts[current_item_name] + new_value = min(current_value + amount_to_add, 99) + write_list.append((location, [new_value], self.sram)) + elif current_item_name in extended_consumables: + ext_name = ext_consumables_lookup[current_item_name] + location = ext_consumables_locations[ext_name] + current_value = await self.read_sram_value_guarded(ctx, location) + if current_value is None: + return + amount_to_add = self.consumable_stack_amounts[ext_name] + new_value = min(current_value + amount_to_add, 99) + write_list.append((location, [new_value], self.sram)) + elif current_item_name in weapons: + self.weapons_queue.appendleft(current_item_id - 0x11B) + elif current_item_name in armor: + self.armor_queue.appendleft(current_item_id - 0x143) + write_list.append((items_obtained, [items_received_count + 1], self.sram)) + write_successful = await self.write_sram_values_guarded(ctx, write_list) + if write_successful: + await bizhawk.display_message(ctx.bizhawk_ctx, f"Received {current_item_name}") + + async def process_weapons_queue(self, ctx: "BizHawkClientContext"): + empty_slots = deque() + char1_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[0], 4) + char2_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[1], 4) + char3_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[2], 4) + char4_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[3], 4) + if char1_slots is None or char2_slots is None or char3_slots is None or char4_slots is None: + return + for i, slot in enumerate(char1_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[0] + i) + for i, slot in enumerate(char2_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[1] + i) + for i, slot in enumerate(char3_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[2] + i) + for i, slot in enumerate(char4_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[3] + i) + while len(empty_slots) > 0 and len(self.weapons_queue) > 0: + current_slot = empty_slots.pop() + current_weapon = self.weapons_queue.pop() + await self.write_sram_guarded(ctx, current_slot, current_weapon) + + async def process_armor_queue(self, ctx: "BizHawkClientContext"): + empty_slots = deque() + char1_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[0], 4) + char2_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[1], 4) + char3_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[2], 4) + char4_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[3], 4) + if char1_slots is None or char2_slots is None or char3_slots is None or char4_slots is None: + return + for i, slot in enumerate(char1_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[0] + i) + for i, slot in enumerate(char2_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[1] + i) + for i, slot in enumerate(char3_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[2] + i) + for i, slot in enumerate(char4_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[3] + i) + while len(empty_slots) > 0 and len(self.armor_queue) > 0: + current_slot = empty_slots.pop() + current_armor = self.armor_queue.pop() + await self.write_sram_guarded(ctx, current_slot, current_armor) + + + async def read_sram_value(self, ctx: "BizHawkClientContext", location: int): + value = ((await bizhawk.read(ctx.bizhawk_ctx, [(location, 1, self.sram)]))[0]) + return int.from_bytes(value, "little") + + async def read_sram_values_guarded(self, ctx: "BizHawkClientContext", location: int, size: int): + value = await bizhawk.guarded_read(ctx.bizhawk_ctx, + [(location, size, self.sram)], + [(status_a_location, [self.guard_character], self.sram)]) + if value is None: + return None + return value[0] + + async def read_sram_value_guarded(self, ctx: "BizHawkClientContext", location: int): + value = await bizhawk.guarded_read(ctx.bizhawk_ctx, + [(location, 1, self.sram)], + [(status_a_location, [self.guard_character], self.sram)]) + if value is None: + return None + return int.from_bytes(value[0], "little") + + async def read_rom(self, ctx: "BizHawkClientContext", location: int, size: int): + return (await bizhawk.read(ctx.bizhawk_ctx, [(location, size, self.rom)]))[0] + + async def write_sram_guarded(self, ctx: "BizHawkClientContext", location: int, value: int): + return await bizhawk.guarded_write(ctx.bizhawk_ctx, + [(location, [value], self.sram)], + [(status_a_location, [self.guard_character], self.sram)]) + + async def write_sram_values_guarded(self, ctx: "BizHawkClientContext", write_list): + return await bizhawk.guarded_write(ctx.bizhawk_ctx, + write_list, + [(status_a_location, [self.guard_character], self.sram)]) diff --git a/worlds/ff1/Items.py b/worlds/ff1/Items.py index 469cf6f05193..5d674a17b386 100644 --- a/worlds/ff1/Items.py +++ b/worlds/ff1/Items.py @@ -1,5 +1,5 @@ import json -from pathlib import Path +import pkgutil from typing import Dict, Set, NamedTuple, List from BaseClasses import Item, ItemClassification @@ -37,15 +37,13 @@ class FF1Items: _item_table_lookup: Dict[str, ItemData] = {} def _populate_item_table_from_data(self): - base_path = Path(__file__).parent - file_path = (base_path / "data/items.json").resolve() - with open(file_path) as file: - items = json.load(file) - # Hardcode progression and categories for now - self._item_table = [ItemData(name, code, "FF1Item", ItemClassification.progression if name in - FF1_PROGRESSION_LIST else ItemClassification.useful if name in FF1_USEFUL_LIST else - ItemClassification.filler) for name, code in items.items()] - self._item_table_lookup = {item.name: item for item in self._item_table} + file = pkgutil.get_data(__name__, "data/items.json").decode("utf-8") + items = json.loads(file) + # Hardcode progression and categories for now + self._item_table = [ItemData(name, code, "FF1Item", ItemClassification.progression if name in + FF1_PROGRESSION_LIST else ItemClassification.useful if name in FF1_USEFUL_LIST else + ItemClassification.filler) for name, code in items.items()] + self._item_table_lookup = {item.name: item for item in self._item_table} def _get_item_table(self) -> List[ItemData]: if not self._item_table or not self._item_table_lookup: diff --git a/worlds/ff1/Locations.py b/worlds/ff1/Locations.py index b0353f94fbdb..47facad985e5 100644 --- a/worlds/ff1/Locations.py +++ b/worlds/ff1/Locations.py @@ -1,5 +1,5 @@ import json -from pathlib import Path +import pkgutil from typing import Dict, NamedTuple, List, Optional from BaseClasses import Region, Location, MultiWorld @@ -18,13 +18,11 @@ class FF1Locations: _location_table_lookup: Dict[str, LocationData] = {} def _populate_item_table_from_data(self): - base_path = Path(__file__).parent - file_path = (base_path / "data/locations.json").resolve() - with open(file_path) as file: - locations = json.load(file) - # Hardcode progression and categories for now - self._location_table = [LocationData(name, code) for name, code in locations.items()] - self._location_table_lookup = {item.name: item for item in self._location_table} + file = pkgutil.get_data(__name__, "data/locations.json") + locations = json.loads(file) + # Hardcode progression and categories for now + self._location_table = [LocationData(name, code) for name, code in locations.items()] + self._location_table_lookup = {item.name: item for item in self._location_table} def _get_location_table(self) -> List[LocationData]: if not self._location_table or not self._location_table_lookup: diff --git a/worlds/ff1/__init__.py b/worlds/ff1/__init__.py index 3a5047506850..39df9020e529 100644 --- a/worlds/ff1/__init__.py +++ b/worlds/ff1/__init__.py @@ -7,6 +7,7 @@ from .Locations import EventId, FF1Locations, generate_rule, CHAOS_TERMINATED_EVENT from .Options import FF1Options from ..AutoWorld import World, WebWorld +from .Client import FF1Client class FF1Settings(settings.Group): diff --git a/worlds/ff1/docs/en_Final Fantasy.md b/worlds/ff1/docs/en_Final Fantasy.md index 889bb46e0c35..a05aef63bc8c 100644 --- a/worlds/ff1/docs/en_Final Fantasy.md +++ b/worlds/ff1/docs/en_Final Fantasy.md @@ -22,11 +22,6 @@ All items can appear in other players worlds, including consumables, shards, wea ## What does another world's item look like in Final Fantasy -All local and remote items appear the same. Final Fantasy will say that you received an item, then BOTH the client log and the -emulator will display what was found external to the in-game text box. +All local and remote items appear the same. Final Fantasy will say that you received an item, then the client log will +display what was found external to the in-game text box. -## Unique Local Commands -The following commands are only available when using the FF1Client for the Final Fantasy Randomizer. - -- `/nes` Shows the current status of the NES connection. -- `/toggle_msgs` Toggle displaying messages in EmuHawk diff --git a/worlds/ff1/docs/multiworld_en.md b/worlds/ff1/docs/multiworld_en.md index d3dc457f01be..1f1147bb31b5 100644 --- a/worlds/ff1/docs/multiworld_en.md +++ b/worlds/ff1/docs/multiworld_en.md @@ -2,10 +2,10 @@ ## Required Software -- The FF1Client - - Bundled with Archipelago: [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) -- The BizHawk emulator. Versions 2.3.1 and higher are supported. Version 2.7 is recommended - - [BizHawk at TASVideos](https://tasvideos.org/BizHawk) +- BizHawk: [BizHawk Releases from TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) + - Detailed installation instructions for BizHawk can be found at the above link. + - Windows users must run the prerequisite installer first, which can also be found at the above link. +- The built-in BizHawk client, which can be installed [here](https://github.com/ArchipelagoMW/Archipelago/releases) - Your legally obtained Final Fantasy (USA Edition) ROM file, probably named `Final Fantasy (USA).nes`. Neither Archipelago.gg nor the Final Fantasy Randomizer Community can supply you with this. @@ -13,7 +13,7 @@ 1. Download and install the latest version of Archipelago. 1. On Windows, download Setup.Archipelago..exe and run it -2. Assign EmuHawk version 2.3.1 or higher as your default program for launching `.nes` files. +2. Assign EmuHawk as your default program for launching `.nes` files. 1. Extract your BizHawk folder to your Desktop, or somewhere you will remember. Below are optional additional steps for loading ROMs more conveniently 1. Right-click on a ROM file and select **Open with...** @@ -46,7 +46,7 @@ please refer to the [game agnostic setup guide](/tutorial/Archipelago/setup/en). Once the Archipelago server has been hosted: -1. Navigate to your Archipelago install folder and run `ArchipelagoFF1Client.exe` +1. Navigate to your Archipelago install folder and run `ArchipelagoBizhawkClient.exe` 2. Notice the `/connect command` on the server hosting page (It should look like `/connect archipelago.gg:*****` where ***** are numbers) 3. Type the connect command into the client OR add the port to the pre-populated address on the top bar (it should @@ -54,16 +54,11 @@ Once the Archipelago server has been hosted: ### Running Your Game and Connecting to the Client Program -1. Open EmuHawk 2.3.1 or higher and load your ROM OR click your ROM file if it is already associated with the +1. Open EmuHawk and load your ROM OR click your ROM file if it is already associated with the extension `*.nes` -2. Navigate to where you installed Archipelago, then to `data/lua`, and drag+drop the `connector_ff1.lua` script onto - the main EmuHawk window. - 1. You could instead open the Lua Console manually, click `Script` 〉 `Open Script`, and navigate to - `connector_ff1.lua` with the file picker. - 2. If it gives a `NLua.Exceptions.LuaScriptException: .\socket.lua:13: module 'socket.core' not found:` exception - close your emulator entirely, restart it and re-run these steps - 3. If it says `Must use a version of BizHawk 2.3.1 or higher`, double-check your BizHawk version by clicking ** - Help** -> **About** +2. Navigate to where you installed Archipelago, then to `data/lua`, and drag+drop the `connector_bizhawk_generic.lua` +script onto the main EmuHawk window. You can also instead open the Lua Console manually, click `Script` 〉 `Open Script`, +and navigate to `connector_bizhawk_generic.lua` with the file picker. ## Play the game From 62694b1ce77f881e0b3915358d1ab9867502d7fc Mon Sep 17 00:00:00 2001 From: qwint Date: Thu, 22 May 2025 10:37:23 -0500 Subject: [PATCH 087/183] Launcher: Fix on File Drop Error Message (#5026) --- Launcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Launcher.py b/Launcher.py index 2520fd6b5f51..8b533a505f31 100644 --- a/Launcher.py +++ b/Launcher.py @@ -392,7 +392,7 @@ def _on_drop_file(self, window: Window, filename: bytes, x: int, y: int) -> None if file and component: run_component(component, file) else: - logging.warning(f"unable to identify component for {file}") + logging.warning(f"unable to identify component for {filename}") def _on_keyboard(self, window: Window, key: int, scancode: int, codepoint: str, modifier: list[str]): # Activate search as soon as we start typing, no matter if we are focused on the search box or not. From 653ee2b625cc64461589abe3c836e87f3ca21bc3 Mon Sep 17 00:00:00 2001 From: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Date: Thu, 22 May 2025 15:00:30 -0400 Subject: [PATCH 088/183] Docs: Update Snippets to Modern Type Hints (#4987) --- docs/network protocol.md | 24 ++++++++++++------------ docs/options api.md | 2 +- docs/settings api.md | 11 +++++------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/docs/network protocol.md b/docs/network protocol.md index 6688c101ab4b..8c07ff10fdf6 100644 --- a/docs/network protocol.md +++ b/docs/network protocol.md @@ -231,11 +231,11 @@ Sent to clients after a client requested this message be sent to them, more info Sent to clients if the server caught a problem with a packet. This only occurs for errors that are explicitly checked for. #### Arguments -| Name | Type | Notes | -| ---- | ---- | ----- | -| type | str | The [PacketProblemType](#PacketProblemType) that was detected in the packet. | -| original_cmd | Optional[str] | The `cmd` argument of the faulty packet, will be `None` if the `cmd` failed to be parsed. | -| text | str | A descriptive message of the problem at hand. | +| Name | Type | Notes | +| ---- |-------------| ----- | +| type | str | The [PacketProblemType](#PacketProblemType) that was detected in the packet. | +| original_cmd | str \| None | The `cmd` argument of the faulty packet, will be `None` if the `cmd` failed to be parsed. | +| text | str | A descriptive message of the problem at hand. | ##### PacketProblemType `PacketProblemType` indicates the type of problem that was detected in the faulty packet, the known problem types are below but others may be added in the future. @@ -551,14 +551,14 @@ In JSON this may look like: Message nodes sent along with [PrintJSON](#PrintJSON) packet to be reconstructed into a legible message. The nodes are intended to be read in the order they are listed in the packet. ```python -from typing import TypedDict, Optional +from typing import TypedDict class JSONMessagePart(TypedDict): - type: Optional[str] - text: Optional[str] - color: Optional[str] # only available if type is a color - flags: Optional[int] # only available if type is an item_id or item_name - player: Optional[int] # only available if type is either item or location - hint_status: Optional[HintStatus] # only available if type is hint_status + type: str | None + text: str | None + color: str | None # only available if type is a color + flags: int | None # only available if type is an item_id or item_name + player: int | None # only available if type is either item or location + hint_status: HintStatus | None # only available if type is hint_status ``` `type` is used to denote the intent of the message part. This can be used to indicate special information which may be rendered differently depending on client. How these types are displayed in Archipelago's ALttP client is not the end-all be-all. Other clients may choose to interpret and display these messages differently. diff --git a/docs/options api.md b/docs/options api.md index 037b9edb8711..c9b7c422fec8 100644 --- a/docs/options api.md +++ b/docs/options api.md @@ -333,7 +333,7 @@ within the world. ### TextChoice Like choice allows you to predetermine options and has all of the same comparison methods and handling. Also accepts any user defined string as a valid option, so will either need to be validated by adding a validation step to the option -class or within world, if necessary. Value for this class is `Union[str, int]` so if you need the value at a specified +class or within world, if necessary. Value for this class is `str | int` so if you need the value at a specified point, `self.options.my_option.current_key` will always return a string. ### PlandoBosses diff --git a/docs/settings api.md b/docs/settings api.md index bfc642d4b50c..ef1f20d09815 100644 --- a/docs/settings api.md +++ b/docs/settings api.md @@ -102,17 +102,16 @@ In worlds, this should only be used for the top level to avoid issues when upgra ### Bool -Since `bool` can not be subclassed, use the `settings.Bool` helper in a `typing.Union` to get a comment in host.yaml. +Since `bool` can not be subclassed, use the `settings.Bool` helper in a union to get a comment in host.yaml. ```python import settings -import typing class MySettings(settings.Group): class MyBool(settings.Bool): """Doc string""" - my_value: typing.Union[MyBool, bool] = True + my_value: MyBool | bool = True ``` ### UserFilePath @@ -134,15 +133,15 @@ Checks the file against [md5s](#md5s) by default. Resolves to an executable (varying file extension based on platform) -#### description: Optional\[str\] +#### description: str | None Human-readable name to use in file browser -#### copy_to: Optional\[str\] +#### copy_to: str | None Instead of storing the path, copy the file. -#### md5s: List[Union[str, bytes]] +#### md5s: list[str | bytes] Provide md5 hashes as hex digests or raw bytes for automatic validation. From de71677208f43730ce62191290901759363e407c Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Thu, 22 May 2025 21:30:30 +0200 Subject: [PATCH 089/183] Core: only raise min_client_version for new gens (#4896) --- MultiServer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MultiServer.py b/MultiServer.py index 9bcf8f6f4caa..f12f327c3f62 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -458,8 +458,12 @@ def _load(self, decoded_obj: dict, game_data_packages: typing.Dict[str, typing.A self.generator_version = Version(*decoded_obj["version"]) clients_ver = decoded_obj["minimum_versions"].get("clients", {}) self.minimum_client_versions = {} + if self.generator_version < Version(0, 6, 2): + min_version = Version(0, 1, 6) + else: + min_version = min_client_version for player, version in clients_ver.items(): - self.minimum_client_versions[player] = max(Version(*version), min_client_version) + self.minimum_client_versions[player] = max(Version(*version), min_version) self.slot_info = decoded_obj["slot_info"] self.games = {slot: slot_info.game for slot, slot_info in self.slot_info.items()} From 5491f8c4598b93c179761014c5d4d6fc7ee3ed62 Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 22 May 2025 21:28:56 -0500 Subject: [PATCH 090/183] Core: Make `get_all_state` Sweeping Optional (#4828) --- BaseClasses.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 377dee7d631e..1a06ef6b7355 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -439,7 +439,7 @@ def get_location(self, location_name: str, player: int) -> Location: return self.regions.location_cache[player][location_name] def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False, - collect_pre_fill_items: bool = True) -> CollectionState: + collect_pre_fill_items: bool = True, perform_sweep: bool = True) -> CollectionState: cached = getattr(self, "_all_state", None) if use_cache and cached: return cached.copy() @@ -453,7 +453,8 @@ def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False, subworld = self.worlds[player] for item in subworld.get_pre_fill_items(): subworld.collect(ret, item) - ret.sweep_for_advancements() + if perform_sweep: + ret.sweep_for_advancements() if use_cache: self._all_state = ret From e9f51e330211743f52d20a9a1b570da8db4db6af Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Fri, 23 May 2025 19:26:37 +0000 Subject: [PATCH 091/183] Linux: avoid adding cwd to LD_LIBRARY_PATH (#5029) When LD_LIBRARY_PATH is not set, the old code would also add the current working directory to LD_LIBRARY_PATH, which is bad. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a46b1e8ce5df..959746717a17 100644 --- a/setup.py +++ b/setup.py @@ -481,7 +481,7 @@ def write_launcher(self, default_exe: Path) -> None: if [ ! "${{#tmp}}" -lt "${{#exe}}" ]; then exe="{default_exe.parent}/$exe" fi -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/{default_exe.parent}/lib" +export LD_LIBRARY_PATH="${{LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}}$APPDIR/{default_exe.parent}/lib" $APPDIR/$exe "$@" """) launcher_filename.chmod(0o755) From a7de89f45cadb885ee01a6216af836a34bc8b843 Mon Sep 17 00:00:00 2001 From: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com> Date: Fri, 23 May 2025 21:41:27 +0200 Subject: [PATCH 092/183] shapez: Add game to README and CODEOWNERS (#5034) * Aktualisieren von README.md * Aktualisieren von CODEOWNERS --- README.md | 1 + docs/CODEOWNERS | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 84e62b15280a..9ce6caf0cfc7 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ Currently, the following games are supported: * The Legend of Zelda: The Wind Waker * Jak and Daxter: The Precursor Legacy * Super Mario Land 2: 6 Golden Coins +* shapez For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/). Downloads can be found at [Releases](https://github.com/ArchipelagoMW/Archipelago/releases), including compiled diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index 2289daad072a..1fb5578e9998 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -160,6 +160,9 @@ # Saving Princess /worlds/saving_princess/ @LeonarthCG +# shapez +/worlds/shapez/ @BlastSlimey + # Shivers /worlds/shivers/ @GodlFire @korydondzila From 8671e9a39150d1efa41e04e12f00edecf916bb28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Fri, 23 May 2025 15:52:47 -0400 Subject: [PATCH 093/183] Stardew Valley: Make animal catalog logically year 2 (#5032) --- worlds/stardew_valley/content/vanilla/pelican_town.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/stardew_valley/content/vanilla/pelican_town.py b/worlds/stardew_valley/content/vanilla/pelican_town.py index aeae4c14316a..d1d024b54c55 100644 --- a/worlds/stardew_valley/content/vanilla/pelican_town.py +++ b/worlds/stardew_valley/content/vanilla/pelican_town.py @@ -3,7 +3,7 @@ from ...data.building import Building from ...data.game_item import GenericSource, ItemTag, Tag, CustomRuleSource from ...data.harvest import ForagingSource, SeasonalForagingSource, ArtifactSpotSource -from ...data.requirement import ToolRequirement, BookRequirement, SkillRequirement +from ...data.requirement import ToolRequirement, BookRequirement, SkillRequirement, YearRequirement from ...data.shop import ShopSource, MysteryBoxSource, ArtifactTroveSource, PrizeMachineSource, FishingTreasureChestSource from ...strings.artisan_good_names import ArtisanGood from ...strings.book_names import Book @@ -209,7 +209,7 @@ # Books Book.animal_catalogue: ( Tag(ItemTag.BOOK, ItemTag.BOOK_POWER), - ShopSource(money_price=5000, shop_region=Region.ranch),), + ShopSource(money_price=5000, shop_region=Region.ranch, other_requirements=(YearRequirement(2),)),), Book.book_of_mysteries: ( Tag(ItemTag.BOOK, ItemTag.BOOK_POWER), MysteryBoxSource(amount=38),), # After 38 boxes, there are 49.99% chances player received the book. From 13ca134d125d573af1394512a0ef4f78d60f0e7e Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Fri, 23 May 2025 23:47:21 +0200 Subject: [PATCH 094/183] Core: Fix a playthrough crash when a world uses "placement based logic" (#3915) * Fix playthrough * oops * oops 2 * I don't like this * that should do it * Update BaseClasses.py Co-authored-by: Doug Hoskisson * Update BaseClasses.py --------- Co-authored-by: Doug Hoskisson --- BaseClasses.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 1a06ef6b7355..1de23bc1eab4 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -559,7 +559,9 @@ def has_beaten_game(self, state: CollectionState, player: Optional[int] = None) else: return all((self.has_beaten_game(state, p) for p in range(1, self.players + 1))) - def can_beat_game(self, starting_state: Optional[CollectionState] = None) -> bool: + def can_beat_game(self, + starting_state: Optional[CollectionState] = None, + locations: Optional[Iterable[Location]] = None) -> bool: if starting_state: if self.has_beaten_game(starting_state): return True @@ -568,7 +570,9 @@ def can_beat_game(self, starting_state: Optional[CollectionState] = None) -> boo state = CollectionState(self) if self.has_beaten_game(state): return True - prog_locations = {location for location in self.get_locations() if location.item + + base_locations = self.get_locations() if locations is None else locations + prog_locations = {location for location in base_locations if location.item and location.item.advancement and location not in state.locations_checked} while prog_locations: @@ -1603,21 +1607,19 @@ def create_playthrough(self, create_paths: bool = True) -> None: # in the second phase, we cull each sphere such that the game is still beatable, # reducing each range of influence to the bare minimum required inside it - restore_later: Dict[Location, Item] = {} + required_locations = {location for sphere in collection_spheres for location in sphere} for num, sphere in reversed(tuple(enumerate(collection_spheres))): to_delete: Set[Location] = set() for location in sphere: - # we remove the item at location and check if game is still beatable + # we remove the location from required_locations to sweep from, and check if the game is still beatable logging.debug('Checking if %s (Player %d) is required to beat the game.', location.item.name, location.item.player) - old_item = location.item - location.item = None - if multiworld.can_beat_game(state_cache[num]): + required_locations.remove(location) + if multiworld.can_beat_game(state_cache[num], required_locations): to_delete.add(location) - restore_later[location] = old_item else: # still required, got to keep it around - location.item = old_item + required_locations.add(location) # cull entries in spheres for spoiler walkthrough at end sphere -= to_delete @@ -1634,7 +1636,7 @@ def create_playthrough(self, create_paths: bool = True) -> None: logging.debug('Checking if %s (Player %d) is required to beat the game.', item.name, item.player) precollected_items.remove(item) multiworld.state.remove(item) - if not multiworld.can_beat_game(): + if not multiworld.can_beat_game(multiworld.state, required_locations): # Add the item back into `precollected_items` and collect it into `multiworld.state`. multiworld.push_precollected(item) else: @@ -1676,9 +1678,6 @@ def create_playthrough(self, create_paths: bool = True) -> None: self.create_paths(state, collection_spheres) # repair the multiworld again - for location, item in restore_later.items(): - location.item = item - for item in removed_precollected: multiworld.push_precollected(item) From 0a7aa9e3e2a1a9aea371a471f6102e554a042bd4 Mon Sep 17 00:00:00 2001 From: qwint Date: Fri, 23 May 2025 17:02:50 -0500 Subject: [PATCH 095/183] Launcher: skip launcher gui when opening webhost list with no game handlers (#4888) * calc relevant components before opening the launcher app so it can be skipped for text client only uri launches * generically passthrough the url arg * Apply suggestions from code review Co-authored-by: Aaron Wagener * flip if not else * Update Launcher.py * pluralize --------- Co-authored-by: Aaron Wagener --- Launcher.py | 58 ++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/Launcher.py b/Launcher.py index 8b533a505f31..e9751f2c2350 100644 --- a/Launcher.py +++ b/Launcher.py @@ -115,34 +115,30 @@ def update_settings(): ]) -def handle_uri(path: str, launch_args: tuple[str, ...]) -> None: +def handle_uri(path: str) -> tuple[list[Component], Component]: url = urllib.parse.urlparse(path) queries = urllib.parse.parse_qs(url.query) - launch_args = (path, *launch_args) - client_component = [] + client_components = [] text_client_component = None game = queries["game"][0] for component in components: if component.supports_uri and component.game_name == game: - client_component.append(component) + client_components.append(component) elif component.display_name == "Text Client": text_client_component = component + return client_components, text_client_component - if not client_component: - run_component(text_client_component, *launch_args) - return - else: - from kvui import ButtonsPrompt - component_options = { - text_client_component.display_name: text_client_component, - **{component.display_name: component for component in client_component} - } - popup = ButtonsPrompt("Connect to Multiworld", - "Select client to open and connect with.", - lambda component_name: run_component(component_options[component_name], *launch_args), - *component_options.keys()) - popup.open() +def build_uri_popup(component_list: list[Component], launch_args: tuple[str, ...]) -> None: + from kvui import ButtonsPrompt + component_options = { + component.display_name: component for component in component_list + } + popup = ButtonsPrompt("Connect to Multiworld", + "Select client to open and connect with.", + lambda component_name: run_component(component_options[component_name], *launch_args), + *component_options.keys()) + popup.open() def identify(path: None | str) -> tuple[None | str, None | Component]: @@ -212,7 +208,7 @@ def create_shortcut(button: Any, component: Component) -> None: refresh_components: Callable[[], None] | None = None -def run_gui(path: str, args: Any) -> None: +def run_gui(launch_components: list[Component], args: Any) -> None: from kvui import (ThemedApp, MDFloatLayout, MDGridLayout, ScrollBox) from kivy.properties import ObjectProperty from kivy.core.window import Window @@ -245,12 +241,12 @@ class Launcher(ThemedApp): cards: list[LauncherCard] current_filter: Sequence[str | Type] | None - def __init__(self, ctx=None, path=None, args=None): + def __init__(self, ctx=None, components=None, args=None): self.title = self.base_title + " " + Utils.__version__ self.ctx = ctx self.icon = r"data/icon.png" self.favorites = [] - self.launch_uri = path + self.launch_components = components self.launch_args = args self.cards = [] self.current_filter = (Type.CLIENT, Type.TOOL, Type.ADJUSTER, Type.MISC) @@ -372,9 +368,9 @@ def build(self): return self.top_screen def on_start(self): - if self.launch_uri: - handle_uri(self.launch_uri, self.launch_args) - self.launch_uri = None + if self.launch_components: + build_uri_popup(self.launch_components, self.launch_args) + self.launch_components = None self.launch_args = None @staticmethod @@ -415,7 +411,7 @@ def on_stop(self): for filter in self.current_filter)) super().on_stop() - Launcher(path=path, args=args).run() + Launcher(components=launch_components, args=args).run() # avoiding Launcher reference leak # and don't try to do something with widgets after window closed @@ -442,7 +438,15 @@ def main(args: argparse.Namespace | dict | None = None): path = args.get("Patch|Game|Component|url", None) if path is not None: - if not path.startswith("archipelago://"): + if path.startswith("archipelago://"): + args["args"] = (path, *args.get("args", ())) + # add the url arg to the passthrough args + components, text_client_component = handle_uri(path) + if not components: + args["component"] = text_client_component + else: + args['launch_components'] = [text_client_component, *components] + else: file, component = identify(path) if file: args['file'] = file @@ -458,7 +462,7 @@ def main(args: argparse.Namespace | dict | None = None): elif "component" in args: run_component(args["component"], *args["args"]) elif not args["update_settings"]: - run_gui(path, args.get("args", ())) + run_gui(args.get("launch_components", None), args.get("args", ())) if __name__ == '__main__': From e82d50a3c5cdc67091a42059f922520dec691f9c Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Fri, 23 May 2025 17:13:34 -0500 Subject: [PATCH 096/183] The Messenger: more generous portal validation (#5011) * The Messenger: more generous portal validation * remove the while and just go for 20 attempts. hopefully that's enough --- worlds/messenger/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/messenger/__init__.py b/worlds/messenger/__init__.py index e403ff59d862..88a0cec2caad 100644 --- a/worlds/messenger/__init__.py +++ b/worlds/messenger/__init__.py @@ -281,7 +281,7 @@ def connect_entrances(self) -> None: disconnect_entrances(self) add_closed_portal_reqs(self) # i need portal shuffle to happen after rules exist so i can validate it - attempts = 5 + attempts = 20 if self.options.shuffle_portals: self.portal_mapping = [] self.spoiler_portal_mapping = {} From c64791e3a8b0c51378182ad12da8d6f2a72e132e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Sat, 24 May 2025 01:15:41 -0400 Subject: [PATCH 097/183] Stardew Valley: Replace current naive entrance rando with GER (#4624) --- worlds/stardew_valley/__init__.py | 25 +- worlds/stardew_valley/content/mods/sve.py | 21 +- worlds/stardew_valley/mods/logic/sve_logic.py | 3 +- .../mods/{mod_regions.py => region_data.py} | 296 +++---- worlds/stardew_valley/region_classes.py | 67 -- worlds/stardew_valley/regions.py | 775 ------------------ worlds/stardew_valley/regions/__init__.py | 2 + .../stardew_valley/regions/entrance_rando.py | 73 ++ worlds/stardew_valley/regions/model.py | 94 +++ worlds/stardew_valley/regions/mods.py | 46 ++ worlds/stardew_valley/regions/regions.py | 61 ++ worlds/stardew_valley/regions/vanilla_data.py | 522 ++++++++++++ worlds/stardew_valley/test/TestRegions.py | 173 ---- .../test/assertion/rule_assert.py | 12 +- worlds/stardew_valley/test/bases.py | 7 +- worlds/stardew_valley/test/mods/TestMods.py | 39 +- .../regions/TestEntranceClassifications.py | 36 + .../test/regions/TestEntranceRandomization.py | 167 ++++ .../test/regions/TestRandomizationFlag.py | 88 ++ .../test/regions/TestRegionConnections.py | 66 ++ .../stardew_valley/test/regions/__init__.py | 0 21 files changed, 1350 insertions(+), 1223 deletions(-) rename worlds/stardew_valley/mods/{mod_regions.py => region_data.py} (61%) delete mode 100644 worlds/stardew_valley/region_classes.py delete mode 100644 worlds/stardew_valley/regions.py create mode 100644 worlds/stardew_valley/regions/__init__.py create mode 100644 worlds/stardew_valley/regions/entrance_rando.py create mode 100644 worlds/stardew_valley/regions/model.py create mode 100644 worlds/stardew_valley/regions/mods.py create mode 100644 worlds/stardew_valley/regions/regions.py create mode 100644 worlds/stardew_valley/regions/vanilla_data.py delete mode 100644 worlds/stardew_valley/test/TestRegions.py create mode 100644 worlds/stardew_valley/test/regions/TestEntranceClassifications.py create mode 100644 worlds/stardew_valley/test/regions/TestEntranceRandomization.py create mode 100644 worlds/stardew_valley/test/regions/TestRandomizationFlag.py create mode 100644 worlds/stardew_valley/test/regions/TestRegionConnections.py create mode 100644 worlds/stardew_valley/test/regions/__init__.py diff --git a/worlds/stardew_valley/__init__.py b/worlds/stardew_valley/__init__.py index 9a05c04d5107..ea0ce9e1232d 100644 --- a/worlds/stardew_valley/__init__.py +++ b/worlds/stardew_valley/__init__.py @@ -1,9 +1,10 @@ import logging import typing from random import Random -from typing import Dict, Any, Iterable, Optional, List, TextIO +from typing import Dict, Any, Optional, List, TextIO -from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState +import entrance_rando +from BaseClasses import Region, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState from Options import PerGameCommonOptions from worlds.AutoWorld import World, WebWorld from .bundles.bundle_room import BundleRoom @@ -21,7 +22,7 @@ from .options.option_groups import sv_option_groups from .options.presets import sv_options_presets from .options.worlds_group import apply_most_restrictive_options -from .regions import create_regions +from .regions import create_regions, prepare_mod_data from .rules import set_rules from .stardew_rule import True_, StardewRule, HasProgressionPercent from .strings.ap_names.event_names import Event @@ -124,18 +125,13 @@ def generate_early(self): self.content = create_content(self.options) def create_regions(self): - def create_region(name: str, exits: Iterable[str]) -> Region: - region = Region(name, self.player, self.multiworld) - region.exits = [Entrance(self.player, exit_name, region) for exit_name in exits] - return region + def create_region(name: str) -> Region: + return Region(name, self.player, self.multiworld) - world_regions, world_entrances, self.randomized_entrances = create_regions(create_region, self.random, self.options, self.content) + world_regions = create_regions(create_region, self.options, self.content) self.logic = StardewLogic(self.player, self.options, self.content, world_regions.keys()) - self.modified_bundles = get_all_bundles(self.random, - self.logic, - self.content, - self.options) + self.modified_bundles = get_all_bundles(self.random, self.logic, self.content, self.options) def add_location(name: str, code: Optional[int], region: str): region: Region = world_regions[region] @@ -308,6 +304,11 @@ def create_event_location(self, location_data: LocationData, rule: StardewRule, def set_rules(self): set_rules(self) + def connect_entrances(self) -> None: + no_target_groups = {0: [0]} + placement = entrance_rando.randomize_entrances(self, coupled=True, target_group_lookup=no_target_groups) + self.randomized_entrances = prepare_mod_data(placement) + def generate_basic(self): pass diff --git a/worlds/stardew_valley/content/mods/sve.py b/worlds/stardew_valley/content/mods/sve.py index 12b3e3558a67..2c9edc810615 100644 --- a/worlds/stardew_valley/content/mods/sve.py +++ b/worlds/stardew_valley/content/mods/sve.py @@ -24,6 +24,9 @@ from ...strings.tool_names import Tool, ToolMaterial from ...strings.villager_names import ModNPC +# Used to adapt content not yet moved to content packs to easily detect when SVE and Ginger Island are both enabled. +SVE_GINGER_ISLAND_PACK = ModNames.sve + "+" + ginger_island_content_pack.name + class SVEContentPack(ContentPack): @@ -67,6 +70,10 @@ def harvest_source_hook(self, content: StardewContent): content.game_items.pop(SVESeed.slime) content.game_items.pop(SVEFruit.slime_berry) + def finalize_hook(self, content: StardewContent): + if ginger_island_content_pack.name in content.registered_packs: + content.registered_packs.add(SVE_GINGER_ISLAND_PACK) + register_mod_content_pack(SVEContentPack( ModNames.sve, @@ -80,8 +87,9 @@ def harvest_source_hook(self, content: StardewContent): ModEdible.lightning_elixir: (ShopSource(money_price=12000, shop_region=SVERegion.galmoran_outpost),), ModEdible.barbarian_elixir: (ShopSource(money_price=22000, shop_region=SVERegion.galmoran_outpost),), ModEdible.gravity_elixir: (ShopSource(money_price=4000, shop_region=SVERegion.galmoran_outpost),), - SVEMeal.grampleton_orange_chicken: ( - ShopSource(money_price=650, shop_region=Region.saloon, other_requirements=(RelationshipRequirement(ModNPC.sophia, 6),)),), + SVEMeal.grampleton_orange_chicken: (ShopSource(money_price=650, + shop_region=Region.saloon, + other_requirements=(RelationshipRequirement(ModNPC.sophia, 6),)),), ModEdible.hero_elixir: (ShopSource(money_price=8000, shop_region=SVERegion.isaac_shop),), ModEdible.aegis_elixir: (ShopSource(money_price=28000, shop_region=SVERegion.galmoran_outpost),), SVEBeverage.sports_drink: (ShopSource(money_price=750, shop_region=Region.hospital),), @@ -118,8 +126,8 @@ def harvest_source_hook(self, content: StardewContent): ModLoot.green_mushroom: (ForagingSource(regions=(SVERegion.highlands_pond,), seasons=Season.not_winter),), ModLoot.ornate_treasure_chest: (ForagingSource(regions=(SVERegion.highlands_outside,), - other_requirements=( - CombatRequirement(Performance.galaxy), ToolRequirement(Tool.axe, ToolMaterial.iron))),), + other_requirements=(CombatRequirement(Performance.galaxy), + ToolRequirement(Tool.axe, ToolMaterial.iron))),), ModLoot.swirl_stone: (ForagingSource(regions=(SVERegion.crimson_badlands,), other_requirements=(CombatRequirement(Performance.galaxy),)),), ModLoot.void_soul: (ForagingSource(regions=(SVERegion.crimson_badlands,), other_requirements=(CombatRequirement(Performance.good),)),), SVEForage.winter_star_rose: (ForagingSource(regions=(SVERegion.summit,), seasons=(Season.winter,)),), @@ -139,8 +147,9 @@ def harvest_source_hook(self, content: StardewContent): SVEForage.thistle: (ForagingSource(regions=(SVERegion.summit,)),), ModLoot.void_pebble: (ForagingSource(regions=(SVERegion.crimson_badlands,), other_requirements=(CombatRequirement(Performance.great),)),), ModLoot.void_shard: (ForagingSource(regions=(SVERegion.crimson_badlands,), - other_requirements=( - CombatRequirement(Performance.galaxy), SkillRequirement(Skill.combat, 10), YearRequirement(3),)),), + other_requirements=(CombatRequirement(Performance.galaxy), + SkillRequirement(Skill.combat, 10), + YearRequirement(3),)),), SVEWaterItem.dulse_seaweed: (ForagingSource(regions=(Region.beach,), other_requirements=(FishingRequirement(Region.beach),)),), # Fable Reef diff --git a/worlds/stardew_valley/mods/logic/sve_logic.py b/worlds/stardew_valley/mods/logic/sve_logic.py index 7f0c12bc4f1e..03f1737c5919 100644 --- a/worlds/stardew_valley/mods/logic/sve_logic.py +++ b/worlds/stardew_valley/mods/logic/sve_logic.py @@ -1,8 +1,7 @@ -from ..mod_regions import SVERegion from ...logic.base_logic import BaseLogicMixin, BaseLogic from ...strings.ap_names.mods.mod_items import SVELocation, SVERunes, SVEQuestItem from ...strings.quest_names import Quest, ModQuest -from ...strings.region_names import Region +from ...strings.region_names import Region, SVERegion from ...strings.tool_names import Tool, ToolMaterial from ...strings.wallet_item_names import Wallet diff --git a/worlds/stardew_valley/mods/mod_regions.py b/worlds/stardew_valley/mods/region_data.py similarity index 61% rename from worlds/stardew_valley/mods/mod_regions.py rename to worlds/stardew_valley/mods/region_data.py index a402ba606868..5dc4a3dff28b 100644 --- a/worlds/stardew_valley/mods/mod_regions.py +++ b/worlds/stardew_valley/mods/region_data.py @@ -1,15 +1,14 @@ -from typing import Dict, List - from .mod_data import ModNames -from ..region_classes import RegionData, ConnectionData, ModificationFlag, RandomizationFlag, ModRegionData +from ..content.mods.sve import SVE_GINGER_ISLAND_PACK +from ..regions.model import RegionData, ConnectionData, MergeFlag, RandomizationFlag, ModRegionsData from ..strings.entrance_names import Entrance, DeepWoodsEntrance, EugeneEntrance, LaceyEntrance, BoardingHouseEntrance, \ JasperEntrance, AlecEntrance, YobaEntrance, JunaEntrance, MagicEntrance, AyeishaEntrance, RileyEntrance, SVEEntrance, AlectoEntrance from ..strings.region_names import Region, DeepWoodsRegion, EugeneRegion, JasperRegion, BoardingHouseRegion, \ AlecRegion, YobaRegion, JunaRegion, MagicRegion, AyeishaRegion, RileyRegion, SVERegion, AlectoRegion, LaceyRegion deep_woods_regions = [ - RegionData(Region.farm, [DeepWoodsEntrance.use_woods_obelisk]), - RegionData(DeepWoodsRegion.woods_obelisk_menu, [DeepWoodsEntrance.deep_woods_depth_1, + RegionData(Region.farm, (DeepWoodsEntrance.use_woods_obelisk,)), + RegionData(DeepWoodsRegion.woods_obelisk_menu, (DeepWoodsEntrance.deep_woods_depth_1, DeepWoodsEntrance.deep_woods_depth_10, DeepWoodsEntrance.deep_woods_depth_20, DeepWoodsEntrance.deep_woods_depth_30, @@ -19,9 +18,9 @@ DeepWoodsEntrance.deep_woods_depth_70, DeepWoodsEntrance.deep_woods_depth_80, DeepWoodsEntrance.deep_woods_depth_90, - DeepWoodsEntrance.deep_woods_depth_100]), - RegionData(Region.secret_woods, [DeepWoodsEntrance.secret_woods_to_deep_woods]), - RegionData(DeepWoodsRegion.main_lichtung, [DeepWoodsEntrance.deep_woods_house]), + DeepWoodsEntrance.deep_woods_depth_100)), + RegionData(Region.secret_woods, (DeepWoodsEntrance.secret_woods_to_deep_woods,)), + RegionData(DeepWoodsRegion.main_lichtung, (DeepWoodsEntrance.deep_woods_house,)), RegionData(DeepWoodsRegion.abandoned_home), RegionData(DeepWoodsRegion.floor_10), RegionData(DeepWoodsRegion.floor_20), @@ -32,14 +31,13 @@ RegionData(DeepWoodsRegion.floor_70), RegionData(DeepWoodsRegion.floor_80), RegionData(DeepWoodsRegion.floor_90), - RegionData(DeepWoodsRegion.floor_100) + RegionData(DeepWoodsRegion.floor_100), ] deep_woods_entrances = [ ConnectionData(DeepWoodsEntrance.use_woods_obelisk, DeepWoodsRegion.woods_obelisk_menu), ConnectionData(DeepWoodsEntrance.secret_woods_to_deep_woods, DeepWoodsRegion.main_lichtung), - ConnectionData(DeepWoodsEntrance.deep_woods_house, DeepWoodsRegion.abandoned_home, - flag=RandomizationFlag.NON_PROGRESSION), + ConnectionData(DeepWoodsEntrance.deep_woods_house, DeepWoodsRegion.abandoned_home, flag=RandomizationFlag.BUILDINGS), ConnectionData(DeepWoodsEntrance.deep_woods_depth_1, DeepWoodsRegion.main_lichtung), ConnectionData(DeepWoodsEntrance.deep_woods_depth_10, DeepWoodsRegion.floor_10), ConnectionData(DeepWoodsEntrance.deep_woods_depth_20, DeepWoodsRegion.floor_20), @@ -50,165 +48,166 @@ ConnectionData(DeepWoodsEntrance.deep_woods_depth_70, DeepWoodsRegion.floor_70), ConnectionData(DeepWoodsEntrance.deep_woods_depth_80, DeepWoodsRegion.floor_80), ConnectionData(DeepWoodsEntrance.deep_woods_depth_90, DeepWoodsRegion.floor_90), - ConnectionData(DeepWoodsEntrance.deep_woods_depth_100, DeepWoodsRegion.floor_100) + ConnectionData(DeepWoodsEntrance.deep_woods_depth_100, DeepWoodsRegion.floor_100), ] eugene_regions = [ - RegionData(Region.forest, [EugeneEntrance.forest_to_garden]), - RegionData(EugeneRegion.eugene_garden, [EugeneEntrance.garden_to_bedroom]), - RegionData(EugeneRegion.eugene_bedroom) + RegionData(Region.forest, (EugeneEntrance.forest_to_garden,)), + RegionData(EugeneRegion.eugene_garden, (EugeneEntrance.garden_to_bedroom,)), + RegionData(EugeneRegion.eugene_bedroom), ] eugene_entrances = [ ConnectionData(EugeneEntrance.forest_to_garden, EugeneRegion.eugene_garden, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(EugeneEntrance.garden_to_bedroom, EugeneRegion.eugene_bedroom, flag=RandomizationFlag.BUILDINGS) + ConnectionData(EugeneEntrance.garden_to_bedroom, EugeneRegion.eugene_bedroom, flag=RandomizationFlag.BUILDINGS), ] magic_regions = [ - RegionData(Region.pierre_store, [MagicEntrance.store_to_altar]), - RegionData(MagicRegion.altar) + RegionData(Region.pierre_store, (MagicEntrance.store_to_altar,)), + RegionData(MagicRegion.altar), ] magic_entrances = [ - ConnectionData(MagicEntrance.store_to_altar, MagicRegion.altar, flag=RandomizationFlag.NOT_RANDOMIZED) + ConnectionData(MagicEntrance.store_to_altar, MagicRegion.altar, flag=RandomizationFlag.NOT_RANDOMIZED), ] jasper_regions = [ - RegionData(Region.museum, [JasperEntrance.museum_to_bedroom]), - RegionData(JasperRegion.jasper_bedroom) + RegionData(Region.museum, (JasperEntrance.museum_to_bedroom,)), + RegionData(JasperRegion.jasper_bedroom), ] jasper_entrances = [ - ConnectionData(JasperEntrance.museum_to_bedroom, JasperRegion.jasper_bedroom, flag=RandomizationFlag.BUILDINGS) + ConnectionData(JasperEntrance.museum_to_bedroom, JasperRegion.jasper_bedroom, flag=RandomizationFlag.BUILDINGS), ] alec_regions = [ - RegionData(Region.forest, [AlecEntrance.forest_to_petshop]), - RegionData(AlecRegion.pet_store, [AlecEntrance.petshop_to_bedroom]), - RegionData(AlecRegion.alec_bedroom) + RegionData(Region.forest, (AlecEntrance.forest_to_petshop,)), + RegionData(AlecRegion.pet_store, (AlecEntrance.petshop_to_bedroom,)), + RegionData(AlecRegion.alec_bedroom), ] alec_entrances = [ ConnectionData(AlecEntrance.forest_to_petshop, AlecRegion.pet_store, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(AlecEntrance.petshop_to_bedroom, AlecRegion.alec_bedroom, flag=RandomizationFlag.BUILDINGS) + ConnectionData(AlecEntrance.petshop_to_bedroom, AlecRegion.alec_bedroom, flag=RandomizationFlag.BUILDINGS), ] yoba_regions = [ - RegionData(Region.secret_woods, [YobaEntrance.secret_woods_to_clearing]), - RegionData(YobaRegion.yoba_clearing) + RegionData(Region.secret_woods, (YobaEntrance.secret_woods_to_clearing,)), + RegionData(YobaRegion.yoba_clearing), ] yoba_entrances = [ - ConnectionData(YobaEntrance.secret_woods_to_clearing, YobaRegion.yoba_clearing, flag=RandomizationFlag.BUILDINGS) + ConnectionData(YobaEntrance.secret_woods_to_clearing, YobaRegion.yoba_clearing, flag=RandomizationFlag.BUILDINGS), ] juna_regions = [ - RegionData(Region.forest, [JunaEntrance.forest_to_juna_cave]), - RegionData(JunaRegion.juna_cave) + RegionData(Region.forest, (JunaEntrance.forest_to_juna_cave,)), + RegionData(JunaRegion.juna_cave), ] juna_entrances = [ ConnectionData(JunaEntrance.forest_to_juna_cave, JunaRegion.juna_cave, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA) + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ] ayeisha_regions = [ - RegionData(Region.bus_stop, [AyeishaEntrance.bus_stop_to_mail_van]), - RegionData(AyeishaRegion.mail_van) + RegionData(Region.bus_stop, (AyeishaEntrance.bus_stop_to_mail_van,)), + RegionData(AyeishaRegion.mail_van), ] ayeisha_entrances = [ ConnectionData(AyeishaEntrance.bus_stop_to_mail_van, AyeishaRegion.mail_van, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA) + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ] riley_regions = [ - RegionData(Region.town, [RileyEntrance.town_to_riley]), - RegionData(RileyRegion.riley_house) + RegionData(Region.town, (RileyEntrance.town_to_riley,)), + RegionData(RileyRegion.riley_house), ] riley_entrances = [ ConnectionData(RileyEntrance.town_to_riley, RileyRegion.riley_house, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA) + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ] -stardew_valley_expanded_regions = [ - RegionData(Region.backwoods, [SVEEntrance.backwoods_to_grove]), - RegionData(SVERegion.enchanted_grove, [SVEEntrance.grove_to_outpost_warp, SVEEntrance.grove_to_wizard_warp, +sve_main_land_regions = [ + RegionData(Region.backwoods, (SVEEntrance.backwoods_to_grove,)), + RegionData(SVERegion.enchanted_grove, (SVEEntrance.grove_to_outpost_warp, SVEEntrance.grove_to_wizard_warp, SVEEntrance.grove_to_farm_warp, SVEEntrance.grove_to_guild_warp, SVEEntrance.grove_to_junimo_warp, - SVEEntrance.grove_to_spring_warp, SVEEntrance.grove_to_aurora_warp]), - RegionData(SVERegion.grove_farm_warp, [SVEEntrance.farm_warp_to_farm]), - RegionData(SVERegion.grove_aurora_warp, [SVEEntrance.aurora_warp_to_aurora]), - RegionData(SVERegion.grove_guild_warp, [SVEEntrance.guild_warp_to_guild]), - RegionData(SVERegion.grove_junimo_warp, [SVEEntrance.junimo_warp_to_junimo]), - RegionData(SVERegion.grove_spring_warp, [SVEEntrance.spring_warp_to_spring]), - RegionData(SVERegion.grove_outpost_warp, [SVEEntrance.outpost_warp_to_outpost]), - RegionData(SVERegion.grove_wizard_warp, [SVEEntrance.wizard_warp_to_wizard]), - RegionData(SVERegion.galmoran_outpost, [SVEEntrance.outpost_to_badlands_entrance, SVEEntrance.use_alesia_shop, - SVEEntrance.use_isaac_shop]), - RegionData(SVERegion.badlands_entrance, [SVEEntrance.badlands_entrance_to_badlands]), - RegionData(SVERegion.crimson_badlands, [SVEEntrance.badlands_to_cave]), + SVEEntrance.grove_to_spring_warp, SVEEntrance.grove_to_aurora_warp)), + RegionData(SVERegion.grove_farm_warp, (SVEEntrance.farm_warp_to_farm,)), + RegionData(SVERegion.grove_aurora_warp, (SVEEntrance.aurora_warp_to_aurora,)), + RegionData(SVERegion.grove_guild_warp, (SVEEntrance.guild_warp_to_guild,)), + RegionData(SVERegion.grove_junimo_warp, (SVEEntrance.junimo_warp_to_junimo,)), + RegionData(SVERegion.grove_spring_warp, (SVEEntrance.spring_warp_to_spring,)), + RegionData(SVERegion.grove_outpost_warp, (SVEEntrance.outpost_warp_to_outpost,)), + RegionData(SVERegion.grove_wizard_warp, (SVEEntrance.wizard_warp_to_wizard,)), + RegionData(SVERegion.galmoran_outpost, (SVEEntrance.outpost_to_badlands_entrance, SVEEntrance.use_alesia_shop, SVEEntrance.use_isaac_shop)), + RegionData(SVERegion.badlands_entrance, (SVEEntrance.badlands_entrance_to_badlands,)), + RegionData(SVERegion.crimson_badlands, (SVEEntrance.badlands_to_cave,)), RegionData(SVERegion.badlands_cave), - RegionData(Region.bus_stop, [SVEEntrance.bus_stop_to_shed]), - RegionData(SVERegion.grandpas_shed, [SVEEntrance.grandpa_shed_to_interior, SVEEntrance.grandpa_shed_to_town]), - RegionData(SVERegion.grandpas_shed_interior, [SVEEntrance.grandpa_interior_to_upstairs]), + RegionData(Region.bus_stop, (SVEEntrance.bus_stop_to_shed,)), + RegionData(SVERegion.grandpas_shed, (SVEEntrance.grandpa_shed_to_interior, SVEEntrance.grandpa_shed_to_town)), + RegionData(SVERegion.grandpas_shed_interior, (SVEEntrance.grandpa_interior_to_upstairs,)), RegionData(SVERegion.grandpas_shed_upstairs), RegionData(Region.forest, - [SVEEntrance.forest_to_fairhaven, SVEEntrance.forest_to_west, SVEEntrance.forest_to_lost_woods, - SVEEntrance.forest_to_bmv, SVEEntrance.forest_to_marnie_shed]), + (SVEEntrance.forest_to_fairhaven, SVEEntrance.forest_to_west, SVEEntrance.forest_to_lost_woods, + SVEEntrance.forest_to_bmv, SVEEntrance.forest_to_marnie_shed)), RegionData(SVERegion.marnies_shed), RegionData(SVERegion.fairhaven_farm), - RegionData(Region.town, [SVEEntrance.town_to_bmv, SVEEntrance.town_to_jenkins, - SVEEntrance.town_to_bridge, SVEEntrance.town_to_plot]), - RegionData(SVERegion.blue_moon_vineyard, [SVEEntrance.bmv_to_sophia, SVEEntrance.bmv_to_beach]), + RegionData(Region.town, (SVEEntrance.town_to_bmv, SVEEntrance.town_to_jenkins, SVEEntrance.town_to_bridge, SVEEntrance.town_to_plot)), + RegionData(SVERegion.blue_moon_vineyard, (SVEEntrance.bmv_to_sophia, SVEEntrance.bmv_to_beach)), RegionData(SVERegion.sophias_house), - RegionData(SVERegion.jenkins_residence, [SVEEntrance.jenkins_to_cellar]), + RegionData(SVERegion.jenkins_residence, (SVEEntrance.jenkins_to_cellar,)), RegionData(SVERegion.jenkins_cellar), - RegionData(SVERegion.unclaimed_plot, [SVEEntrance.plot_to_bridge]), + RegionData(SVERegion.unclaimed_plot, (SVEEntrance.plot_to_bridge,)), RegionData(SVERegion.shearwater), - RegionData(Region.museum, [SVEEntrance.museum_to_gunther_bedroom]), + RegionData(Region.museum, (SVEEntrance.museum_to_gunther_bedroom,)), RegionData(SVERegion.gunther_bedroom), - RegionData(Region.fish_shop, [SVEEntrance.fish_shop_to_willy_bedroom]), + RegionData(Region.fish_shop, (SVEEntrance.fish_shop_to_willy_bedroom,)), RegionData(SVERegion.willy_bedroom), - RegionData(Region.mountain, [SVEEntrance.mountain_to_guild_summit]), - RegionData(SVERegion.guild_summit, [SVEEntrance.guild_to_interior, SVEEntrance.guild_to_mines, - SVEEntrance.summit_to_highlands]), - RegionData(Region.railroad, [SVEEntrance.to_susan_house, SVEEntrance.enter_summit, SVEEntrance.railroad_to_grampleton_station]), - RegionData(SVERegion.grampleton_station, [SVEEntrance.grampleton_station_to_grampleton_suburbs]), - RegionData(SVERegion.grampleton_suburbs, [SVEEntrance.grampleton_suburbs_to_scarlett_house]), + RegionData(Region.mountain, (SVEEntrance.mountain_to_guild_summit,)), + # These entrances are removed from the mountain region when SVE is enabled + RegionData(Region.mountain, (Entrance.mountain_to_adventurer_guild, Entrance.mountain_to_the_mines), flag=MergeFlag.REMOVE_EXITS), + RegionData(SVERegion.guild_summit, (SVEEntrance.guild_to_interior, SVEEntrance.guild_to_mines)), + RegionData(Region.railroad, (SVEEntrance.to_susan_house, SVEEntrance.enter_summit, SVEEntrance.railroad_to_grampleton_station)), + RegionData(SVERegion.grampleton_station, (SVEEntrance.grampleton_station_to_grampleton_suburbs,)), + RegionData(SVERegion.grampleton_suburbs, (SVEEntrance.grampleton_suburbs_to_scarlett_house,)), RegionData(SVERegion.scarlett_house), - RegionData(Region.wizard_basement, [SVEEntrance.wizard_to_fable_reef]), - RegionData(SVERegion.fable_reef, [SVEEntrance.fable_reef_to_guild], is_ginger_island=True), - RegionData(SVERegion.first_slash_guild, [SVEEntrance.first_slash_guild_to_hallway], is_ginger_island=True), - RegionData(SVERegion.first_slash_hallway, [SVEEntrance.first_slash_hallway_to_room], is_ginger_island=True), - RegionData(SVERegion.first_slash_spare_room, is_ginger_island=True), - RegionData(SVERegion.highlands_outside, [SVEEntrance.highlands_to_lance, SVEEntrance.highlands_to_cave, SVEEntrance.highlands_to_pond], is_ginger_island=True), - RegionData(SVERegion.highlands_pond, is_ginger_island=True), - RegionData(SVERegion.highlands_cavern, [SVEEntrance.to_dwarf_prison], is_ginger_island=True), - RegionData(SVERegion.dwarf_prison, is_ginger_island=True), - RegionData(SVERegion.lances_house, [SVEEntrance.lance_to_ladder], is_ginger_island=True), - RegionData(SVERegion.lances_ladder, [SVEEntrance.lance_ladder_to_highlands], is_ginger_island=True), - RegionData(SVERegion.forest_west, [SVEEntrance.forest_west_to_spring, SVEEntrance.west_to_aurora, - SVEEntrance.use_bear_shop]), - RegionData(SVERegion.aurora_vineyard, [SVEEntrance.to_aurora_basement]), + RegionData(SVERegion.forest_west, (SVEEntrance.forest_west_to_spring, SVEEntrance.west_to_aurora, SVEEntrance.use_bear_shop,)), + RegionData(SVERegion.aurora_vineyard, (SVEEntrance.to_aurora_basement,)), RegionData(SVERegion.aurora_vineyard_basement), - RegionData(Region.secret_woods, [SVEEntrance.secret_woods_to_west]), + RegionData(Region.secret_woods, (SVEEntrance.secret_woods_to_west,)), RegionData(SVERegion.bear_shop), - RegionData(SVERegion.sprite_spring, [SVEEntrance.sprite_spring_to_cave]), + RegionData(SVERegion.sprite_spring, (SVEEntrance.sprite_spring_to_cave,)), RegionData(SVERegion.sprite_spring_cave), - RegionData(SVERegion.lost_woods, [SVEEntrance.lost_woods_to_junimo_woods]), - RegionData(SVERegion.junimo_woods, [SVEEntrance.use_purple_junimo]), + RegionData(SVERegion.lost_woods, (SVEEntrance.lost_woods_to_junimo_woods,)), + RegionData(SVERegion.junimo_woods, (SVEEntrance.use_purple_junimo,)), RegionData(SVERegion.purple_junimo_shop), RegionData(SVERegion.alesia_shop), RegionData(SVERegion.isaac_shop), RegionData(SVERegion.summit), RegionData(SVERegion.susans_house), - RegionData(Region.mountain, [Entrance.mountain_to_adventurer_guild, Entrance.mountain_to_the_mines], ModificationFlag.MODIFIED) +] + +sve_ginger_island_regions = [ + RegionData(Region.wizard_basement, (SVEEntrance.wizard_to_fable_reef,)), + RegionData(SVERegion.fable_reef, (SVEEntrance.fable_reef_to_guild,)), + RegionData(SVERegion.first_slash_guild, (SVEEntrance.first_slash_guild_to_hallway,)), + RegionData(SVERegion.first_slash_hallway, (SVEEntrance.first_slash_hallway_to_room,)), + RegionData(SVERegion.first_slash_spare_room), + RegionData(SVERegion.guild_summit, (SVEEntrance.summit_to_highlands,)), + RegionData(SVERegion.highlands_outside, (SVEEntrance.highlands_to_lance, SVEEntrance.highlands_to_cave, SVEEntrance.highlands_to_pond), ), + RegionData(SVERegion.highlands_pond), + RegionData(SVERegion.highlands_cavern, (SVEEntrance.to_dwarf_prison,)), + RegionData(SVERegion.dwarf_prison), + RegionData(SVERegion.lances_house, (SVEEntrance.lance_to_ladder,)), + RegionData(SVERegion.lances_ladder, (SVEEntrance.lance_ladder_to_highlands,)), ] -mandatory_sve_connections = [ +sve_main_land_connections = [ ConnectionData(SVEEntrance.town_to_jenkins, SVERegion.jenkins_residence, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ConnectionData(SVEEntrance.jenkins_to_cellar, SVERegion.jenkins_cellar, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.forest_to_bmv, SVERegion.blue_moon_vineyard), @@ -223,7 +222,7 @@ ConnectionData(SVEEntrance.grandpa_interior_to_upstairs, SVERegion.grandpas_shed_upstairs, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.grandpa_shed_to_town, Region.town), ConnectionData(SVEEntrance.bmv_to_sophia, SVERegion.sophias_house, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(SVEEntrance.summit_to_highlands, SVERegion.highlands_outside, flag=RandomizationFlag.GINGER_ISLAND), + ConnectionData(SVEEntrance.summit_to_highlands, SVERegion.highlands_outside), ConnectionData(SVEEntrance.guild_to_interior, Region.adventurer_guild, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.backwoods_to_grove, SVERegion.enchanted_grove, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), ConnectionData(SVEEntrance.grove_to_outpost_warp, SVERegion.grove_outpost_warp), @@ -242,8 +241,6 @@ ConnectionData(SVEEntrance.use_purple_junimo, SVERegion.purple_junimo_shop), ConnectionData(SVEEntrance.grove_to_spring_warp, SVERegion.grove_spring_warp), ConnectionData(SVEEntrance.spring_warp_to_spring, SVERegion.sprite_spring, flag=RandomizationFlag.BUILDINGS), - ConnectionData(SVEEntrance.wizard_to_fable_reef, SVERegion.fable_reef, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.fable_reef_to_guild, SVERegion.first_slash_guild, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.outpost_to_badlands_entrance, SVERegion.badlands_entrance, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.badlands_entrance_to_badlands, SVERegion.crimson_badlands, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.badlands_to_cave, SVERegion.badlands_cave, flag=RandomizationFlag.BUILDINGS), @@ -259,71 +256,75 @@ ConnectionData(SVEEntrance.to_susan_house, SVERegion.susans_house, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.enter_summit, SVERegion.summit, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.forest_to_fairhaven, SVERegion.fairhaven_farm, flag=RandomizationFlag.NON_PROGRESSION), - ConnectionData(SVEEntrance.highlands_to_lance, SVERegion.lances_house, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.lance_to_ladder, SVERegion.lances_ladder, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.lance_ladder_to_highlands, SVERegion.highlands_outside, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.highlands_to_cave, SVERegion.highlands_cavern, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.use_bear_shop, SVERegion.bear_shop), ConnectionData(SVEEntrance.use_purple_junimo, SVERegion.purple_junimo_shop), ConnectionData(SVEEntrance.use_alesia_shop, SVERegion.alesia_shop), ConnectionData(SVEEntrance.use_isaac_shop, SVERegion.isaac_shop), - ConnectionData(SVEEntrance.to_dwarf_prison, SVERegion.dwarf_prison, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.railroad_to_grampleton_station, SVERegion.grampleton_station), ConnectionData(SVEEntrance.grampleton_station_to_grampleton_suburbs, SVERegion.grampleton_suburbs), ConnectionData(SVEEntrance.grampleton_suburbs_to_scarlett_house, SVERegion.scarlett_house, flag=RandomizationFlag.BUILDINGS), - ConnectionData(SVEEntrance.first_slash_guild_to_hallway, SVERegion.first_slash_hallway, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.first_slash_hallway_to_room, SVERegion.first_slash_spare_room, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.sprite_spring_to_cave, SVERegion.sprite_spring_cave, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.fish_shop_to_willy_bedroom, SVERegion.willy_bedroom, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.museum_to_gunther_bedroom, SVERegion.gunther_bedroom, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.highlands_to_pond, SVERegion.highlands_pond), ] +sve_ginger_island_connections = [ + ConnectionData(SVEEntrance.wizard_to_fable_reef, SVERegion.fable_reef, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.fable_reef_to_guild, SVERegion.first_slash_guild, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.highlands_to_lance, SVERegion.lances_house, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.lance_to_ladder, SVERegion.lances_ladder), + ConnectionData(SVEEntrance.lance_ladder_to_highlands, SVERegion.highlands_outside, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.highlands_to_cave, SVERegion.highlands_cavern, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.to_dwarf_prison, SVERegion.dwarf_prison, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.first_slash_guild_to_hallway, SVERegion.first_slash_hallway, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.first_slash_hallway_to_room, SVERegion.first_slash_spare_room, flag=RandomizationFlag.BUILDINGS), +] + alecto_regions = [ - RegionData(Region.witch_hut, [AlectoEntrance.witch_hut_to_witch_attic]), - RegionData(AlectoRegion.witch_attic) + RegionData(Region.witch_hut, (AlectoEntrance.witch_hut_to_witch_attic,)), + RegionData(AlectoRegion.witch_attic), ] alecto_entrances = [ - ConnectionData(AlectoEntrance.witch_hut_to_witch_attic, AlectoRegion.witch_attic, flag=RandomizationFlag.BUILDINGS) + ConnectionData(AlectoEntrance.witch_hut_to_witch_attic, AlectoRegion.witch_attic, flag=RandomizationFlag.BUILDINGS), ] lacey_regions = [ - RegionData(Region.forest, [LaceyEntrance.forest_to_hat_house]), - RegionData(LaceyRegion.hat_house) + RegionData(Region.forest, (LaceyEntrance.forest_to_hat_house,)), + RegionData(LaceyRegion.hat_house), ] lacey_entrances = [ - ConnectionData(LaceyEntrance.forest_to_hat_house, LaceyRegion.hat_house, flag=RandomizationFlag.BUILDINGS) + ConnectionData(LaceyEntrance.forest_to_hat_house, LaceyRegion.hat_house, flag=RandomizationFlag.BUILDINGS), ] boarding_house_regions = [ - RegionData(Region.bus_stop, [BoardingHouseEntrance.bus_stop_to_boarding_house_plateau]), - RegionData(BoardingHouseRegion.boarding_house_plateau, [BoardingHouseEntrance.boarding_house_plateau_to_boarding_house_first, + RegionData(Region.bus_stop, (BoardingHouseEntrance.bus_stop_to_boarding_house_plateau,)), + RegionData(BoardingHouseRegion.boarding_house_plateau, (BoardingHouseEntrance.boarding_house_plateau_to_boarding_house_first, BoardingHouseEntrance.boarding_house_plateau_to_buffalo_ranch, - BoardingHouseEntrance.boarding_house_plateau_to_abandoned_mines_entrance]), - RegionData(BoardingHouseRegion.boarding_house_first, [BoardingHouseEntrance.boarding_house_first_to_boarding_house_second]), + BoardingHouseEntrance.boarding_house_plateau_to_abandoned_mines_entrance)), + RegionData(BoardingHouseRegion.boarding_house_first, (BoardingHouseEntrance.boarding_house_first_to_boarding_house_second,)), RegionData(BoardingHouseRegion.boarding_house_second), RegionData(BoardingHouseRegion.buffalo_ranch), - RegionData(BoardingHouseRegion.abandoned_mines_entrance, [BoardingHouseEntrance.abandoned_mines_entrance_to_abandoned_mines_1a, - BoardingHouseEntrance.abandoned_mines_entrance_to_the_lost_valley]), - RegionData(BoardingHouseRegion.abandoned_mines_1a, [BoardingHouseEntrance.abandoned_mines_1a_to_abandoned_mines_1b]), - RegionData(BoardingHouseRegion.abandoned_mines_1b, [BoardingHouseEntrance.abandoned_mines_1b_to_abandoned_mines_2a]), - RegionData(BoardingHouseRegion.abandoned_mines_2a, [BoardingHouseEntrance.abandoned_mines_2a_to_abandoned_mines_2b]), - RegionData(BoardingHouseRegion.abandoned_mines_2b, [BoardingHouseEntrance.abandoned_mines_2b_to_abandoned_mines_3]), - RegionData(BoardingHouseRegion.abandoned_mines_3, [BoardingHouseEntrance.abandoned_mines_3_to_abandoned_mines_4]), - RegionData(BoardingHouseRegion.abandoned_mines_4, [BoardingHouseEntrance.abandoned_mines_4_to_abandoned_mines_5]), - RegionData(BoardingHouseRegion.abandoned_mines_5, [BoardingHouseEntrance.abandoned_mines_5_to_the_lost_valley]), - RegionData(BoardingHouseRegion.the_lost_valley, [BoardingHouseEntrance.the_lost_valley_to_gregory_tent, + RegionData(BoardingHouseRegion.abandoned_mines_entrance, (BoardingHouseEntrance.abandoned_mines_entrance_to_abandoned_mines_1a, + BoardingHouseEntrance.abandoned_mines_entrance_to_the_lost_valley)), + RegionData(BoardingHouseRegion.abandoned_mines_1a, (BoardingHouseEntrance.abandoned_mines_1a_to_abandoned_mines_1b,)), + RegionData(BoardingHouseRegion.abandoned_mines_1b, (BoardingHouseEntrance.abandoned_mines_1b_to_abandoned_mines_2a,)), + RegionData(BoardingHouseRegion.abandoned_mines_2a, (BoardingHouseEntrance.abandoned_mines_2a_to_abandoned_mines_2b,)), + RegionData(BoardingHouseRegion.abandoned_mines_2b, (BoardingHouseEntrance.abandoned_mines_2b_to_abandoned_mines_3,)), + RegionData(BoardingHouseRegion.abandoned_mines_3, (BoardingHouseEntrance.abandoned_mines_3_to_abandoned_mines_4,)), + RegionData(BoardingHouseRegion.abandoned_mines_4, (BoardingHouseEntrance.abandoned_mines_4_to_abandoned_mines_5,)), + RegionData(BoardingHouseRegion.abandoned_mines_5, (BoardingHouseEntrance.abandoned_mines_5_to_the_lost_valley,)), + RegionData(BoardingHouseRegion.the_lost_valley, (BoardingHouseEntrance.the_lost_valley_to_gregory_tent, BoardingHouseEntrance.lost_valley_to_lost_valley_minecart, - BoardingHouseEntrance.the_lost_valley_to_lost_valley_ruins]), + BoardingHouseEntrance.the_lost_valley_to_lost_valley_ruins)), RegionData(BoardingHouseRegion.gregory_tent), - RegionData(BoardingHouseRegion.lost_valley_ruins, [BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_1, - BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2]), + RegionData(BoardingHouseRegion.lost_valley_ruins, (BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_1, + BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2)), RegionData(BoardingHouseRegion.lost_valley_minecart), RegionData(BoardingHouseRegion.lost_valley_house_1), - RegionData(BoardingHouseRegion.lost_valley_house_2) + RegionData(BoardingHouseRegion.lost_valley_house_2), ] boarding_house_entrances = [ @@ -351,30 +352,29 @@ ConnectionData(BoardingHouseEntrance.lost_valley_to_lost_valley_minecart, BoardingHouseRegion.lost_valley_minecart), ConnectionData(BoardingHouseEntrance.the_lost_valley_to_lost_valley_ruins, BoardingHouseRegion.lost_valley_ruins, flag=RandomizationFlag.BUILDINGS), ConnectionData(BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_1, BoardingHouseRegion.lost_valley_house_1, flag=RandomizationFlag.BUILDINGS), - ConnectionData(BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2, BoardingHouseRegion.lost_valley_house_2, flag=RandomizationFlag.BUILDINGS) + ConnectionData(BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2, BoardingHouseRegion.lost_valley_house_2, flag=RandomizationFlag.BUILDINGS), ] -vanilla_connections_to_remove_by_mod: Dict[str, List[ConnectionData]] = { - ModNames.sve: [ - ConnectionData(Entrance.mountain_to_the_mines, Region.mines, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.mountain_to_adventurer_guild, Region.adventurer_guild, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ] +vanilla_connections_to_remove_by_content_pack: dict[str, tuple[str, ...]] = { + ModNames.sve: ( + Entrance.mountain_to_the_mines, + Entrance.mountain_to_adventurer_guild, + ) } -ModDataList = { - ModNames.deepwoods: ModRegionData(ModNames.deepwoods, deep_woods_regions, deep_woods_entrances), - ModNames.eugene: ModRegionData(ModNames.eugene, eugene_regions, eugene_entrances), - ModNames.jasper: ModRegionData(ModNames.jasper, jasper_regions, jasper_entrances), - ModNames.alec: ModRegionData(ModNames.alec, alec_regions, alec_entrances), - ModNames.yoba: ModRegionData(ModNames.yoba, yoba_regions, yoba_entrances), - ModNames.juna: ModRegionData(ModNames.juna, juna_regions, juna_entrances), - ModNames.magic: ModRegionData(ModNames.magic, magic_regions, magic_entrances), - ModNames.ayeisha: ModRegionData(ModNames.ayeisha, ayeisha_regions, ayeisha_entrances), - ModNames.riley: ModRegionData(ModNames.riley, riley_regions, riley_entrances), - ModNames.sve: ModRegionData(ModNames.sve, stardew_valley_expanded_regions, mandatory_sve_connections), - ModNames.alecto: ModRegionData(ModNames.alecto, alecto_regions, alecto_entrances), - ModNames.lacey: ModRegionData(ModNames.lacey, lacey_regions, lacey_entrances), - ModNames.boarding_house: ModRegionData(ModNames.boarding_house, boarding_house_regions, boarding_house_entrances), +region_data_by_content_pack = { + ModNames.deepwoods: ModRegionsData(ModNames.deepwoods, deep_woods_regions, deep_woods_entrances), + ModNames.eugene: ModRegionsData(ModNames.eugene, eugene_regions, eugene_entrances), + ModNames.jasper: ModRegionsData(ModNames.jasper, jasper_regions, jasper_entrances), + ModNames.alec: ModRegionsData(ModNames.alec, alec_regions, alec_entrances), + ModNames.yoba: ModRegionsData(ModNames.yoba, yoba_regions, yoba_entrances), + ModNames.juna: ModRegionsData(ModNames.juna, juna_regions, juna_entrances), + ModNames.magic: ModRegionsData(ModNames.magic, magic_regions, magic_entrances), + ModNames.ayeisha: ModRegionsData(ModNames.ayeisha, ayeisha_regions, ayeisha_entrances), + ModNames.riley: ModRegionsData(ModNames.riley, riley_regions, riley_entrances), + ModNames.sve: ModRegionsData(ModNames.sve, sve_main_land_regions, sve_main_land_connections), + SVE_GINGER_ISLAND_PACK: ModRegionsData(SVE_GINGER_ISLAND_PACK, sve_ginger_island_regions, sve_ginger_island_connections), + ModNames.alecto: ModRegionsData(ModNames.alecto, alecto_regions, alecto_entrances), + ModNames.lacey: ModRegionsData(ModNames.lacey, lacey_regions, lacey_entrances), + ModNames.boarding_house: ModRegionsData(ModNames.boarding_house, boarding_house_regions, boarding_house_entrances), } diff --git a/worlds/stardew_valley/region_classes.py b/worlds/stardew_valley/region_classes.py deleted file mode 100644 index d3d16e3878bb..000000000000 --- a/worlds/stardew_valley/region_classes.py +++ /dev/null @@ -1,67 +0,0 @@ -from copy import deepcopy -from dataclasses import dataclass, field -from enum import IntFlag -from typing import Optional, List, Set - -connector_keyword = " to " - - -class ModificationFlag(IntFlag): - NOT_MODIFIED = 0 - MODIFIED = 1 - - -class RandomizationFlag(IntFlag): - NOT_RANDOMIZED = 0b0 - PELICAN_TOWN = 0b00011111 - NON_PROGRESSION = 0b00011110 - BUILDINGS = 0b00011100 - EVERYTHING = 0b00011000 - GINGER_ISLAND = 0b00100000 - LEAD_TO_OPEN_AREA = 0b01000000 - MASTERIES = 0b10000000 - - -@dataclass(frozen=True) -class RegionData: - name: str - exits: List[str] = field(default_factory=list) - flag: ModificationFlag = ModificationFlag.NOT_MODIFIED - is_ginger_island: bool = False - - def get_merged_with(self, exits: List[str]): - merged_exits = [] - merged_exits.extend(self.exits) - if exits is not None: - merged_exits.extend(exits) - merged_exits = sorted(set(merged_exits)) - return RegionData(self.name, merged_exits, is_ginger_island=self.is_ginger_island) - - def get_without_exits(self, exits_to_remove: Set[str]): - exits = [exit_ for exit_ in self.exits if exit_ not in exits_to_remove] - return RegionData(self.name, exits, is_ginger_island=self.is_ginger_island) - - def get_clone(self): - return deepcopy(self) - - -@dataclass(frozen=True) -class ConnectionData: - name: str - destination: str - origin: Optional[str] = None - reverse: Optional[str] = None - flag: RandomizationFlag = RandomizationFlag.NOT_RANDOMIZED - - def __post_init__(self): - if connector_keyword in self.name: - origin, destination = self.name.split(connector_keyword) - if self.reverse is None: - super().__setattr__("reverse", f"{destination}{connector_keyword}{origin}") - - -@dataclass(frozen=True) -class ModRegionData: - mod_name: str - regions: List[RegionData] - connections: List[ConnectionData] diff --git a/worlds/stardew_valley/regions.py b/worlds/stardew_valley/regions.py deleted file mode 100644 index 4d06d598d32d..000000000000 --- a/worlds/stardew_valley/regions.py +++ /dev/null @@ -1,775 +0,0 @@ -from random import Random -from typing import Iterable, Dict, Protocol, List, Tuple, Set - -from BaseClasses import Region, Entrance -from .content import content_packs, StardewContent -from .mods.mod_regions import ModDataList, vanilla_connections_to_remove_by_mod -from .options import EntranceRandomization, ExcludeGingerIsland, StardewValleyOptions -from .region_classes import RegionData, ConnectionData, RandomizationFlag, ModificationFlag -from .strings.entrance_names import Entrance, LogicEntrance -from .strings.region_names import Region as RegionName, LogicRegion - - -class RegionFactory(Protocol): - def __call__(self, name: str, regions: Iterable[str]) -> Region: - raise NotImplementedError - - -vanilla_regions = [ - RegionData(RegionName.menu, [Entrance.to_stardew_valley]), - RegionData(RegionName.stardew_valley, [Entrance.to_farmhouse]), - RegionData(RegionName.farm_house, - [Entrance.farmhouse_to_farm, Entrance.downstairs_to_cellar, LogicEntrance.farmhouse_cooking, LogicEntrance.watch_queen_of_sauce]), - RegionData(RegionName.cellar), - RegionData(RegionName.farm, - [Entrance.farm_to_backwoods, Entrance.farm_to_bus_stop, Entrance.farm_to_forest, Entrance.farm_to_farmcave, Entrance.enter_greenhouse, - Entrance.enter_coop, Entrance.enter_barn, Entrance.enter_shed, Entrance.enter_slime_hutch, LogicEntrance.grow_spring_crops, - LogicEntrance.grow_summer_crops, LogicEntrance.grow_fall_crops, LogicEntrance.grow_winter_crops, LogicEntrance.shipping, - LogicEntrance.fishing, ]), - RegionData(RegionName.backwoods, [Entrance.backwoods_to_mountain]), - RegionData(RegionName.bus_stop, - [Entrance.bus_stop_to_town, Entrance.take_bus_to_desert, Entrance.bus_stop_to_tunnel_entrance]), - RegionData(RegionName.forest, - [Entrance.forest_to_town, Entrance.enter_secret_woods, Entrance.forest_to_wizard_tower, Entrance.forest_to_marnie_ranch, - Entrance.forest_to_leah_cottage, Entrance.forest_to_sewer, Entrance.forest_to_mastery_cave, LogicEntrance.buy_from_traveling_merchant, - LogicEntrance.complete_raccoon_requests, LogicEntrance.fish_in_waterfall, LogicEntrance.attend_flower_dance, LogicEntrance.attend_trout_derby, - LogicEntrance.attend_festival_of_ice]), - RegionData(LogicRegion.forest_waterfall), - RegionData(RegionName.farm_cave), - RegionData(RegionName.greenhouse, - [LogicEntrance.grow_spring_crops_in_greenhouse, LogicEntrance.grow_summer_crops_in_greenhouse, LogicEntrance.grow_fall_crops_in_greenhouse, - LogicEntrance.grow_winter_crops_in_greenhouse, LogicEntrance.grow_indoor_crops_in_greenhouse]), - RegionData(RegionName.mountain, - [Entrance.mountain_to_railroad, Entrance.mountain_to_tent, Entrance.mountain_to_carpenter_shop, - Entrance.mountain_to_the_mines, Entrance.enter_quarry, Entrance.mountain_to_adventurer_guild, - Entrance.mountain_to_town, Entrance.mountain_to_maru_room, - Entrance.mountain_to_leo_treehouse]), - RegionData(RegionName.leo_treehouse, is_ginger_island=True), - RegionData(RegionName.maru_room), - RegionData(RegionName.tunnel_entrance, [Entrance.tunnel_entrance_to_bus_tunnel]), - RegionData(RegionName.bus_tunnel), - RegionData(RegionName.town, - [Entrance.town_to_community_center, Entrance.town_to_beach, Entrance.town_to_hospital, Entrance.town_to_pierre_general_store, - Entrance.town_to_saloon, Entrance.town_to_alex_house, Entrance.town_to_trailer, Entrance.town_to_mayor_manor, Entrance.town_to_sam_house, - Entrance.town_to_haley_house, Entrance.town_to_sewer, Entrance.town_to_clint_blacksmith, Entrance.town_to_museum, Entrance.town_to_jojamart, - Entrance.purchase_movie_ticket, LogicEntrance.buy_experience_books, LogicEntrance.attend_egg_festival, LogicEntrance.attend_fair, - LogicEntrance.attend_spirit_eve, LogicEntrance.attend_winter_star]), - RegionData(RegionName.beach, - [Entrance.beach_to_willy_fish_shop, Entrance.enter_elliott_house, Entrance.enter_tide_pools, LogicEntrance.attend_luau, - LogicEntrance.attend_moonlight_jellies, LogicEntrance.attend_night_market, LogicEntrance.attend_squidfest]), - RegionData(RegionName.railroad, [Entrance.enter_bathhouse_entrance, Entrance.enter_witch_warp_cave]), - RegionData(RegionName.ranch), - RegionData(RegionName.leah_house), - RegionData(RegionName.mastery_cave), - RegionData(RegionName.sewer, [Entrance.enter_mutant_bug_lair]), - RegionData(RegionName.mutant_bug_lair), - RegionData(RegionName.wizard_tower, [Entrance.enter_wizard_basement, Entrance.use_desert_obelisk, Entrance.use_island_obelisk]), - RegionData(RegionName.wizard_basement), - RegionData(RegionName.tent), - RegionData(RegionName.carpenter, [Entrance.enter_sebastian_room]), - RegionData(RegionName.sebastian_room), - RegionData(RegionName.adventurer_guild, [Entrance.adventurer_guild_to_bedroom]), - RegionData(RegionName.adventurer_guild_bedroom), - RegionData(RegionName.community_center, - [Entrance.access_crafts_room, Entrance.access_pantry, Entrance.access_fish_tank, - Entrance.access_boiler_room, Entrance.access_bulletin_board, Entrance.access_vault]), - RegionData(RegionName.crafts_room), - RegionData(RegionName.pantry), - RegionData(RegionName.fish_tank), - RegionData(RegionName.boiler_room), - RegionData(RegionName.bulletin_board), - RegionData(RegionName.vault), - RegionData(RegionName.hospital, [Entrance.enter_harvey_room]), - RegionData(RegionName.harvey_room), - RegionData(RegionName.pierre_store, [Entrance.enter_sunroom]), - RegionData(RegionName.sunroom), - RegionData(RegionName.saloon, [Entrance.play_journey_of_the_prairie_king, Entrance.play_junimo_kart]), - RegionData(RegionName.jotpk_world_1, [Entrance.reach_jotpk_world_2]), - RegionData(RegionName.jotpk_world_2, [Entrance.reach_jotpk_world_3]), - RegionData(RegionName.jotpk_world_3), - RegionData(RegionName.junimo_kart_1, [Entrance.reach_junimo_kart_2]), - RegionData(RegionName.junimo_kart_2, [Entrance.reach_junimo_kart_3]), - RegionData(RegionName.junimo_kart_3, [Entrance.reach_junimo_kart_4]), - RegionData(RegionName.junimo_kart_4), - RegionData(RegionName.alex_house), - RegionData(RegionName.trailer), - RegionData(RegionName.mayor_house), - RegionData(RegionName.sam_house), - RegionData(RegionName.haley_house), - RegionData(RegionName.blacksmith, [LogicEntrance.blacksmith_copper]), - RegionData(RegionName.museum), - RegionData(RegionName.jojamart, [Entrance.enter_abandoned_jojamart]), - RegionData(RegionName.abandoned_jojamart, [Entrance.enter_movie_theater]), - RegionData(RegionName.movie_ticket_stand), - RegionData(RegionName.movie_theater), - RegionData(RegionName.fish_shop, [Entrance.fish_shop_to_boat_tunnel]), - RegionData(RegionName.boat_tunnel, [Entrance.boat_to_ginger_island], is_ginger_island=True), - RegionData(RegionName.elliott_house), - RegionData(RegionName.tide_pools), - RegionData(RegionName.bathhouse_entrance, [Entrance.enter_locker_room]), - RegionData(RegionName.locker_room, [Entrance.enter_public_bath]), - RegionData(RegionName.public_bath), - RegionData(RegionName.witch_warp_cave, [Entrance.enter_witch_swamp]), - RegionData(RegionName.witch_swamp, [Entrance.enter_witch_hut]), - RegionData(RegionName.witch_hut, [Entrance.witch_warp_to_wizard_basement]), - RegionData(RegionName.quarry, [Entrance.enter_quarry_mine_entrance]), - RegionData(RegionName.quarry_mine_entrance, [Entrance.enter_quarry_mine]), - RegionData(RegionName.quarry_mine), - RegionData(RegionName.secret_woods), - RegionData(RegionName.desert, [Entrance.enter_skull_cavern_entrance, Entrance.enter_oasis, LogicEntrance.attend_desert_festival]), - RegionData(RegionName.oasis, [Entrance.enter_casino]), - RegionData(RegionName.casino), - RegionData(RegionName.skull_cavern_entrance, [Entrance.enter_skull_cavern]), - RegionData(RegionName.skull_cavern, [Entrance.mine_to_skull_cavern_floor_25]), - RegionData(RegionName.skull_cavern_25, [Entrance.mine_to_skull_cavern_floor_50]), - RegionData(RegionName.skull_cavern_50, [Entrance.mine_to_skull_cavern_floor_75]), - RegionData(RegionName.skull_cavern_75, [Entrance.mine_to_skull_cavern_floor_100]), - RegionData(RegionName.skull_cavern_100, [Entrance.mine_to_skull_cavern_floor_125]), - RegionData(RegionName.skull_cavern_125, [Entrance.mine_to_skull_cavern_floor_150]), - RegionData(RegionName.skull_cavern_150, [Entrance.mine_to_skull_cavern_floor_175]), - RegionData(RegionName.skull_cavern_175, [Entrance.mine_to_skull_cavern_floor_200]), - RegionData(RegionName.skull_cavern_200, [Entrance.enter_dangerous_skull_cavern]), - RegionData(RegionName.dangerous_skull_cavern, is_ginger_island=True), - RegionData(RegionName.island_south, - [Entrance.island_south_to_west, Entrance.island_south_to_north, Entrance.island_south_to_east, Entrance.island_south_to_southeast, - Entrance.use_island_resort, Entrance.parrot_express_docks_to_volcano, Entrance.parrot_express_docks_to_dig_site, - Entrance.parrot_express_docks_to_jungle], - is_ginger_island=True), - RegionData(RegionName.island_resort, is_ginger_island=True), - RegionData(RegionName.island_west, - [Entrance.island_west_to_islandfarmhouse, Entrance.island_west_to_gourmand_cave, Entrance.island_west_to_crystals_cave, - Entrance.island_west_to_shipwreck, Entrance.island_west_to_qi_walnut_room, Entrance.use_farm_obelisk, Entrance.parrot_express_jungle_to_docks, - Entrance.parrot_express_jungle_to_dig_site, Entrance.parrot_express_jungle_to_volcano, LogicEntrance.grow_spring_crops_on_island, - LogicEntrance.grow_summer_crops_on_island, LogicEntrance.grow_fall_crops_on_island, LogicEntrance.grow_winter_crops_on_island, - LogicEntrance.grow_indoor_crops_on_island], - is_ginger_island=True), - RegionData(RegionName.island_east, [Entrance.island_east_to_leo_hut, Entrance.island_east_to_island_shrine], is_ginger_island=True), - RegionData(RegionName.island_shrine, is_ginger_island=True), - RegionData(RegionName.island_south_east, [Entrance.island_southeast_to_pirate_cove], is_ginger_island=True), - RegionData(RegionName.island_north, - [Entrance.talk_to_island_trader, Entrance.island_north_to_field_office, Entrance.island_north_to_dig_site, Entrance.island_north_to_volcano, - Entrance.parrot_express_volcano_to_dig_site, Entrance.parrot_express_volcano_to_jungle, Entrance.parrot_express_volcano_to_docks], - is_ginger_island=True), - RegionData(RegionName.volcano, [Entrance.climb_to_volcano_5, Entrance.volcano_to_secret_beach], is_ginger_island=True), - RegionData(RegionName.volcano_secret_beach, is_ginger_island=True), - RegionData(RegionName.volcano_floor_5, [Entrance.talk_to_volcano_dwarf, Entrance.climb_to_volcano_10], is_ginger_island=True), - RegionData(RegionName.volcano_dwarf_shop, is_ginger_island=True), - RegionData(RegionName.volcano_floor_10, is_ginger_island=True), - RegionData(RegionName.island_trader, is_ginger_island=True), - RegionData(RegionName.island_farmhouse, [LogicEntrance.island_cooking], is_ginger_island=True), - RegionData(RegionName.gourmand_frog_cave, is_ginger_island=True), - RegionData(RegionName.colored_crystals_cave, is_ginger_island=True), - RegionData(RegionName.shipwreck, is_ginger_island=True), - RegionData(RegionName.qi_walnut_room, is_ginger_island=True), - RegionData(RegionName.leo_hut, is_ginger_island=True), - RegionData(RegionName.pirate_cove, is_ginger_island=True), - RegionData(RegionName.field_office, is_ginger_island=True), - RegionData(RegionName.dig_site, - [Entrance.dig_site_to_professor_snail_cave, Entrance.parrot_express_dig_site_to_volcano, - Entrance.parrot_express_dig_site_to_docks, Entrance.parrot_express_dig_site_to_jungle], - is_ginger_island=True), - RegionData(RegionName.professor_snail_cave, is_ginger_island=True), - RegionData(RegionName.coop), - RegionData(RegionName.barn), - RegionData(RegionName.shed), - RegionData(RegionName.slime_hutch), - - RegionData(RegionName.mines, [LogicEntrance.talk_to_mines_dwarf, - Entrance.dig_to_mines_floor_5]), - RegionData(RegionName.mines_floor_5, [Entrance.dig_to_mines_floor_10]), - RegionData(RegionName.mines_floor_10, [Entrance.dig_to_mines_floor_15]), - RegionData(RegionName.mines_floor_15, [Entrance.dig_to_mines_floor_20]), - RegionData(RegionName.mines_floor_20, [Entrance.dig_to_mines_floor_25]), - RegionData(RegionName.mines_floor_25, [Entrance.dig_to_mines_floor_30]), - RegionData(RegionName.mines_floor_30, [Entrance.dig_to_mines_floor_35]), - RegionData(RegionName.mines_floor_35, [Entrance.dig_to_mines_floor_40]), - RegionData(RegionName.mines_floor_40, [Entrance.dig_to_mines_floor_45]), - RegionData(RegionName.mines_floor_45, [Entrance.dig_to_mines_floor_50]), - RegionData(RegionName.mines_floor_50, [Entrance.dig_to_mines_floor_55]), - RegionData(RegionName.mines_floor_55, [Entrance.dig_to_mines_floor_60]), - RegionData(RegionName.mines_floor_60, [Entrance.dig_to_mines_floor_65]), - RegionData(RegionName.mines_floor_65, [Entrance.dig_to_mines_floor_70]), - RegionData(RegionName.mines_floor_70, [Entrance.dig_to_mines_floor_75]), - RegionData(RegionName.mines_floor_75, [Entrance.dig_to_mines_floor_80]), - RegionData(RegionName.mines_floor_80, [Entrance.dig_to_mines_floor_85]), - RegionData(RegionName.mines_floor_85, [Entrance.dig_to_mines_floor_90]), - RegionData(RegionName.mines_floor_90, [Entrance.dig_to_mines_floor_95]), - RegionData(RegionName.mines_floor_95, [Entrance.dig_to_mines_floor_100]), - RegionData(RegionName.mines_floor_100, [Entrance.dig_to_mines_floor_105]), - RegionData(RegionName.mines_floor_105, [Entrance.dig_to_mines_floor_110]), - RegionData(RegionName.mines_floor_110, [Entrance.dig_to_mines_floor_115]), - RegionData(RegionName.mines_floor_115, [Entrance.dig_to_mines_floor_120]), - RegionData(RegionName.mines_floor_120, [Entrance.dig_to_dangerous_mines_20, Entrance.dig_to_dangerous_mines_60, Entrance.dig_to_dangerous_mines_100]), - RegionData(RegionName.dangerous_mines_20, is_ginger_island=True), - RegionData(RegionName.dangerous_mines_60, is_ginger_island=True), - RegionData(RegionName.dangerous_mines_100, is_ginger_island=True), - - RegionData(LogicRegion.mines_dwarf_shop), - RegionData(LogicRegion.blacksmith_copper, [LogicEntrance.blacksmith_iron]), - RegionData(LogicRegion.blacksmith_iron, [LogicEntrance.blacksmith_gold]), - RegionData(LogicRegion.blacksmith_gold, [LogicEntrance.blacksmith_iridium]), - RegionData(LogicRegion.blacksmith_iridium), - RegionData(LogicRegion.kitchen), - RegionData(LogicRegion.queen_of_sauce), - RegionData(LogicRegion.fishing), - - RegionData(LogicRegion.spring_farming), - RegionData(LogicRegion.summer_farming, [LogicEntrance.grow_summer_fall_crops_in_summer]), - RegionData(LogicRegion.fall_farming, [LogicEntrance.grow_summer_fall_crops_in_fall]), - RegionData(LogicRegion.winter_farming), - RegionData(LogicRegion.summer_or_fall_farming), - RegionData(LogicRegion.indoor_farming), - - RegionData(LogicRegion.shipping), - RegionData(LogicRegion.traveling_cart, [LogicEntrance.buy_from_traveling_merchant_sunday, - LogicEntrance.buy_from_traveling_merchant_monday, - LogicEntrance.buy_from_traveling_merchant_tuesday, - LogicEntrance.buy_from_traveling_merchant_wednesday, - LogicEntrance.buy_from_traveling_merchant_thursday, - LogicEntrance.buy_from_traveling_merchant_friday, - LogicEntrance.buy_from_traveling_merchant_saturday]), - RegionData(LogicRegion.traveling_cart_sunday), - RegionData(LogicRegion.traveling_cart_monday), - RegionData(LogicRegion.traveling_cart_tuesday), - RegionData(LogicRegion.traveling_cart_wednesday), - RegionData(LogicRegion.traveling_cart_thursday), - RegionData(LogicRegion.traveling_cart_friday), - RegionData(LogicRegion.traveling_cart_saturday), - RegionData(LogicRegion.raccoon_daddy, [LogicEntrance.buy_from_raccoon]), - RegionData(LogicRegion.raccoon_shop), - - RegionData(LogicRegion.egg_festival), - RegionData(LogicRegion.desert_festival), - RegionData(LogicRegion.flower_dance), - RegionData(LogicRegion.luau), - RegionData(LogicRegion.trout_derby), - RegionData(LogicRegion.moonlight_jellies), - RegionData(LogicRegion.fair), - RegionData(LogicRegion.spirit_eve), - RegionData(LogicRegion.festival_of_ice), - RegionData(LogicRegion.night_market), - RegionData(LogicRegion.winter_star), - RegionData(LogicRegion.squidfest), - RegionData(LogicRegion.bookseller_1, [LogicEntrance.buy_year1_books]), - RegionData(LogicRegion.bookseller_2, [LogicEntrance.buy_year3_books]), - RegionData(LogicRegion.bookseller_3), -] - -# Exists and where they lead -vanilla_connections = [ - ConnectionData(Entrance.to_stardew_valley, RegionName.stardew_valley), - ConnectionData(Entrance.to_farmhouse, RegionName.farm_house), - ConnectionData(Entrance.farmhouse_to_farm, RegionName.farm), - ConnectionData(Entrance.downstairs_to_cellar, RegionName.cellar), - ConnectionData(Entrance.farm_to_backwoods, RegionName.backwoods), - ConnectionData(Entrance.farm_to_bus_stop, RegionName.bus_stop), - ConnectionData(Entrance.farm_to_forest, RegionName.forest), - ConnectionData(Entrance.farm_to_farmcave, RegionName.farm_cave, flag=RandomizationFlag.NON_PROGRESSION), - ConnectionData(Entrance.enter_greenhouse, RegionName.greenhouse), - ConnectionData(Entrance.enter_coop, RegionName.coop), - ConnectionData(Entrance.enter_barn, RegionName.barn), - ConnectionData(Entrance.enter_shed, RegionName.shed), - ConnectionData(Entrance.enter_slime_hutch, RegionName.slime_hutch), - ConnectionData(Entrance.use_desert_obelisk, RegionName.desert), - ConnectionData(Entrance.use_island_obelisk, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.use_farm_obelisk, RegionName.farm), - ConnectionData(Entrance.backwoods_to_mountain, RegionName.mountain), - ConnectionData(Entrance.bus_stop_to_town, RegionName.town), - ConnectionData(Entrance.bus_stop_to_tunnel_entrance, RegionName.tunnel_entrance), - ConnectionData(Entrance.tunnel_entrance_to_bus_tunnel, RegionName.bus_tunnel, flag=RandomizationFlag.NON_PROGRESSION), - ConnectionData(Entrance.take_bus_to_desert, RegionName.desert), - ConnectionData(Entrance.forest_to_town, RegionName.town), - ConnectionData(Entrance.forest_to_wizard_tower, RegionName.wizard_tower, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.forest_to_marnie_ranch, RegionName.ranch, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.forest_to_leah_cottage, RegionName.leah_house, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_secret_woods, RegionName.secret_woods), - ConnectionData(Entrance.forest_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.forest_to_mastery_cave, RegionName.mastery_cave, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.MASTERIES), - ConnectionData(Entrance.town_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_mutant_bug_lair, RegionName.mutant_bug_lair, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.mountain_to_railroad, RegionName.railroad), - ConnectionData(Entrance.mountain_to_tent, RegionName.tent, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.mountain_to_leo_treehouse, RegionName.leo_treehouse, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.mountain_to_carpenter_shop, RegionName.carpenter, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.mountain_to_maru_room, RegionName.maru_room, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_sebastian_room, RegionName.sebastian_room, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.mountain_to_adventurer_guild, RegionName.adventurer_guild, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.adventurer_guild_to_bedroom, RegionName.adventurer_guild_bedroom), - ConnectionData(Entrance.enter_quarry, RegionName.quarry), - ConnectionData(Entrance.enter_quarry_mine_entrance, RegionName.quarry_mine_entrance, - flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_quarry_mine, RegionName.quarry_mine), - ConnectionData(Entrance.mountain_to_town, RegionName.town), - ConnectionData(Entrance.town_to_community_center, RegionName.community_center, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.access_crafts_room, RegionName.crafts_room), - ConnectionData(Entrance.access_pantry, RegionName.pantry), - ConnectionData(Entrance.access_fish_tank, RegionName.fish_tank), - ConnectionData(Entrance.access_boiler_room, RegionName.boiler_room), - ConnectionData(Entrance.access_bulletin_board, RegionName.bulletin_board), - ConnectionData(Entrance.access_vault, RegionName.vault), - ConnectionData(Entrance.town_to_hospital, RegionName.hospital, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_harvey_room, RegionName.harvey_room, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.town_to_pierre_general_store, RegionName.pierre_store, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_sunroom, RegionName.sunroom, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.town_to_clint_blacksmith, RegionName.blacksmith, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_saloon, RegionName.saloon, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.play_journey_of_the_prairie_king, RegionName.jotpk_world_1), - ConnectionData(Entrance.reach_jotpk_world_2, RegionName.jotpk_world_2), - ConnectionData(Entrance.reach_jotpk_world_3, RegionName.jotpk_world_3), - ConnectionData(Entrance.play_junimo_kart, RegionName.junimo_kart_1), - ConnectionData(Entrance.reach_junimo_kart_2, RegionName.junimo_kart_2), - ConnectionData(Entrance.reach_junimo_kart_3, RegionName.junimo_kart_3), - ConnectionData(Entrance.reach_junimo_kart_4, RegionName.junimo_kart_4), - ConnectionData(Entrance.town_to_sam_house, RegionName.sam_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_haley_house, RegionName.haley_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_mayor_manor, RegionName.mayor_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_alex_house, RegionName.alex_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_trailer, RegionName.trailer, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_museum, RegionName.museum, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_jojamart, RegionName.jojamart, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.purchase_movie_ticket, RegionName.movie_ticket_stand), - ConnectionData(Entrance.enter_abandoned_jojamart, RegionName.abandoned_jojamart), - ConnectionData(Entrance.enter_movie_theater, RegionName.movie_theater), - ConnectionData(Entrance.town_to_beach, RegionName.beach), - ConnectionData(Entrance.enter_elliott_house, RegionName.elliott_house, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.beach_to_willy_fish_shop, RegionName.fish_shop, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.fish_shop_to_boat_tunnel, RegionName.boat_tunnel, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.boat_to_ginger_island, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.enter_tide_pools, RegionName.tide_pools), - ConnectionData(Entrance.mountain_to_the_mines, RegionName.mines, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.dig_to_mines_floor_5, RegionName.mines_floor_5), - ConnectionData(Entrance.dig_to_mines_floor_10, RegionName.mines_floor_10), - ConnectionData(Entrance.dig_to_mines_floor_15, RegionName.mines_floor_15), - ConnectionData(Entrance.dig_to_mines_floor_20, RegionName.mines_floor_20), - ConnectionData(Entrance.dig_to_mines_floor_25, RegionName.mines_floor_25), - ConnectionData(Entrance.dig_to_mines_floor_30, RegionName.mines_floor_30), - ConnectionData(Entrance.dig_to_mines_floor_35, RegionName.mines_floor_35), - ConnectionData(Entrance.dig_to_mines_floor_40, RegionName.mines_floor_40), - ConnectionData(Entrance.dig_to_mines_floor_45, RegionName.mines_floor_45), - ConnectionData(Entrance.dig_to_mines_floor_50, RegionName.mines_floor_50), - ConnectionData(Entrance.dig_to_mines_floor_55, RegionName.mines_floor_55), - ConnectionData(Entrance.dig_to_mines_floor_60, RegionName.mines_floor_60), - ConnectionData(Entrance.dig_to_mines_floor_65, RegionName.mines_floor_65), - ConnectionData(Entrance.dig_to_mines_floor_70, RegionName.mines_floor_70), - ConnectionData(Entrance.dig_to_mines_floor_75, RegionName.mines_floor_75), - ConnectionData(Entrance.dig_to_mines_floor_80, RegionName.mines_floor_80), - ConnectionData(Entrance.dig_to_mines_floor_85, RegionName.mines_floor_85), - ConnectionData(Entrance.dig_to_mines_floor_90, RegionName.mines_floor_90), - ConnectionData(Entrance.dig_to_mines_floor_95, RegionName.mines_floor_95), - ConnectionData(Entrance.dig_to_mines_floor_100, RegionName.mines_floor_100), - ConnectionData(Entrance.dig_to_mines_floor_105, RegionName.mines_floor_105), - ConnectionData(Entrance.dig_to_mines_floor_110, RegionName.mines_floor_110), - ConnectionData(Entrance.dig_to_mines_floor_115, RegionName.mines_floor_115), - ConnectionData(Entrance.dig_to_mines_floor_120, RegionName.mines_floor_120), - ConnectionData(Entrance.dig_to_dangerous_mines_20, RegionName.dangerous_mines_20, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.dig_to_dangerous_mines_60, RegionName.dangerous_mines_60, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.dig_to_dangerous_mines_100, RegionName.dangerous_mines_100, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.enter_skull_cavern_entrance, RegionName.skull_cavern_entrance, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_oasis, RegionName.oasis, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_casino, RegionName.casino, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_skull_cavern, RegionName.skull_cavern), - ConnectionData(Entrance.mine_to_skull_cavern_floor_25, RegionName.skull_cavern_25), - ConnectionData(Entrance.mine_to_skull_cavern_floor_50, RegionName.skull_cavern_50), - ConnectionData(Entrance.mine_to_skull_cavern_floor_75, RegionName.skull_cavern_75), - ConnectionData(Entrance.mine_to_skull_cavern_floor_100, RegionName.skull_cavern_100), - ConnectionData(Entrance.mine_to_skull_cavern_floor_125, RegionName.skull_cavern_125), - ConnectionData(Entrance.mine_to_skull_cavern_floor_150, RegionName.skull_cavern_150), - ConnectionData(Entrance.mine_to_skull_cavern_floor_175, RegionName.skull_cavern_175), - ConnectionData(Entrance.mine_to_skull_cavern_floor_200, RegionName.skull_cavern_200), - ConnectionData(Entrance.enter_dangerous_skull_cavern, RegionName.dangerous_skull_cavern, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.enter_witch_warp_cave, RegionName.witch_warp_cave, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_witch_swamp, RegionName.witch_swamp, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_witch_hut, RegionName.witch_hut, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.witch_warp_to_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_bathhouse_entrance, RegionName.bathhouse_entrance, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_locker_room, RegionName.locker_room, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_public_bath, RegionName.public_bath, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.island_south_to_west, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_south_to_north, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_south_to_east, RegionName.island_east, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_south_to_southeast, RegionName.island_south_east, - flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.use_island_resort, RegionName.island_resort, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_islandfarmhouse, RegionName.island_farmhouse, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_gourmand_cave, RegionName.gourmand_frog_cave, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_crystals_cave, RegionName.colored_crystals_cave, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_shipwreck, RegionName.shipwreck, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_qi_walnut_room, RegionName.qi_walnut_room, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_east_to_leo_hut, RegionName.leo_hut, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_east_to_island_shrine, RegionName.island_shrine, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_southeast_to_pirate_cove, RegionName.pirate_cove, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_north_to_field_office, RegionName.field_office, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_north_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.dig_site_to_professor_snail_cave, RegionName.professor_snail_cave, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_north_to_volcano, RegionName.volcano, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.volcano_to_secret_beach, RegionName.volcano_secret_beach, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.talk_to_island_trader, RegionName.island_trader, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.climb_to_volcano_5, RegionName.volcano_floor_5, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.talk_to_volcano_dwarf, RegionName.volcano_dwarf_shop, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.climb_to_volcano_10, RegionName.volcano_floor_10, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_jungle_to_docks, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_dig_site_to_docks, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_volcano_to_docks, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_volcano_to_jungle, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_docks_to_jungle, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_dig_site_to_jungle, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_docks_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_volcano_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_jungle_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_dig_site_to_volcano, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_docks_to_volcano, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_jungle_to_volcano, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - - ConnectionData(LogicEntrance.talk_to_mines_dwarf, LogicRegion.mines_dwarf_shop), - - ConnectionData(LogicEntrance.buy_from_traveling_merchant, LogicRegion.traveling_cart), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_sunday, LogicRegion.traveling_cart_sunday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_monday, LogicRegion.traveling_cart_monday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_tuesday, LogicRegion.traveling_cart_tuesday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_wednesday, LogicRegion.traveling_cart_wednesday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_thursday, LogicRegion.traveling_cart_thursday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_friday, LogicRegion.traveling_cart_friday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_saturday, LogicRegion.traveling_cart_saturday), - ConnectionData(LogicEntrance.complete_raccoon_requests, LogicRegion.raccoon_daddy), - ConnectionData(LogicEntrance.fish_in_waterfall, LogicRegion.forest_waterfall), - ConnectionData(LogicEntrance.buy_from_raccoon, LogicRegion.raccoon_shop), - ConnectionData(LogicEntrance.farmhouse_cooking, LogicRegion.kitchen), - ConnectionData(LogicEntrance.watch_queen_of_sauce, LogicRegion.queen_of_sauce), - - ConnectionData(LogicEntrance.grow_spring_crops, LogicRegion.spring_farming), - ConnectionData(LogicEntrance.grow_summer_crops, LogicRegion.summer_farming), - ConnectionData(LogicEntrance.grow_fall_crops, LogicRegion.fall_farming), - ConnectionData(LogicEntrance.grow_winter_crops, LogicRegion.winter_farming), - ConnectionData(LogicEntrance.grow_spring_crops_in_greenhouse, LogicRegion.spring_farming), - ConnectionData(LogicEntrance.grow_summer_crops_in_greenhouse, LogicRegion.summer_farming), - ConnectionData(LogicEntrance.grow_fall_crops_in_greenhouse, LogicRegion.fall_farming), - ConnectionData(LogicEntrance.grow_winter_crops_in_greenhouse, LogicRegion.winter_farming), - ConnectionData(LogicEntrance.grow_indoor_crops_in_greenhouse, LogicRegion.indoor_farming), - ConnectionData(LogicEntrance.grow_spring_crops_on_island, LogicRegion.spring_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_summer_crops_on_island, LogicRegion.summer_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_fall_crops_on_island, LogicRegion.fall_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_winter_crops_on_island, LogicRegion.winter_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_indoor_crops_on_island, LogicRegion.indoor_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_summer_fall_crops_in_summer, LogicRegion.summer_or_fall_farming), - ConnectionData(LogicEntrance.grow_summer_fall_crops_in_fall, LogicRegion.summer_or_fall_farming), - - ConnectionData(LogicEntrance.shipping, LogicRegion.shipping), - ConnectionData(LogicEntrance.blacksmith_copper, LogicRegion.blacksmith_copper), - ConnectionData(LogicEntrance.blacksmith_iron, LogicRegion.blacksmith_iron), - ConnectionData(LogicEntrance.blacksmith_gold, LogicRegion.blacksmith_gold), - ConnectionData(LogicEntrance.blacksmith_iridium, LogicRegion.blacksmith_iridium), - ConnectionData(LogicEntrance.fishing, LogicRegion.fishing), - ConnectionData(LogicEntrance.island_cooking, LogicRegion.kitchen), - ConnectionData(LogicEntrance.attend_egg_festival, LogicRegion.egg_festival), - ConnectionData(LogicEntrance.attend_desert_festival, LogicRegion.desert_festival), - ConnectionData(LogicEntrance.attend_flower_dance, LogicRegion.flower_dance), - ConnectionData(LogicEntrance.attend_luau, LogicRegion.luau), - ConnectionData(LogicEntrance.attend_trout_derby, LogicRegion.trout_derby), - ConnectionData(LogicEntrance.attend_moonlight_jellies, LogicRegion.moonlight_jellies), - ConnectionData(LogicEntrance.attend_fair, LogicRegion.fair), - ConnectionData(LogicEntrance.attend_spirit_eve, LogicRegion.spirit_eve), - ConnectionData(LogicEntrance.attend_festival_of_ice, LogicRegion.festival_of_ice), - ConnectionData(LogicEntrance.attend_night_market, LogicRegion.night_market), - ConnectionData(LogicEntrance.attend_winter_star, LogicRegion.winter_star), - ConnectionData(LogicEntrance.attend_squidfest, LogicRegion.squidfest), - ConnectionData(LogicEntrance.buy_experience_books, LogicRegion.bookseller_1), - ConnectionData(LogicEntrance.buy_year1_books, LogicRegion.bookseller_2), - ConnectionData(LogicEntrance.buy_year3_books, LogicRegion.bookseller_3), -] - - -def create_final_regions(world_options) -> List[RegionData]: - final_regions = [] - final_regions.extend(vanilla_regions) - if world_options.mods is None: - return final_regions - for mod in sorted(world_options.mods.value): - if mod not in ModDataList: - continue - for mod_region in ModDataList[mod].regions: - existing_region = next( - (region for region in final_regions if region.name == mod_region.name), None) - if existing_region: - final_regions.remove(existing_region) - if ModificationFlag.MODIFIED in mod_region.flag: - mod_region = modify_vanilla_regions(existing_region, mod_region) - final_regions.append(existing_region.get_merged_with(mod_region.exits)) - continue - final_regions.append(mod_region.get_clone()) - - return final_regions - - -def create_final_connections_and_regions(world_options) -> Tuple[Dict[str, ConnectionData], Dict[str, RegionData]]: - regions_data: Dict[str, RegionData] = {region.name: region for region in create_final_regions(world_options)} - connections = {connection.name: connection for connection in vanilla_connections} - connections = modify_connections_for_mods(connections, sorted(world_options.mods.value)) - include_island = world_options.exclude_ginger_island == ExcludeGingerIsland.option_false - return remove_ginger_island_regions_and_connections(regions_data, connections, include_island) - - -def remove_ginger_island_regions_and_connections(regions_by_name: Dict[str, RegionData], connections: Dict[str, ConnectionData], include_island: bool): - if include_island: - return connections, regions_by_name - - removed_connections = set() - - for connection_name in tuple(connections): - connection = connections[connection_name] - if connection.flag & RandomizationFlag.GINGER_ISLAND: - connections.pop(connection_name) - removed_connections.add(connection_name) - - for region_name in tuple(regions_by_name): - region = regions_by_name[region_name] - if region.is_ginger_island: - regions_by_name.pop(region_name) - else: - regions_by_name[region_name] = region.get_without_exits(removed_connections) - - return connections, regions_by_name - - -def modify_connections_for_mods(connections: Dict[str, ConnectionData], mods: Iterable) -> Dict[str, ConnectionData]: - for mod in mods: - if mod not in ModDataList: - continue - if mod in vanilla_connections_to_remove_by_mod: - for connection_data in vanilla_connections_to_remove_by_mod[mod]: - connections.pop(connection_data.name) - connections.update({connection.name: connection for connection in ModDataList[mod].connections}) - return connections - - -def modify_vanilla_regions(existing_region: RegionData, modified_region: RegionData) -> RegionData: - updated_region = existing_region - region_exits = updated_region.exits - modified_exits = modified_region.exits - for exits in modified_exits: - region_exits.remove(exits) - - return updated_region - - -def create_regions(region_factory: RegionFactory, random: Random, world_options: StardewValleyOptions, content: StardewContent) \ - -> Tuple[Dict[str, Region], Dict[str, Entrance], Dict[str, str]]: - entrances_data, regions_data = create_final_connections_and_regions(world_options) - regions_by_name: Dict[str: Region] = {region_name: region_factory(region_name, regions_data[region_name].exits) for region_name in regions_data} - entrances_by_name: Dict[str: Entrance] = { - entrance.name: entrance - for region in regions_by_name.values() - for entrance in region.exits - if entrance.name in entrances_data - } - - connections, randomized_data = randomize_connections(random, world_options, content, regions_data, entrances_data) - - for connection in connections: - if connection.name in entrances_by_name: - entrances_by_name[connection.name].connect(regions_by_name[connection.destination]) - return regions_by_name, entrances_by_name, randomized_data - - -def randomize_connections(random: Random, world_options: StardewValleyOptions, content: StardewContent, regions_by_name: Dict[str, RegionData], - connections_by_name: Dict[str, ConnectionData]) -> Tuple[List[ConnectionData], Dict[str, str]]: - connections_to_randomize: List[ConnectionData] = [] - if world_options.entrance_randomization == EntranceRandomization.option_pelican_town: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.PELICAN_TOWN in connections_by_name[connection].flag] - elif world_options.entrance_randomization == EntranceRandomization.option_non_progression: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.NON_PROGRESSION in connections_by_name[connection].flag] - elif world_options.entrance_randomization == EntranceRandomization.option_buildings or world_options.entrance_randomization == EntranceRandomization.option_buildings_without_house: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.BUILDINGS in connections_by_name[connection].flag] - elif world_options.entrance_randomization == EntranceRandomization.option_chaos: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.BUILDINGS in connections_by_name[connection].flag] - connections_to_randomize = remove_excluded_entrances(connections_to_randomize, content) - - # On Chaos, we just add the connections to randomize, unshuffled, and the client does it every day - randomized_data_for_mod = {} - for connection in connections_to_randomize: - randomized_data_for_mod[connection.name] = connection.name - randomized_data_for_mod[connection.reverse] = connection.reverse - return list(connections_by_name.values()), randomized_data_for_mod - - connections_to_randomize = remove_excluded_entrances(connections_to_randomize, content) - random.shuffle(connections_to_randomize) - destination_pool = list(connections_to_randomize) - random.shuffle(destination_pool) - - randomized_connections = randomize_chosen_connections(connections_to_randomize, destination_pool) - add_non_randomized_connections(list(connections_by_name.values()), connections_to_randomize, randomized_connections) - - swap_connections_until_valid(regions_by_name, connections_by_name, randomized_connections, connections_to_randomize, random) - randomized_connections_for_generation = create_connections_for_generation(randomized_connections) - randomized_data_for_mod = create_data_for_mod(randomized_connections, connections_to_randomize) - - return randomized_connections_for_generation, randomized_data_for_mod - - -def remove_excluded_entrances(connections_to_randomize: List[ConnectionData], content: StardewContent) -> List[ConnectionData]: - # FIXME remove when regions are handled in content packs - if content_packs.ginger_island_content_pack.name not in content.registered_packs: - connections_to_randomize = [connection for connection in connections_to_randomize if RandomizationFlag.GINGER_ISLAND not in connection.flag] - if not content.features.skill_progression.are_masteries_shuffled: - connections_to_randomize = [connection for connection in connections_to_randomize if RandomizationFlag.MASTERIES not in connection.flag] - - return connections_to_randomize - - -def randomize_chosen_connections(connections_to_randomize: List[ConnectionData], - destination_pool: List[ConnectionData]) -> Dict[ConnectionData, ConnectionData]: - randomized_connections = {} - for connection in connections_to_randomize: - destination = destination_pool.pop() - randomized_connections[connection] = destination - return randomized_connections - - -def create_connections_for_generation(randomized_connections: Dict[ConnectionData, ConnectionData]) -> List[ConnectionData]: - connections = [] - for connection in randomized_connections: - destination = randomized_connections[connection] - connections.append(ConnectionData(connection.name, destination.destination, destination.reverse)) - return connections - - -def create_data_for_mod(randomized_connections: Dict[ConnectionData, ConnectionData], - connections_to_randomize: List[ConnectionData]) -> Dict[str, str]: - randomized_data_for_mod = {} - for connection in randomized_connections: - if connection not in connections_to_randomize: - continue - destination = randomized_connections[connection] - add_to_mod_data(connection, destination, randomized_data_for_mod) - return randomized_data_for_mod - - -def add_to_mod_data(connection: ConnectionData, destination: ConnectionData, randomized_data_for_mod: Dict[str, str]): - randomized_data_for_mod[connection.name] = destination.name - randomized_data_for_mod[destination.reverse] = connection.reverse - - -def add_non_randomized_connections(all_connections: List[ConnectionData], connections_to_randomize: List[ConnectionData], - randomized_connections: Dict[ConnectionData, ConnectionData]): - for connection in all_connections: - if connection in connections_to_randomize: - continue - randomized_connections[connection] = connection - - -def swap_connections_until_valid(regions_by_name, connections_by_name: Dict[str, ConnectionData], randomized_connections: Dict[ConnectionData, ConnectionData], - connections_to_randomize: List[ConnectionData], random: Random): - while True: - reachable_regions, unreachable_regions = find_reachable_regions(regions_by_name, connections_by_name, randomized_connections) - if not unreachable_regions: - return randomized_connections - swap_one_random_connection(regions_by_name, connections_by_name, randomized_connections, reachable_regions, - unreachable_regions, connections_to_randomize, random) - - -def region_should_be_reachable(region_name: str, connections_in_slot: Iterable[ConnectionData]) -> bool: - if region_name == RegionName.menu: - return True - for connection in connections_in_slot: - if region_name == connection.destination: - return True - return False - - -def find_reachable_regions(regions_by_name, connections_by_name, - randomized_connections: Dict[ConnectionData, ConnectionData]): - reachable_regions = {RegionName.menu} - unreachable_regions = {region for region in regions_by_name.keys()} - # unreachable_regions = {region for region in regions_by_name.keys() if region_should_be_reachable(region, connections_by_name.values())} - unreachable_regions.remove(RegionName.menu) - exits_to_explore = list(regions_by_name[RegionName.menu].exits) - while exits_to_explore: - exit_name = exits_to_explore.pop() - # if exit_name not in connections_by_name: - # continue - exit_connection = connections_by_name[exit_name] - replaced_connection = randomized_connections[exit_connection] - target_region_name = replaced_connection.destination - if target_region_name in reachable_regions: - continue - - target_region = regions_by_name[target_region_name] - reachable_regions.add(target_region_name) - unreachable_regions.remove(target_region_name) - exits_to_explore.extend(target_region.exits) - return reachable_regions, unreachable_regions - - -def swap_one_random_connection(regions_by_name, connections_by_name, randomized_connections: Dict[ConnectionData, ConnectionData], - reachable_regions: Set[str], unreachable_regions: Set[str], - connections_to_randomize: List[ConnectionData], random: Random): - randomized_connections_already_shuffled = {connection: randomized_connections[connection] - for connection in randomized_connections - if connection != randomized_connections[connection]} - unreachable_regions_names_leading_somewhere = [region for region in sorted(unreachable_regions) if len(regions_by_name[region].exits) > 0] - unreachable_regions_leading_somewhere = [regions_by_name[region_name] for region_name in unreachable_regions_names_leading_somewhere] - unreachable_regions_exits_names = [exit_name for region in unreachable_regions_leading_somewhere for exit_name in region.exits] - unreachable_connections = [connections_by_name[exit_name] for exit_name in unreachable_regions_exits_names] - unreachable_connections_that_can_be_randomized = [connection for connection in unreachable_connections if connection in connections_to_randomize] - - chosen_unreachable_entrance = random.choice(unreachable_connections_that_can_be_randomized) - - chosen_reachable_entrance = None - while chosen_reachable_entrance is None or chosen_reachable_entrance not in randomized_connections_already_shuffled: - chosen_reachable_region_name = random.choice(sorted(reachable_regions)) - chosen_reachable_region = regions_by_name[chosen_reachable_region_name] - if not any(chosen_reachable_region.exits): - continue - chosen_reachable_entrance_name = random.choice(chosen_reachable_region.exits) - chosen_reachable_entrance = connections_by_name[chosen_reachable_entrance_name] - - swap_two_connections(chosen_reachable_entrance, chosen_unreachable_entrance, randomized_connections) - - -def swap_two_connections(entrance_1, entrance_2, randomized_connections): - reachable_destination = randomized_connections[entrance_1] - unreachable_destination = randomized_connections[entrance_2] - randomized_connections[entrance_1] = unreachable_destination - randomized_connections[entrance_2] = reachable_destination diff --git a/worlds/stardew_valley/regions/__init__.py b/worlds/stardew_valley/regions/__init__.py new file mode 100644 index 000000000000..63e8afc2fba5 --- /dev/null +++ b/worlds/stardew_valley/regions/__init__.py @@ -0,0 +1,2 @@ +from .entrance_rando import prepare_mod_data +from .regions import create_regions, RegionFactory diff --git a/worlds/stardew_valley/regions/entrance_rando.py b/worlds/stardew_valley/regions/entrance_rando.py new file mode 100644 index 000000000000..7aa91685e894 --- /dev/null +++ b/worlds/stardew_valley/regions/entrance_rando.py @@ -0,0 +1,73 @@ +from BaseClasses import Region +from entrance_rando import ERPlacementState +from .model import ConnectionData, RandomizationFlag, reverse_connection_name, RegionData +from ..content import StardewContent +from ..options import EntranceRandomization + + +def create_player_randomization_flag(entrance_randomization_choice: EntranceRandomization, content: StardewContent): + """Return the flag that a connection is expected to have to be randomized. Only the bit corresponding to the player randomization choice will be enabled. + + Other bits for content exclusion might also be enabled, tho the preferred solution to exclude content should be to not create those regions at alls, when possible. + """ + flag = RandomizationFlag.NOT_RANDOMIZED + + if entrance_randomization_choice.value == EntranceRandomization.option_disabled: + return flag + + if entrance_randomization_choice == EntranceRandomization.option_pelican_town: + flag |= RandomizationFlag.BIT_PELICAN_TOWN + elif entrance_randomization_choice == EntranceRandomization.option_non_progression: + flag |= RandomizationFlag.BIT_NON_PROGRESSION + elif entrance_randomization_choice in ( + EntranceRandomization.option_buildings, + EntranceRandomization.option_buildings_without_house, + EntranceRandomization.option_chaos + ): + flag |= RandomizationFlag.BIT_BUILDINGS + + if not content.features.skill_progression.are_masteries_shuffled: + flag |= RandomizationFlag.EXCLUDE_MASTERIES + + return flag + + +def connect_regions(region_data_by_name: dict[str, RegionData], connection_data_by_name: dict[str, ConnectionData], regions_by_name: dict[str, Region], + player_randomization_flag: RandomizationFlag) -> None: + for region_name, region_data in region_data_by_name.items(): + origin_region = regions_by_name[region_name] + + for exit_name in region_data.exits: + connection_data = connection_data_by_name[exit_name] + destination_region = regions_by_name[connection_data.destination] + + if connection_data.is_eligible_for_randomization(player_randomization_flag): + create_entrance_rando_target(origin_region, destination_region, connection_data) + else: + origin_region.connect(destination_region, connection_data.name) + + +def create_entrance_rando_target(origin: Region, destination: Region, connection_data: ConnectionData) -> None: + """We need our own function to create the GER targets, because the Stardew Mod have very specific expectations for the name of the entrances. + We need to know exactly which entrances to swap in both directions.""" + origin.create_exit(connection_data.name) + destination.create_er_target(connection_data.reverse) + + +def prepare_mod_data(placements: ERPlacementState) -> dict[str, str]: + """Take the placements from GER and prepare the data for the mod. + The mod require a dictionary detailing which connections need to be swapped. It acts as if the connections are decoupled, so both directions are required. + + For instance, GER will provide placements like (Town to Community Center, Hospital to Town), meaning that the door of the Community Center will instead lead + to the Hospital, and that the exit of the Hospital will lead to the Town by the Community Center door. The StardewAP mod need to know both swaps, being the + original destination of the "Town to Community Center" connection is to be replaced by the original destination of "Town to Hospital", and the original + destination of "Hospital to Town" is to be replaced by the original destination of "Community Center to Town". + """ + + swapped_connections = {} + + for entrance, exit_ in placements.pairings: + swapped_connections[entrance] = reverse_connection_name(exit_) + swapped_connections[exit_] = reverse_connection_name(entrance) + + return swapped_connections diff --git a/worlds/stardew_valley/regions/model.py b/worlds/stardew_valley/regions/model.py new file mode 100644 index 000000000000..07c390155895 --- /dev/null +++ b/worlds/stardew_valley/regions/model.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +from collections.abc import Container +from dataclasses import dataclass, field +from enum import IntFlag + +connector_keyword = " to " + + +def reverse_connection_name(name: str) -> str | None: + try: + origin, destination = name.split(connector_keyword) + except ValueError: + return None + return f"{destination}{connector_keyword}{origin}" + + +class MergeFlag(IntFlag): + ADD_EXITS = 0 + REMOVE_EXITS = 1 + + +class RandomizationFlag(IntFlag): + NOT_RANDOMIZED = 0 + + # Randomization options + # The first 4 bits are used to mark if an entrance is eligible for randomization according to the entrance randomization options. + BIT_PELICAN_TOWN = 1 # 0b0001 + BIT_NON_PROGRESSION = 1 << 1 # 0b0010 + BIT_BUILDINGS = 1 << 2 # 0b0100 + BIT_EVERYTHING = 1 << 3 # 0b1000 + + # Content flag for entrances exclusions + # The next 2 bits are used to mark if an entrance is to be excluded from randomization according to the content options. + # Those bits must be removed from an entrance flags when then entrance must be excluded. + __UNUSED = 1 << 4 # 0b010000 + EXCLUDE_MASTERIES = 1 << 5 # 0b100000 + + # Entrance groups + # The last bit is used to add additional qualifiers on entrances to group them + # Those bits should be added when an entrance need additional qualifiers. + LEAD_TO_OPEN_AREA = 1 << 6 + + # Tags to apply on connections + EVERYTHING = EXCLUDE_MASTERIES | BIT_EVERYTHING + BUILDINGS = EVERYTHING | BIT_BUILDINGS + NON_PROGRESSION = BUILDINGS | BIT_NON_PROGRESSION + PELICAN_TOWN = NON_PROGRESSION | BIT_PELICAN_TOWN + + +@dataclass(frozen=True) +class RegionData: + name: str + exits: tuple[str, ...] = field(default_factory=tuple) + flag: MergeFlag = MergeFlag.ADD_EXITS + + def __post_init__(self): + assert not isinstance(self.exits, str), "Exits must be a tuple of strings, you probably forgot a trailing comma." + + def merge_with(self, other: RegionData) -> RegionData: + assert self.name == other.name, "Regions must have the same name to be merged" + + if other.flag == MergeFlag.REMOVE_EXITS: + return self.get_without_exits(other.exits) + + merged_exits = self.exits + other.exits + assert len(merged_exits) == len(set(merged_exits)), "Two regions getting merged have duplicated exists..." + + return RegionData(self.name, merged_exits) + + def get_without_exits(self, exits_to_remove: Container[str]) -> RegionData: + exits = tuple(exit_ for exit_ in self.exits if exit_ not in exits_to_remove) + return RegionData(self.name, exits) + + +@dataclass(frozen=True) +class ConnectionData: + name: str + destination: str + flag: RandomizationFlag = RandomizationFlag.NOT_RANDOMIZED + + @property + def reverse(self) -> str | None: + return reverse_connection_name(self.name) + + def is_eligible_for_randomization(self, chosen_randomization_flag: RandomizationFlag) -> bool: + return chosen_randomization_flag and chosen_randomization_flag in self.flag + + +@dataclass(frozen=True) +class ModRegionsData: + mod_name: str + regions: list[RegionData] + connections: list[ConnectionData] diff --git a/worlds/stardew_valley/regions/mods.py b/worlds/stardew_valley/regions/mods.py new file mode 100644 index 000000000000..fca54619f518 --- /dev/null +++ b/worlds/stardew_valley/regions/mods.py @@ -0,0 +1,46 @@ +from collections.abc import Iterable + +from .model import ConnectionData, RegionData, ModRegionsData +from ..mods.region_data import region_data_by_content_pack, vanilla_connections_to_remove_by_content_pack + + +def modify_regions_for_mods(current_regions_by_name: dict[str, RegionData], active_content_packs: Iterable[str]) -> None: + for content_pack in active_content_packs: + try: + region_data = region_data_by_content_pack[content_pack] + except KeyError: + continue + + merge_mod_regions(current_regions_by_name, region_data) + + +def merge_mod_regions(current_regions_by_name: dict[str, RegionData], mod_region_data: ModRegionsData) -> None: + for new_region in mod_region_data.regions: + region_name = new_region.name + try: + current_region = current_regions_by_name[region_name] + except KeyError: + current_regions_by_name[region_name] = new_region + continue + + current_regions_by_name[region_name] = current_region.merge_with(new_region) + + +def modify_connections_for_mods(connections: dict[str, ConnectionData], active_mods: Iterable[str]) -> None: + for active_mod in active_mods: + try: + region_data = region_data_by_content_pack[active_mod] + except KeyError: + continue + + try: + vanilla_connections_to_remove = vanilla_connections_to_remove_by_content_pack[active_mod] + for connection_name in vanilla_connections_to_remove: + connections.pop(connection_name) + except KeyError: + pass + + connections.update({ + connection.name: connection + for connection in region_data.connections + }) diff --git a/worlds/stardew_valley/regions/regions.py b/worlds/stardew_valley/regions/regions.py new file mode 100644 index 000000000000..ceaec5b2ac0d --- /dev/null +++ b/worlds/stardew_valley/regions/regions.py @@ -0,0 +1,61 @@ +from typing import Protocol + +from BaseClasses import Region +from . import vanilla_data, mods +from .entrance_rando import create_player_randomization_flag, connect_regions +from .model import ConnectionData, RegionData +from ..content import StardewContent +from ..content.vanilla.ginger_island import ginger_island_content_pack +from ..options import StardewValleyOptions + + +class RegionFactory(Protocol): + def __call__(self, name: str) -> Region: + raise NotImplementedError + + +def create_regions(region_factory: RegionFactory, world_options: StardewValleyOptions, content: StardewContent) -> dict[str, Region]: + connection_data_by_name, region_data_by_name = create_connections_and_regions(content.registered_packs) + + regions_by_name: dict[str: Region] = { + region_name: region_factory(region_name) + for region_name in region_data_by_name + } + + randomization_flag = create_player_randomization_flag(world_options.entrance_randomization, content) + connect_regions(region_data_by_name, connection_data_by_name, regions_by_name, randomization_flag) + + return regions_by_name + + +def create_connections_and_regions(active_content_packs: set[str]) -> tuple[dict[str, ConnectionData], dict[str, RegionData]]: + regions_by_name = create_all_regions(active_content_packs) + connections_by_name = create_all_connections(active_content_packs) + + return connections_by_name, regions_by_name + + +def create_all_regions(active_content_packs: set[str]) -> dict[str, RegionData]: + current_regions_by_name = create_vanilla_regions(active_content_packs) + mods.modify_regions_for_mods(current_regions_by_name, sorted(active_content_packs)) + return current_regions_by_name + + +def create_vanilla_regions(active_content_packs: set[str]) -> dict[str, RegionData]: + if ginger_island_content_pack.name in active_content_packs: + return {**vanilla_data.regions_with_ginger_island_by_name} + else: + return {**vanilla_data.regions_without_ginger_island_by_name} + + +def create_all_connections(active_content_packs: set[str]) -> dict[str, ConnectionData]: + connections = create_vanilla_connections(active_content_packs) + mods.modify_connections_for_mods(connections, sorted(active_content_packs)) + return connections + + +def create_vanilla_connections(active_content_packs: set[str]) -> dict[str, ConnectionData]: + if ginger_island_content_pack.name in active_content_packs: + return {**vanilla_data.connections_with_ginger_island_by_name} + else: + return {**vanilla_data.connections_without_ginger_island_by_name} diff --git a/worlds/stardew_valley/regions/vanilla_data.py b/worlds/stardew_valley/regions/vanilla_data.py new file mode 100644 index 000000000000..dbb83e1063c3 --- /dev/null +++ b/worlds/stardew_valley/regions/vanilla_data.py @@ -0,0 +1,522 @@ +from collections.abc import Mapping +from types import MappingProxyType + +from .model import ConnectionData, RandomizationFlag, RegionData +from ..strings.entrance_names import LogicEntrance, Entrance +from ..strings.region_names import LogicRegion, Region as RegionName + +vanilla_regions: tuple[RegionData, ...] = ( + RegionData(RegionName.menu, (Entrance.to_stardew_valley,)), + RegionData(RegionName.stardew_valley, (Entrance.to_farmhouse,)), + RegionData(RegionName.farm_house, + (Entrance.farmhouse_to_farm, Entrance.downstairs_to_cellar, LogicEntrance.farmhouse_cooking, LogicEntrance.watch_queen_of_sauce)), + RegionData(RegionName.cellar), + RegionData(RegionName.farm, + (Entrance.farm_to_backwoods, Entrance.farm_to_bus_stop, Entrance.farm_to_forest, Entrance.farm_to_farmcave, Entrance.enter_greenhouse, + Entrance.enter_coop, Entrance.enter_barn, Entrance.enter_shed, Entrance.enter_slime_hutch, LogicEntrance.grow_spring_crops, + LogicEntrance.grow_summer_crops, LogicEntrance.grow_fall_crops, LogicEntrance.grow_winter_crops, LogicEntrance.shipping, + LogicEntrance.fishing,)), + RegionData(RegionName.backwoods, (Entrance.backwoods_to_mountain,)), + RegionData(RegionName.bus_stop, + (Entrance.bus_stop_to_town, Entrance.take_bus_to_desert, Entrance.bus_stop_to_tunnel_entrance)), + RegionData(RegionName.forest, + (Entrance.forest_to_town, Entrance.enter_secret_woods, Entrance.forest_to_wizard_tower, Entrance.forest_to_marnie_ranch, + Entrance.forest_to_leah_cottage, Entrance.forest_to_sewer, Entrance.forest_to_mastery_cave, LogicEntrance.buy_from_traveling_merchant, + LogicEntrance.complete_raccoon_requests, LogicEntrance.fish_in_waterfall, LogicEntrance.attend_flower_dance, LogicEntrance.attend_trout_derby, + LogicEntrance.attend_festival_of_ice)), + RegionData(LogicRegion.forest_waterfall), + RegionData(RegionName.farm_cave), + RegionData(RegionName.greenhouse, + (LogicEntrance.grow_spring_crops_in_greenhouse, LogicEntrance.grow_summer_crops_in_greenhouse, LogicEntrance.grow_fall_crops_in_greenhouse, + LogicEntrance.grow_winter_crops_in_greenhouse, LogicEntrance.grow_indoor_crops_in_greenhouse)), + RegionData(RegionName.mountain, + (Entrance.mountain_to_railroad, Entrance.mountain_to_tent, Entrance.mountain_to_carpenter_shop, + Entrance.mountain_to_the_mines, Entrance.enter_quarry, Entrance.mountain_to_adventurer_guild, + Entrance.mountain_to_town, Entrance.mountain_to_maru_room)), + RegionData(RegionName.maru_room), + RegionData(RegionName.tunnel_entrance, (Entrance.tunnel_entrance_to_bus_tunnel,)), + RegionData(RegionName.bus_tunnel), + RegionData(RegionName.town, + (Entrance.town_to_community_center, Entrance.town_to_beach, Entrance.town_to_hospital, Entrance.town_to_pierre_general_store, + Entrance.town_to_saloon, Entrance.town_to_alex_house, Entrance.town_to_trailer, Entrance.town_to_mayor_manor, Entrance.town_to_sam_house, + Entrance.town_to_haley_house, Entrance.town_to_sewer, Entrance.town_to_clint_blacksmith, Entrance.town_to_museum, Entrance.town_to_jojamart, + Entrance.purchase_movie_ticket, LogicEntrance.buy_experience_books, LogicEntrance.attend_egg_festival, LogicEntrance.attend_fair, + LogicEntrance.attend_spirit_eve, LogicEntrance.attend_winter_star)), + RegionData(RegionName.beach, + (Entrance.beach_to_willy_fish_shop, Entrance.enter_elliott_house, Entrance.enter_tide_pools, LogicEntrance.attend_luau, + LogicEntrance.attend_moonlight_jellies, LogicEntrance.attend_night_market, LogicEntrance.attend_squidfest)), + RegionData(RegionName.railroad, (Entrance.enter_bathhouse_entrance, Entrance.enter_witch_warp_cave)), + RegionData(RegionName.ranch), + RegionData(RegionName.leah_house), + RegionData(RegionName.mastery_cave), + RegionData(RegionName.sewer, (Entrance.enter_mutant_bug_lair,)), + RegionData(RegionName.mutant_bug_lair), + RegionData(RegionName.wizard_tower, (Entrance.enter_wizard_basement, Entrance.use_desert_obelisk)), + RegionData(RegionName.wizard_basement), + RegionData(RegionName.tent), + RegionData(RegionName.carpenter, (Entrance.enter_sebastian_room,)), + RegionData(RegionName.sebastian_room), + RegionData(RegionName.adventurer_guild, (Entrance.adventurer_guild_to_bedroom,)), + RegionData(RegionName.adventurer_guild_bedroom), + RegionData(RegionName.community_center, + (Entrance.access_crafts_room, Entrance.access_pantry, Entrance.access_fish_tank, + Entrance.access_boiler_room, Entrance.access_bulletin_board, Entrance.access_vault)), + RegionData(RegionName.crafts_room), + RegionData(RegionName.pantry), + RegionData(RegionName.fish_tank), + RegionData(RegionName.boiler_room), + RegionData(RegionName.bulletin_board), + RegionData(RegionName.vault), + RegionData(RegionName.hospital, (Entrance.enter_harvey_room,)), + RegionData(RegionName.harvey_room), + RegionData(RegionName.pierre_store, (Entrance.enter_sunroom,)), + RegionData(RegionName.sunroom), + RegionData(RegionName.saloon, (Entrance.play_journey_of_the_prairie_king, Entrance.play_junimo_kart)), + RegionData(RegionName.jotpk_world_1, (Entrance.reach_jotpk_world_2,)), + RegionData(RegionName.jotpk_world_2, (Entrance.reach_jotpk_world_3,)), + RegionData(RegionName.jotpk_world_3), + RegionData(RegionName.junimo_kart_1, (Entrance.reach_junimo_kart_2,)), + RegionData(RegionName.junimo_kart_2, (Entrance.reach_junimo_kart_3,)), + RegionData(RegionName.junimo_kart_3, (Entrance.reach_junimo_kart_4,)), + RegionData(RegionName.junimo_kart_4), + RegionData(RegionName.alex_house), + RegionData(RegionName.trailer), + RegionData(RegionName.mayor_house), + RegionData(RegionName.sam_house), + RegionData(RegionName.haley_house), + RegionData(RegionName.blacksmith, (LogicEntrance.blacksmith_copper,)), + RegionData(RegionName.museum), + RegionData(RegionName.jojamart, (Entrance.enter_abandoned_jojamart,)), + RegionData(RegionName.abandoned_jojamart, (Entrance.enter_movie_theater,)), + RegionData(RegionName.movie_ticket_stand), + RegionData(RegionName.movie_theater), + RegionData(RegionName.fish_shop), + RegionData(RegionName.elliott_house), + RegionData(RegionName.tide_pools), + RegionData(RegionName.bathhouse_entrance, (Entrance.enter_locker_room,)), + RegionData(RegionName.locker_room, (Entrance.enter_public_bath,)), + RegionData(RegionName.public_bath), + RegionData(RegionName.witch_warp_cave, (Entrance.enter_witch_swamp,)), + RegionData(RegionName.witch_swamp, (Entrance.enter_witch_hut,)), + RegionData(RegionName.witch_hut, (Entrance.witch_warp_to_wizard_basement,)), + RegionData(RegionName.quarry, (Entrance.enter_quarry_mine_entrance,)), + RegionData(RegionName.quarry_mine_entrance, (Entrance.enter_quarry_mine,)), + RegionData(RegionName.quarry_mine), + RegionData(RegionName.secret_woods), + RegionData(RegionName.desert, (Entrance.enter_skull_cavern_entrance, Entrance.enter_oasis, LogicEntrance.attend_desert_festival)), + RegionData(RegionName.oasis, (Entrance.enter_casino,)), + RegionData(RegionName.casino), + RegionData(RegionName.skull_cavern_entrance, (Entrance.enter_skull_cavern,)), + RegionData(RegionName.skull_cavern, (Entrance.mine_to_skull_cavern_floor_25,)), + RegionData(RegionName.skull_cavern_25, (Entrance.mine_to_skull_cavern_floor_50,)), + RegionData(RegionName.skull_cavern_50, (Entrance.mine_to_skull_cavern_floor_75,)), + RegionData(RegionName.skull_cavern_75, (Entrance.mine_to_skull_cavern_floor_100,)), + RegionData(RegionName.skull_cavern_100, (Entrance.mine_to_skull_cavern_floor_125,)), + RegionData(RegionName.skull_cavern_125, (Entrance.mine_to_skull_cavern_floor_150,)), + RegionData(RegionName.skull_cavern_150, (Entrance.mine_to_skull_cavern_floor_175,)), + RegionData(RegionName.skull_cavern_175, (Entrance.mine_to_skull_cavern_floor_200,)), + RegionData(RegionName.skull_cavern_200), + + RegionData(RegionName.coop), + RegionData(RegionName.barn), + RegionData(RegionName.shed), + RegionData(RegionName.slime_hutch), + + RegionData(RegionName.mines, (LogicEntrance.talk_to_mines_dwarf, Entrance.dig_to_mines_floor_5)), + RegionData(RegionName.mines_floor_5, (Entrance.dig_to_mines_floor_10,)), + RegionData(RegionName.mines_floor_10, (Entrance.dig_to_mines_floor_15,)), + RegionData(RegionName.mines_floor_15, (Entrance.dig_to_mines_floor_20,)), + RegionData(RegionName.mines_floor_20, (Entrance.dig_to_mines_floor_25,)), + RegionData(RegionName.mines_floor_25, (Entrance.dig_to_mines_floor_30,)), + RegionData(RegionName.mines_floor_30, (Entrance.dig_to_mines_floor_35,)), + RegionData(RegionName.mines_floor_35, (Entrance.dig_to_mines_floor_40,)), + RegionData(RegionName.mines_floor_40, (Entrance.dig_to_mines_floor_45,)), + RegionData(RegionName.mines_floor_45, (Entrance.dig_to_mines_floor_50,)), + RegionData(RegionName.mines_floor_50, (Entrance.dig_to_mines_floor_55,)), + RegionData(RegionName.mines_floor_55, (Entrance.dig_to_mines_floor_60,)), + RegionData(RegionName.mines_floor_60, (Entrance.dig_to_mines_floor_65,)), + RegionData(RegionName.mines_floor_65, (Entrance.dig_to_mines_floor_70,)), + RegionData(RegionName.mines_floor_70, (Entrance.dig_to_mines_floor_75,)), + RegionData(RegionName.mines_floor_75, (Entrance.dig_to_mines_floor_80,)), + RegionData(RegionName.mines_floor_80, (Entrance.dig_to_mines_floor_85,)), + RegionData(RegionName.mines_floor_85, (Entrance.dig_to_mines_floor_90,)), + RegionData(RegionName.mines_floor_90, (Entrance.dig_to_mines_floor_95,)), + RegionData(RegionName.mines_floor_95, (Entrance.dig_to_mines_floor_100,)), + RegionData(RegionName.mines_floor_100, (Entrance.dig_to_mines_floor_105,)), + RegionData(RegionName.mines_floor_105, (Entrance.dig_to_mines_floor_110,)), + RegionData(RegionName.mines_floor_110, (Entrance.dig_to_mines_floor_115,)), + RegionData(RegionName.mines_floor_115, (Entrance.dig_to_mines_floor_120,)), + RegionData(RegionName.mines_floor_120), + + RegionData(LogicRegion.mines_dwarf_shop), + RegionData(LogicRegion.blacksmith_copper, (LogicEntrance.blacksmith_iron,)), + RegionData(LogicRegion.blacksmith_iron, (LogicEntrance.blacksmith_gold,)), + RegionData(LogicRegion.blacksmith_gold, (LogicEntrance.blacksmith_iridium,)), + RegionData(LogicRegion.blacksmith_iridium), + RegionData(LogicRegion.kitchen), + RegionData(LogicRegion.queen_of_sauce), + RegionData(LogicRegion.fishing), + + RegionData(LogicRegion.spring_farming), + RegionData(LogicRegion.summer_farming, (LogicEntrance.grow_summer_fall_crops_in_summer,)), + RegionData(LogicRegion.fall_farming, (LogicEntrance.grow_summer_fall_crops_in_fall,)), + RegionData(LogicRegion.winter_farming), + RegionData(LogicRegion.summer_or_fall_farming), + RegionData(LogicRegion.indoor_farming), + + RegionData(LogicRegion.shipping), + RegionData(LogicRegion.traveling_cart, (LogicEntrance.buy_from_traveling_merchant_sunday, + LogicEntrance.buy_from_traveling_merchant_monday, + LogicEntrance.buy_from_traveling_merchant_tuesday, + LogicEntrance.buy_from_traveling_merchant_wednesday, + LogicEntrance.buy_from_traveling_merchant_thursday, + LogicEntrance.buy_from_traveling_merchant_friday, + LogicEntrance.buy_from_traveling_merchant_saturday)), + RegionData(LogicRegion.traveling_cart_sunday), + RegionData(LogicRegion.traveling_cart_monday), + RegionData(LogicRegion.traveling_cart_tuesday), + RegionData(LogicRegion.traveling_cart_wednesday), + RegionData(LogicRegion.traveling_cart_thursday), + RegionData(LogicRegion.traveling_cart_friday), + RegionData(LogicRegion.traveling_cart_saturday), + RegionData(LogicRegion.raccoon_daddy, (LogicEntrance.buy_from_raccoon,)), + RegionData(LogicRegion.raccoon_shop), + + RegionData(LogicRegion.egg_festival), + RegionData(LogicRegion.desert_festival), + RegionData(LogicRegion.flower_dance), + RegionData(LogicRegion.luau), + RegionData(LogicRegion.trout_derby), + RegionData(LogicRegion.moonlight_jellies), + RegionData(LogicRegion.fair), + RegionData(LogicRegion.spirit_eve), + RegionData(LogicRegion.festival_of_ice), + RegionData(LogicRegion.night_market), + RegionData(LogicRegion.winter_star), + RegionData(LogicRegion.squidfest), + RegionData(LogicRegion.bookseller_1, (LogicEntrance.buy_year1_books,)), + RegionData(LogicRegion.bookseller_2, (LogicEntrance.buy_year3_books,)), + RegionData(LogicRegion.bookseller_3), +) +ginger_island_regions = ( + # This overrides the regions from vanilla... When regions are moved to content packs, overriding existing entrances should no longer be necessary. + RegionData(RegionName.mountain, + (Entrance.mountain_to_railroad, Entrance.mountain_to_tent, Entrance.mountain_to_carpenter_shop, + Entrance.mountain_to_the_mines, Entrance.enter_quarry, Entrance.mountain_to_adventurer_guild, + Entrance.mountain_to_town, Entrance.mountain_to_maru_room, Entrance.mountain_to_leo_treehouse)), + RegionData(RegionName.wizard_tower, (Entrance.enter_wizard_basement, Entrance.use_desert_obelisk, Entrance.use_island_obelisk,)), + RegionData(RegionName.fish_shop, (Entrance.fish_shop_to_boat_tunnel,)), + RegionData(RegionName.mines_floor_120, (Entrance.dig_to_dangerous_mines_20, Entrance.dig_to_dangerous_mines_60, Entrance.dig_to_dangerous_mines_100)), + RegionData(RegionName.skull_cavern_200, (Entrance.enter_dangerous_skull_cavern,)), + + RegionData(RegionName.leo_treehouse), + RegionData(RegionName.boat_tunnel, (Entrance.boat_to_ginger_island,)), + RegionData(RegionName.dangerous_skull_cavern), + RegionData(RegionName.island_south, + (Entrance.island_south_to_west, Entrance.island_south_to_north, Entrance.island_south_to_east, Entrance.island_south_to_southeast, + Entrance.use_island_resort, Entrance.parrot_express_docks_to_volcano, Entrance.parrot_express_docks_to_dig_site, + Entrance.parrot_express_docks_to_jungle), ), + RegionData(RegionName.island_resort), + RegionData(RegionName.island_west, + (Entrance.island_west_to_islandfarmhouse, Entrance.island_west_to_gourmand_cave, Entrance.island_west_to_crystals_cave, + Entrance.island_west_to_shipwreck, Entrance.island_west_to_qi_walnut_room, Entrance.use_farm_obelisk, Entrance.parrot_express_jungle_to_docks, + Entrance.parrot_express_jungle_to_dig_site, Entrance.parrot_express_jungle_to_volcano, LogicEntrance.grow_spring_crops_on_island, + LogicEntrance.grow_summer_crops_on_island, LogicEntrance.grow_fall_crops_on_island, LogicEntrance.grow_winter_crops_on_island, + LogicEntrance.grow_indoor_crops_on_island), ), + RegionData(RegionName.island_east, (Entrance.island_east_to_leo_hut, Entrance.island_east_to_island_shrine)), + RegionData(RegionName.island_shrine), + RegionData(RegionName.island_south_east, (Entrance.island_southeast_to_pirate_cove,)), + RegionData(RegionName.island_north, + (Entrance.talk_to_island_trader, Entrance.island_north_to_field_office, Entrance.island_north_to_dig_site, Entrance.island_north_to_volcano, + Entrance.parrot_express_volcano_to_dig_site, Entrance.parrot_express_volcano_to_jungle, Entrance.parrot_express_volcano_to_docks), ), + RegionData(RegionName.volcano, (Entrance.climb_to_volcano_5, Entrance.volcano_to_secret_beach)), + RegionData(RegionName.volcano_secret_beach), + RegionData(RegionName.volcano_floor_5, (Entrance.talk_to_volcano_dwarf, Entrance.climb_to_volcano_10)), + RegionData(RegionName.volcano_dwarf_shop), + RegionData(RegionName.volcano_floor_10), + RegionData(RegionName.island_trader), + RegionData(RegionName.island_farmhouse, (LogicEntrance.island_cooking,)), + RegionData(RegionName.gourmand_frog_cave), + RegionData(RegionName.colored_crystals_cave), + RegionData(RegionName.shipwreck), + RegionData(RegionName.qi_walnut_room), + RegionData(RegionName.leo_hut), + RegionData(RegionName.pirate_cove), + RegionData(RegionName.field_office), + RegionData(RegionName.dig_site, + (Entrance.dig_site_to_professor_snail_cave, Entrance.parrot_express_dig_site_to_volcano, + Entrance.parrot_express_dig_site_to_docks, Entrance.parrot_express_dig_site_to_jungle), ), + + RegionData(RegionName.professor_snail_cave), + RegionData(RegionName.dangerous_mines_20), + RegionData(RegionName.dangerous_mines_60), + RegionData(RegionName.dangerous_mines_100), +) + +# Exists and where they lead +vanilla_connections: tuple[ConnectionData, ...] = ( + ConnectionData(Entrance.to_stardew_valley, RegionName.stardew_valley), + ConnectionData(Entrance.to_farmhouse, RegionName.farm_house), + ConnectionData(Entrance.farmhouse_to_farm, RegionName.farm), + ConnectionData(Entrance.downstairs_to_cellar, RegionName.cellar), + ConnectionData(Entrance.farm_to_backwoods, RegionName.backwoods), + ConnectionData(Entrance.farm_to_bus_stop, RegionName.bus_stop), + ConnectionData(Entrance.farm_to_forest, RegionName.forest), + ConnectionData(Entrance.farm_to_farmcave, RegionName.farm_cave, flag=RandomizationFlag.NON_PROGRESSION), + ConnectionData(Entrance.enter_greenhouse, RegionName.greenhouse), + ConnectionData(Entrance.enter_coop, RegionName.coop), + ConnectionData(Entrance.enter_barn, RegionName.barn), + ConnectionData(Entrance.enter_shed, RegionName.shed), + ConnectionData(Entrance.enter_slime_hutch, RegionName.slime_hutch), + ConnectionData(Entrance.use_desert_obelisk, RegionName.desert), + ConnectionData(Entrance.backwoods_to_mountain, RegionName.mountain), + ConnectionData(Entrance.bus_stop_to_town, RegionName.town), + ConnectionData(Entrance.bus_stop_to_tunnel_entrance, RegionName.tunnel_entrance), + ConnectionData(Entrance.tunnel_entrance_to_bus_tunnel, RegionName.bus_tunnel, flag=RandomizationFlag.NON_PROGRESSION), + ConnectionData(Entrance.take_bus_to_desert, RegionName.desert), + ConnectionData(Entrance.forest_to_town, RegionName.town), + ConnectionData(Entrance.forest_to_wizard_tower, RegionName.wizard_tower, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.forest_to_marnie_ranch, RegionName.ranch, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.forest_to_leah_cottage, RegionName.leah_house, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_secret_woods, RegionName.secret_woods), + ConnectionData(Entrance.forest_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), + # We remove the bit for masteries, because the mastery cave is to be excluded from the randomization if masteries are not shuffled. + ConnectionData(Entrance.forest_to_mastery_cave, RegionName.mastery_cave, flag=RandomizationFlag.BUILDINGS ^ RandomizationFlag.EXCLUDE_MASTERIES), + ConnectionData(Entrance.town_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_mutant_bug_lair, RegionName.mutant_bug_lair, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.mountain_to_railroad, RegionName.railroad), + ConnectionData(Entrance.mountain_to_tent, RegionName.tent, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.mountain_to_carpenter_shop, RegionName.carpenter, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.mountain_to_maru_room, RegionName.maru_room, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_sebastian_room, RegionName.sebastian_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.mountain_to_adventurer_guild, RegionName.adventurer_guild, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.adventurer_guild_to_bedroom, RegionName.adventurer_guild_bedroom), + ConnectionData(Entrance.enter_quarry, RegionName.quarry), + ConnectionData(Entrance.enter_quarry_mine_entrance, RegionName.quarry_mine_entrance, + flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_quarry_mine, RegionName.quarry_mine), + ConnectionData(Entrance.mountain_to_town, RegionName.town), + ConnectionData(Entrance.town_to_community_center, RegionName.community_center, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.access_crafts_room, RegionName.crafts_room), + ConnectionData(Entrance.access_pantry, RegionName.pantry), + ConnectionData(Entrance.access_fish_tank, RegionName.fish_tank), + ConnectionData(Entrance.access_boiler_room, RegionName.boiler_room), + ConnectionData(Entrance.access_bulletin_board, RegionName.bulletin_board), + ConnectionData(Entrance.access_vault, RegionName.vault), + ConnectionData(Entrance.town_to_hospital, RegionName.hospital, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_harvey_room, RegionName.harvey_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.town_to_pierre_general_store, RegionName.pierre_store, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_sunroom, RegionName.sunroom, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.town_to_clint_blacksmith, RegionName.blacksmith, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_saloon, RegionName.saloon, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.play_journey_of_the_prairie_king, RegionName.jotpk_world_1), + ConnectionData(Entrance.reach_jotpk_world_2, RegionName.jotpk_world_2), + ConnectionData(Entrance.reach_jotpk_world_3, RegionName.jotpk_world_3), + ConnectionData(Entrance.play_junimo_kart, RegionName.junimo_kart_1), + ConnectionData(Entrance.reach_junimo_kart_2, RegionName.junimo_kart_2), + ConnectionData(Entrance.reach_junimo_kart_3, RegionName.junimo_kart_3), + ConnectionData(Entrance.reach_junimo_kart_4, RegionName.junimo_kart_4), + ConnectionData(Entrance.town_to_sam_house, RegionName.sam_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_haley_house, RegionName.haley_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_mayor_manor, RegionName.mayor_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_alex_house, RegionName.alex_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_trailer, RegionName.trailer, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_museum, RegionName.museum, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_jojamart, RegionName.jojamart, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.purchase_movie_ticket, RegionName.movie_ticket_stand), + ConnectionData(Entrance.enter_abandoned_jojamart, RegionName.abandoned_jojamart), + ConnectionData(Entrance.enter_movie_theater, RegionName.movie_theater), + ConnectionData(Entrance.town_to_beach, RegionName.beach), + ConnectionData(Entrance.enter_elliott_house, RegionName.elliott_house, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.beach_to_willy_fish_shop, RegionName.fish_shop, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_tide_pools, RegionName.tide_pools), + ConnectionData(Entrance.mountain_to_the_mines, RegionName.mines, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.dig_to_mines_floor_5, RegionName.mines_floor_5), + ConnectionData(Entrance.dig_to_mines_floor_10, RegionName.mines_floor_10), + ConnectionData(Entrance.dig_to_mines_floor_15, RegionName.mines_floor_15), + ConnectionData(Entrance.dig_to_mines_floor_20, RegionName.mines_floor_20), + ConnectionData(Entrance.dig_to_mines_floor_25, RegionName.mines_floor_25), + ConnectionData(Entrance.dig_to_mines_floor_30, RegionName.mines_floor_30), + ConnectionData(Entrance.dig_to_mines_floor_35, RegionName.mines_floor_35), + ConnectionData(Entrance.dig_to_mines_floor_40, RegionName.mines_floor_40), + ConnectionData(Entrance.dig_to_mines_floor_45, RegionName.mines_floor_45), + ConnectionData(Entrance.dig_to_mines_floor_50, RegionName.mines_floor_50), + ConnectionData(Entrance.dig_to_mines_floor_55, RegionName.mines_floor_55), + ConnectionData(Entrance.dig_to_mines_floor_60, RegionName.mines_floor_60), + ConnectionData(Entrance.dig_to_mines_floor_65, RegionName.mines_floor_65), + ConnectionData(Entrance.dig_to_mines_floor_70, RegionName.mines_floor_70), + ConnectionData(Entrance.dig_to_mines_floor_75, RegionName.mines_floor_75), + ConnectionData(Entrance.dig_to_mines_floor_80, RegionName.mines_floor_80), + ConnectionData(Entrance.dig_to_mines_floor_85, RegionName.mines_floor_85), + ConnectionData(Entrance.dig_to_mines_floor_90, RegionName.mines_floor_90), + ConnectionData(Entrance.dig_to_mines_floor_95, RegionName.mines_floor_95), + ConnectionData(Entrance.dig_to_mines_floor_100, RegionName.mines_floor_100), + ConnectionData(Entrance.dig_to_mines_floor_105, RegionName.mines_floor_105), + ConnectionData(Entrance.dig_to_mines_floor_110, RegionName.mines_floor_110), + ConnectionData(Entrance.dig_to_mines_floor_115, RegionName.mines_floor_115), + ConnectionData(Entrance.dig_to_mines_floor_120, RegionName.mines_floor_120), + ConnectionData(Entrance.enter_skull_cavern_entrance, RegionName.skull_cavern_entrance, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_oasis, RegionName.oasis, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_casino, RegionName.casino, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_skull_cavern, RegionName.skull_cavern), + ConnectionData(Entrance.mine_to_skull_cavern_floor_25, RegionName.skull_cavern_25), + ConnectionData(Entrance.mine_to_skull_cavern_floor_50, RegionName.skull_cavern_50), + ConnectionData(Entrance.mine_to_skull_cavern_floor_75, RegionName.skull_cavern_75), + ConnectionData(Entrance.mine_to_skull_cavern_floor_100, RegionName.skull_cavern_100), + ConnectionData(Entrance.mine_to_skull_cavern_floor_125, RegionName.skull_cavern_125), + ConnectionData(Entrance.mine_to_skull_cavern_floor_150, RegionName.skull_cavern_150), + ConnectionData(Entrance.mine_to_skull_cavern_floor_175, RegionName.skull_cavern_175), + ConnectionData(Entrance.mine_to_skull_cavern_floor_200, RegionName.skull_cavern_200), + ConnectionData(Entrance.enter_witch_warp_cave, RegionName.witch_warp_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_witch_swamp, RegionName.witch_swamp, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_witch_hut, RegionName.witch_hut, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.witch_warp_to_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_bathhouse_entrance, RegionName.bathhouse_entrance, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_locker_room, RegionName.locker_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_public_bath, RegionName.public_bath, flag=RandomizationFlag.BUILDINGS), + ConnectionData(LogicEntrance.talk_to_mines_dwarf, LogicRegion.mines_dwarf_shop), + + ConnectionData(LogicEntrance.buy_from_traveling_merchant, LogicRegion.traveling_cart), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_sunday, LogicRegion.traveling_cart_sunday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_monday, LogicRegion.traveling_cart_monday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_tuesday, LogicRegion.traveling_cart_tuesday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_wednesday, LogicRegion.traveling_cart_wednesday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_thursday, LogicRegion.traveling_cart_thursday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_friday, LogicRegion.traveling_cart_friday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_saturday, LogicRegion.traveling_cart_saturday), + ConnectionData(LogicEntrance.complete_raccoon_requests, LogicRegion.raccoon_daddy), + ConnectionData(LogicEntrance.fish_in_waterfall, LogicRegion.forest_waterfall), + ConnectionData(LogicEntrance.buy_from_raccoon, LogicRegion.raccoon_shop), + ConnectionData(LogicEntrance.farmhouse_cooking, LogicRegion.kitchen), + ConnectionData(LogicEntrance.watch_queen_of_sauce, LogicRegion.queen_of_sauce), + + ConnectionData(LogicEntrance.grow_spring_crops, LogicRegion.spring_farming), + ConnectionData(LogicEntrance.grow_summer_crops, LogicRegion.summer_farming), + ConnectionData(LogicEntrance.grow_fall_crops, LogicRegion.fall_farming), + ConnectionData(LogicEntrance.grow_winter_crops, LogicRegion.winter_farming), + ConnectionData(LogicEntrance.grow_spring_crops_in_greenhouse, LogicRegion.spring_farming), + ConnectionData(LogicEntrance.grow_summer_crops_in_greenhouse, LogicRegion.summer_farming), + ConnectionData(LogicEntrance.grow_fall_crops_in_greenhouse, LogicRegion.fall_farming), + ConnectionData(LogicEntrance.grow_winter_crops_in_greenhouse, LogicRegion.winter_farming), + ConnectionData(LogicEntrance.grow_indoor_crops_in_greenhouse, LogicRegion.indoor_farming), + ConnectionData(LogicEntrance.grow_summer_fall_crops_in_summer, LogicRegion.summer_or_fall_farming), + ConnectionData(LogicEntrance.grow_summer_fall_crops_in_fall, LogicRegion.summer_or_fall_farming), + + ConnectionData(LogicEntrance.shipping, LogicRegion.shipping), + ConnectionData(LogicEntrance.blacksmith_copper, LogicRegion.blacksmith_copper), + ConnectionData(LogicEntrance.blacksmith_iron, LogicRegion.blacksmith_iron), + ConnectionData(LogicEntrance.blacksmith_gold, LogicRegion.blacksmith_gold), + ConnectionData(LogicEntrance.blacksmith_iridium, LogicRegion.blacksmith_iridium), + ConnectionData(LogicEntrance.fishing, LogicRegion.fishing), + ConnectionData(LogicEntrance.attend_egg_festival, LogicRegion.egg_festival), + ConnectionData(LogicEntrance.attend_desert_festival, LogicRegion.desert_festival), + ConnectionData(LogicEntrance.attend_flower_dance, LogicRegion.flower_dance), + ConnectionData(LogicEntrance.attend_luau, LogicRegion.luau), + ConnectionData(LogicEntrance.attend_trout_derby, LogicRegion.trout_derby), + ConnectionData(LogicEntrance.attend_moonlight_jellies, LogicRegion.moonlight_jellies), + ConnectionData(LogicEntrance.attend_fair, LogicRegion.fair), + ConnectionData(LogicEntrance.attend_spirit_eve, LogicRegion.spirit_eve), + ConnectionData(LogicEntrance.attend_festival_of_ice, LogicRegion.festival_of_ice), + ConnectionData(LogicEntrance.attend_night_market, LogicRegion.night_market), + ConnectionData(LogicEntrance.attend_winter_star, LogicRegion.winter_star), + ConnectionData(LogicEntrance.attend_squidfest, LogicRegion.squidfest), + ConnectionData(LogicEntrance.buy_experience_books, LogicRegion.bookseller_1), + ConnectionData(LogicEntrance.buy_year1_books, LogicRegion.bookseller_2), + ConnectionData(LogicEntrance.buy_year3_books, LogicRegion.bookseller_3), +) + +ginger_island_connections = ( + ConnectionData(Entrance.use_island_obelisk, RegionName.island_south), + ConnectionData(Entrance.use_farm_obelisk, RegionName.farm), + ConnectionData(Entrance.mountain_to_leo_treehouse, RegionName.leo_treehouse, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.fish_shop_to_boat_tunnel, RegionName.boat_tunnel, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.boat_to_ginger_island, RegionName.island_south), + ConnectionData(Entrance.enter_dangerous_skull_cavern, RegionName.dangerous_skull_cavern), + ConnectionData(Entrance.dig_to_dangerous_mines_20, RegionName.dangerous_mines_20), + ConnectionData(Entrance.dig_to_dangerous_mines_60, RegionName.dangerous_mines_60), + ConnectionData(Entrance.dig_to_dangerous_mines_100, RegionName.dangerous_mines_100), + ConnectionData(Entrance.island_south_to_west, RegionName.island_west), + ConnectionData(Entrance.island_south_to_north, RegionName.island_north), + ConnectionData(Entrance.island_south_to_east, RegionName.island_east), + ConnectionData(Entrance.island_south_to_southeast, RegionName.island_south_east), + ConnectionData(Entrance.use_island_resort, RegionName.island_resort), + ConnectionData(Entrance.island_west_to_islandfarmhouse, RegionName.island_farmhouse, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_gourmand_cave, RegionName.gourmand_frog_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_crystals_cave, RegionName.colored_crystals_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_shipwreck, RegionName.shipwreck, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_qi_walnut_room, RegionName.qi_walnut_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_east_to_leo_hut, RegionName.leo_hut, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_east_to_island_shrine, RegionName.island_shrine, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_southeast_to_pirate_cove, RegionName.pirate_cove, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_north_to_field_office, RegionName.field_office, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_north_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.dig_site_to_professor_snail_cave, RegionName.professor_snail_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_north_to_volcano, RegionName.volcano, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.volcano_to_secret_beach, RegionName.volcano_secret_beach, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.talk_to_island_trader, RegionName.island_trader), + ConnectionData(Entrance.climb_to_volcano_5, RegionName.volcano_floor_5), + ConnectionData(Entrance.talk_to_volcano_dwarf, RegionName.volcano_dwarf_shop), + ConnectionData(Entrance.climb_to_volcano_10, RegionName.volcano_floor_10), + ConnectionData(Entrance.parrot_express_jungle_to_docks, RegionName.island_south), + ConnectionData(Entrance.parrot_express_dig_site_to_docks, RegionName.island_south), + ConnectionData(Entrance.parrot_express_volcano_to_docks, RegionName.island_south), + ConnectionData(Entrance.parrot_express_volcano_to_jungle, RegionName.island_west), + ConnectionData(Entrance.parrot_express_docks_to_jungle, RegionName.island_west), + ConnectionData(Entrance.parrot_express_dig_site_to_jungle, RegionName.island_west), + ConnectionData(Entrance.parrot_express_docks_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.parrot_express_volcano_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.parrot_express_jungle_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.parrot_express_dig_site_to_volcano, RegionName.island_north), + ConnectionData(Entrance.parrot_express_docks_to_volcano, RegionName.island_north), + ConnectionData(Entrance.parrot_express_jungle_to_volcano, RegionName.island_north), + ConnectionData(LogicEntrance.grow_spring_crops_on_island, LogicRegion.spring_farming), + ConnectionData(LogicEntrance.grow_summer_crops_on_island, LogicRegion.summer_farming), + ConnectionData(LogicEntrance.grow_fall_crops_on_island, LogicRegion.fall_farming), + ConnectionData(LogicEntrance.grow_winter_crops_on_island, LogicRegion.winter_farming), + ConnectionData(LogicEntrance.grow_indoor_crops_on_island, LogicRegion.indoor_farming), + ConnectionData(LogicEntrance.island_cooking, LogicRegion.kitchen), +) + +connections_without_ginger_island_by_name: Mapping[str, ConnectionData] = MappingProxyType({ + connection.name: connection + for connection in vanilla_connections +}) +regions_without_ginger_island_by_name: Mapping[str, RegionData] = MappingProxyType({ + region.name: region + for region in vanilla_regions +}) + +connections_with_ginger_island_by_name: Mapping[str, ConnectionData] = MappingProxyType({ + connection.name: connection + for connection in vanilla_connections + ginger_island_connections +}) +regions_with_ginger_island_by_name: Mapping[str, RegionData] = MappingProxyType({ + region.name: region + for region in vanilla_regions + ginger_island_regions +}) diff --git a/worlds/stardew_valley/test/TestRegions.py b/worlds/stardew_valley/test/TestRegions.py deleted file mode 100644 index 07e3094fb2e2..000000000000 --- a/worlds/stardew_valley/test/TestRegions.py +++ /dev/null @@ -1,173 +0,0 @@ -import random -import unittest -from typing import Set - -from BaseClasses import get_seed -from .bases import SVTestCase -from .options.utils import fill_dataclass_with_default -from .. import create_content -from ..options import EntranceRandomization, ExcludeGingerIsland, SkillProgression -from ..regions import vanilla_regions, vanilla_connections, randomize_connections, RandomizationFlag, create_final_connections_and_regions -from ..strings.entrance_names import Entrance as EntranceName -from ..strings.region_names import Region as RegionName - -connections_by_name = {connection.name for connection in vanilla_connections} -regions_by_name = {region.name for region in vanilla_regions} - - -class TestRegions(unittest.TestCase): - def test_region_exits_lead_somewhere(self): - for region in vanilla_regions: - with self.subTest(region=region): - for exit in region.exits: - self.assertIn(exit, connections_by_name, - f"{region.name} is leading to {exit} but it does not exist.") - - def test_connection_lead_somewhere(self): - for connection in vanilla_connections: - with self.subTest(connection=connection): - self.assertIn(connection.destination, regions_by_name, - f"{connection.name} is leading to {connection.destination} but it does not exist.") - - -def explore_connections_tree_up_to_blockers(blocked_entrances: Set[str], connections_by_name, regions_by_name): - explored_entrances = set() - explored_regions = set() - entrances_to_explore = set() - current_node_name = "Menu" - current_node = regions_by_name[current_node_name] - entrances_to_explore.update(current_node.exits) - while entrances_to_explore: - current_entrance_name = entrances_to_explore.pop() - current_entrance = connections_by_name[current_entrance_name] - current_node_name = current_entrance.destination - - explored_entrances.add(current_entrance_name) - explored_regions.add(current_node_name) - - if current_entrance_name in blocked_entrances: - continue - - current_node = regions_by_name[current_node_name] - entrances_to_explore.update({entrance for entrance in current_node.exits if entrance not in explored_entrances}) - return explored_regions - - -class TestEntranceRando(SVTestCase): - - def test_entrance_randomization(self): - for option, flag in [(EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), - (EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), - (EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: - sv_options = fill_dataclass_with_default({ - EntranceRandomization.internal_name: option, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false, - SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries, - }) - content = create_content(sv_options) - seed = get_seed() - rand = random.Random(seed) - with self.subTest(flag=flag, msg=f"Seed: {seed}"): - entrances, regions = create_final_connections_and_regions(sv_options) - _, randomized_connections = randomize_connections(rand, sv_options, content, regions, entrances) - - for connection in vanilla_connections: - if flag in connection.flag: - connection_in_randomized = connection.name in randomized_connections - reverse_in_randomized = connection.reverse in randomized_connections - self.assertTrue(connection_in_randomized, f"Connection {connection.name} should be randomized but it is not in the output.") - self.assertTrue(reverse_in_randomized, f"Connection {connection.reverse} should be randomized but it is not in the output.") - - self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), - f"Connections are duplicated in randomization.") - - def test_entrance_randomization_without_island(self): - for option, flag in [(EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), - (EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), - (EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: - - sv_options = fill_dataclass_with_default({ - EntranceRandomization.internal_name: option, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true, - SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries, - }) - content = create_content(sv_options) - seed = get_seed() - rand = random.Random(seed) - with self.subTest(option=option, flag=flag, seed=seed): - entrances, regions = create_final_connections_and_regions(sv_options) - _, randomized_connections = randomize_connections(rand, sv_options, content, regions, entrances) - - for connection in vanilla_connections: - if flag in connection.flag: - if RandomizationFlag.GINGER_ISLAND in connection.flag: - self.assertNotIn(connection.name, randomized_connections, - f"Connection {connection.name} should not be randomized but it is in the output.") - self.assertNotIn(connection.reverse, randomized_connections, - f"Connection {connection.reverse} should not be randomized but it is in the output.") - else: - self.assertIn(connection.name, randomized_connections, - f"Connection {connection.name} should be randomized but it is not in the output.") - self.assertIn(connection.reverse, randomized_connections, - f"Connection {connection.reverse} should be randomized but it is not in the output.") - - self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), - f"Connections are duplicated in randomization.") - - def test_cannot_put_island_access_on_island(self): - sv_options = fill_dataclass_with_default({ - EntranceRandomization.internal_name: EntranceRandomization.option_buildings, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false, - SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries, - }) - content = create_content(sv_options) - - for i in range(0, 100 if self.skip_long_tests else 10000): - seed = get_seed() - rand = random.Random(seed) - with self.subTest(msg=f"Seed: {seed}"): - entrances, regions = create_final_connections_and_regions(sv_options) - randomized_connections, randomized_data = randomize_connections(rand, sv_options, content, regions, entrances) - connections_by_name = {connection.name: connection for connection in randomized_connections} - - blocked_entrances = {EntranceName.use_island_obelisk, EntranceName.boat_to_ginger_island} - required_regions = {RegionName.wizard_tower, RegionName.boat_tunnel} - self.assert_can_reach_any_region_before_blockers(required_regions, blocked_entrances, connections_by_name, regions) - - def assert_can_reach_any_region_before_blockers(self, required_regions, blocked_entrances, connections_by_name, regions_by_name): - explored_regions = explore_connections_tree_up_to_blockers(blocked_entrances, connections_by_name, regions_by_name) - self.assertTrue(any(region in explored_regions for region in required_regions)) - - -class TestEntranceClassifications(SVTestCase): - - def test_non_progression_are_all_accessible_with_empty_inventory(self): - for option, flag in [(EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION)]: - world_options = { - EntranceRandomization.internal_name: option - } - with self.solo_world_sub_test(world_options=world_options, flag=flag) as (multiworld, sv_world): - ap_entrances = {entrance.name: entrance for entrance in multiworld.get_entrances()} - for randomized_entrance in sv_world.randomized_entrances: - if randomized_entrance in ap_entrances: - ap_entrance_origin = ap_entrances[randomized_entrance] - self.assertTrue(ap_entrance_origin.access_rule(multiworld.state)) - if sv_world.randomized_entrances[randomized_entrance] in ap_entrances: - ap_entrance_destination = multiworld.get_entrance(sv_world.randomized_entrances[randomized_entrance], 1) - self.assertTrue(ap_entrance_destination.access_rule(multiworld.state)) - - def test_no_ginger_island_entrances_when_excluded(self): - world_options = { - EntranceRandomization.internal_name: EntranceRandomization.option_disabled, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true - } - with self.solo_world_sub_test(world_options=world_options) as (multiworld, _): - ap_entrances = {entrance.name: entrance for entrance in multiworld.get_entrances()} - entrance_data_by_name = {entrance.name: entrance for entrance in vanilla_connections} - for entrance_name in ap_entrances: - entrance_data = entrance_data_by_name[entrance_name] - with self.subTest(f"{entrance_name}: {entrance_data.flag}"): - self.assertFalse(entrance_data.flag & RandomizationFlag.GINGER_ISLAND) diff --git a/worlds/stardew_valley/test/assertion/rule_assert.py b/worlds/stardew_valley/test/assertion/rule_assert.py index 02362f2d150d..39b69a529f74 100644 --- a/worlds/stardew_valley/test/assertion/rule_assert.py +++ b/worlds/stardew_valley/test/assertion/rule_assert.py @@ -1,7 +1,7 @@ from typing import List from unittest import TestCase -from BaseClasses import CollectionState, Location, Region +from BaseClasses import CollectionState, Location, Region, Entrance from ...stardew_rule import StardewRule, false_, MISSING_ITEM, Reach from ...stardew_rule.rule_explain import explain @@ -79,3 +79,13 @@ def assert_cannot_reach_region(self, region: Region | str, state: CollectionStat except KeyError as e: raise AssertionError(f"Error while checking region {region_name}: {e}" f"\nExplanation: {expl}") + + def assert_can_reach_entrance(self, entrance: Entrance | str, state: CollectionState) -> None: + entrance_name = entrance.name if isinstance(entrance, Entrance) else entrance + expl = explain(Reach(entrance_name, "Entrance", 1), state) + try: + can_reach = state.can_reach_entrance(entrance_name, 1) + self.assertTrue(can_reach, expl) + except KeyError as e: + raise AssertionError(f"Error while checking entrance {entrance_name}: {e}" + f"\nExplanation: {expl}") diff --git a/worlds/stardew_valley/test/bases.py b/worlds/stardew_valley/test/bases.py index affc20cde191..a2852183996d 100644 --- a/worlds/stardew_valley/test/bases.py +++ b/worlds/stardew_valley/test/bases.py @@ -7,7 +7,7 @@ from contextlib import contextmanager from typing import Optional, Dict, Union, Any, List, Iterable -from BaseClasses import get_seed, MultiWorld, Location, Item, CollectionState +from BaseClasses import get_seed, MultiWorld, Location, Item, CollectionState, Entrance from test.bases import WorldTestBase from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld from worlds.AutoWorld import call_all @@ -179,6 +179,11 @@ def assert_cannot_reach_location(self, location: Location | str, state: Collecti state = self.multiworld.state super().assert_cannot_reach_location(location, state) + def assert_can_reach_entrance(self, entrance: Entrance | str, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_can_reach_entrance(entrance, state) + pre_generated_worlds = {} diff --git a/worlds/stardew_valley/test/mods/TestMods.py b/worlds/stardew_valley/test/mods/TestMods.py index be6ce710768d..8cff10b4fc3b 100644 --- a/worlds/stardew_valley/test/mods/TestMods.py +++ b/worlds/stardew_valley/test/mods/TestMods.py @@ -1,17 +1,13 @@ -import random from typing import ClassVar -from BaseClasses import get_seed from test.param import classvar_matrix from ..TestGeneration import get_all_permanent_progression_items from ..assertion import ModAssertMixin, WorldAssertMixin from ..bases import SVTestCase, SVTestBase, solo_multiworld from ..options.presets import allsanity_mods_6_x_x -from ..options.utils import fill_dataclass_with_default -from ... import options, Group, create_content +from ... import options, Group from ...mods.mod_data import ModNames from ...options.options import all_mods -from ...regions import RandomizationFlag, randomize_connections, create_final_connections_and_regions class TestCanGenerateAllsanityWithMods(WorldAssertMixin, ModAssertMixin, SVTestCase): @@ -117,39 +113,6 @@ def test_all_progression_items_except_island_are_added_to_the_pool(self): self.assertIn(progression_item.name, all_created_items) -class TestModEntranceRando(SVTestCase): - - def test_mod_entrance_randomization(self): - for option, flag in [(options.EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (options.EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), - (options.EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), - (options.EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: - sv_options = fill_dataclass_with_default({ - options.EntranceRandomization.internal_name: option, - options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, - options.Mods.internal_name: frozenset(options.Mods.valid_keys) - }) - content = create_content(sv_options) - seed = get_seed() - rand = random.Random(seed) - with self.subTest(option=option, flag=flag, seed=seed): - final_connections, final_regions = create_final_connections_and_regions(sv_options) - - _, randomized_connections = randomize_connections(rand, sv_options, content, final_regions, final_connections) - - for connection_name in final_connections: - connection = final_connections[connection_name] - if flag in connection.flag: - connection_in_randomized = connection_name in randomized_connections - reverse_in_randomized = connection.reverse in randomized_connections - self.assertTrue(connection_in_randomized, f"Connection {connection_name} should be randomized but it is not in the output") - self.assertTrue(reverse_in_randomized, f"Connection {connection.reverse} should be randomized but it is not in the output.") - - self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), - f"Connections are duplicated in randomization.") - - class TestVanillaLogicAlternativeWhenQuestsAreNotRandomized(WorldAssertMixin, SVTestBase): """We often forget to add an alternative rule that works when quests are not randomized. When this happens, some Location are not reachable because they depend on items that are only added to the pool when quests are randomized. diff --git a/worlds/stardew_valley/test/regions/TestEntranceClassifications.py b/worlds/stardew_valley/test/regions/TestEntranceClassifications.py new file mode 100644 index 000000000000..43a7090482b9 --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestEntranceClassifications.py @@ -0,0 +1,36 @@ +from ..bases import SVTestBase +from ... import options +from ...regions.model import RandomizationFlag +from ...regions.regions import create_all_connections + + +class EntranceRandomizationAssertMixin: + + def assert_non_progression_are_all_accessible_with_empty_inventory(self: SVTestBase): + all_connections = create_all_connections(self.world.content.registered_packs) + non_progression_connections = [connection for connection in all_connections.values() if RandomizationFlag.BIT_NON_PROGRESSION in connection.flag] + + for non_progression_connections in non_progression_connections: + with self.subTest(connection=non_progression_connections): + self.assert_can_reach_entrance(non_progression_connections.name) + + +# This test does not actually need to generate with entrance randomization. Entrances rules are the same regardless of the randomization. +class TestVanillaEntranceClassifications(EntranceRandomizationAssertMixin, SVTestBase): + options = { + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false, + options.Mods: frozenset() + } + + def test_non_progression_are_all_accessible_with_empty_inventory(self): + self.assert_non_progression_are_all_accessible_with_empty_inventory() + + +class TestModdedEntranceClassifications(EntranceRandomizationAssertMixin, SVTestBase): + options = { + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false, + options.Mods: frozenset(options.Mods.valid_keys) + } + + def test_non_progression_are_all_accessible_with_empty_inventory(self): + self.assert_non_progression_are_all_accessible_with_empty_inventory() diff --git a/worlds/stardew_valley/test/regions/TestEntranceRandomization.py b/worlds/stardew_valley/test/regions/TestEntranceRandomization.py new file mode 100644 index 000000000000..15c46637ab05 --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestEntranceRandomization.py @@ -0,0 +1,167 @@ +from collections import deque +from collections.abc import Collection +from unittest.mock import patch, Mock + +from BaseClasses import get_seed, MultiWorld, Entrance +from ..assertion import WorldAssertMixin +from ..bases import SVTestCase, solo_multiworld +from ... import options +from ...mods.mod_data import ModNames +from ...options import EntranceRandomization, ExcludeGingerIsland, SkillProgression +from ...options.options import all_mods +from ...regions.entrance_rando import create_entrance_rando_target, prepare_mod_data, connect_regions +from ...regions.model import RegionData, ConnectionData, RandomizationFlag +from ...strings.entrance_names import Entrance as EntranceName +from ...strings.region_names import Region as RegionName + + +class TestEntranceRando(SVTestCase): + + def test_given_connection_matching_randomization_when_connect_regions_then_make_connection_entrance_rando_target(self): + region_data_by_name = { + "Region1": RegionData("Region1", ("randomized_connection", "not_randomized")), + "Region2": RegionData("Region2"), + "Region3": RegionData("Region3"), + } + connection_data_by_name = { + "randomized_connection": ConnectionData("randomized_connection", "Region2", flag=RandomizationFlag.PELICAN_TOWN), + "not_randomized": ConnectionData("not_randomized", "Region2", flag=RandomizationFlag.BUILDINGS), + } + regions_by_name = { + "Region1": Mock(), + "Region2": Mock(), + "Region3": Mock(), + } + player_randomization_flag = RandomizationFlag.BIT_PELICAN_TOWN + + with patch("worlds.stardew_valley.regions.entrance_rando.create_entrance_rando_target") as mock_create_entrance_rando_target: + connect_regions(region_data_by_name, connection_data_by_name, regions_by_name, player_randomization_flag) + + expected_origin, expected_destination = regions_by_name["Region1"], regions_by_name["Region2"] + expected_connection = connection_data_by_name["randomized_connection"] + mock_create_entrance_rando_target.assert_called_once_with(expected_origin, expected_destination, expected_connection) + + def test_when_create_entrance_rando_target_then_create_exit_and_er_target(self): + origin = Mock() + destination = Mock() + connection_data = ConnectionData("origin to destination", "destination") + + create_entrance_rando_target(origin, destination, connection_data) + + origin.create_exit.assert_called_once_with("origin to destination") + destination.create_er_target.assert_called_once_with("destination to origin") + + def test_when_prepare_mod_data_then_swapped_connections_contains_both_directions(self): + placements = Mock(pairings=[("A to B", "C to A"), ("C to D", "A to C")]) + + swapped_connections = prepare_mod_data(placements) + + self.assertEqual({"A to B": "A to C", "C to A": "B to A", "C to D": "C to A", "A to C": "D to C"}, swapped_connections) + + +class TestEntranceRandoCreatesValidWorlds(WorldAssertMixin, SVTestCase): + + # The following tests validate that ER still generates winnable and logically-sane games with given mods. + # Mods that do not interact with entrances are skipped + # Not all ER settings are tested, because 'buildings' is, essentially, a superset of all others + def test_ginger_island_excluded_buildings(self): + world_options = { + options.EntranceRandomization: options.EntranceRandomization.option_buildings, + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_true + } + with solo_multiworld(world_options) as (multi_world, _): + self.assert_basic_checks(multi_world) + + def test_deepwoods_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.deepwoods, options.EntranceRandomization.option_buildings) + + def test_juna_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.juna, options.EntranceRandomization.option_buildings) + + def test_jasper_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.jasper, options.EntranceRandomization.option_buildings) + + def test_alec_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.alec, options.EntranceRandomization.option_buildings) + + def test_yoba_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.yoba, options.EntranceRandomization.option_buildings) + + def test_eugene_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.eugene, options.EntranceRandomization.option_buildings) + + def test_ayeisha_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.ayeisha, options.EntranceRandomization.option_buildings) + + def test_riley_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.riley, options.EntranceRandomization.option_buildings) + + def test_sve_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.sve, options.EntranceRandomization.option_buildings) + + def test_alecto_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.alecto, options.EntranceRandomization.option_buildings) + + def test_lacey_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.lacey, options.EntranceRandomization.option_buildings) + + def test_boarding_house_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.boarding_house, options.EntranceRandomization.option_buildings) + + def test_all_mods_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(all_mods, options.EntranceRandomization.option_buildings) + + def perform_basic_checks_on_mod_with_er(self, mods: str | set[str], er_option: int) -> None: + if isinstance(mods, str): + mods = {mods} + world_options = { + options.EntranceRandomization: er_option, + options.Mods: frozenset(mods), + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false + } + with solo_multiworld(world_options) as (multi_world, _): + self.assert_basic_checks(multi_world) + + +# GER should have this covered, but it's good to have a backup +class TestGingerIslandEntranceRando(SVTestCase): + def test_cannot_put_island_access_on_island(self): + test_options = { + options.EntranceRandomization: EntranceRandomization.option_buildings, + options.ExcludeGingerIsland: ExcludeGingerIsland.option_false, + options.SkillProgression: SkillProgression.option_progressive_with_masteries, + } + + blocked_entrances = {EntranceName.use_island_obelisk, EntranceName.boat_to_ginger_island} + required_regions = {RegionName.wizard_tower, RegionName.boat_tunnel} + + for i in range(0, 10 if self.skip_long_tests else 1000): + seed = get_seed() + with self.solo_world_sub_test(f"Seed: {seed}", world_options=test_options, world_caching=False, seed=seed) as (multiworld, world): + self.assert_can_reach_any_region_before_blockers(required_regions, blocked_entrances, multiworld) + + def assert_can_reach_any_region_before_blockers(self, required_regions: Collection[str], blocked_entrances: Collection[str], multiworld: MultiWorld): + explored_regions = explore_regions_up_to_blockers(blocked_entrances, multiworld) + self.assertTrue(any(region in explored_regions for region in required_regions)) + + +def explore_regions_up_to_blockers(blocked_entrances: Collection[str], multiworld: MultiWorld) -> set[str]: + explored_regions: set[str] = set() + regions_by_name = multiworld.regions.region_cache[1] + regions_to_explore = deque([regions_by_name["Menu"]]) + + while regions_to_explore: + region = regions_to_explore.pop() + + if region.name in explored_regions: + continue + + explored_regions.add(region.name) + + for exit_ in region.exits: + exit_: Entrance + if exit_.name in blocked_entrances: + continue + regions_to_explore.append(exit_.connected_region) + + return explored_regions diff --git a/worlds/stardew_valley/test/regions/TestRandomizationFlag.py b/worlds/stardew_valley/test/regions/TestRandomizationFlag.py new file mode 100644 index 000000000000..6a01ef07e96d --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestRandomizationFlag.py @@ -0,0 +1,88 @@ +import unittest + +from ..options.utils import fill_dataclass_with_default +from ... import create_content, options +from ...regions.entrance_rando import create_player_randomization_flag +from ...regions.model import RandomizationFlag, ConnectionData + + +class TestConnectionData(unittest.TestCase): + + def test_given_entrances_not_randomized_when_is_eligible_for_randomization_then_not_eligible(self): + player_flag = RandomizationFlag.NOT_RANDOMIZED + + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.PELICAN_TOWN) + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertFalse(is_eligible) + + def test_given_pelican_town_connection_when_is_eligible_for_pelican_town_randomization_then_eligible(self): + player_flag = RandomizationFlag.BIT_PELICAN_TOWN + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.PELICAN_TOWN) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertTrue(is_eligible) + + def test_given_pelican_town_connection_when_is_eligible_for_buildings_randomization_then_eligible(self): + player_flag = RandomizationFlag.BIT_BUILDINGS + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.PELICAN_TOWN) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertTrue(is_eligible) + + def test_given_non_progression_connection_when_is_eligible_for_pelican_town_randomization_then_not_eligible(self): + player_flag = RandomizationFlag.BIT_PELICAN_TOWN + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.NON_PROGRESSION) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertFalse(is_eligible) + + def test_given_non_progression_masteries_connection_when_is_eligible_for_non_progression_randomization_then_eligible(self): + player_flag = RandomizationFlag.BIT_NON_PROGRESSION + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.NON_PROGRESSION ^ RandomizationFlag.EXCLUDE_MASTERIES) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertTrue(is_eligible) + + def test_given_non_progression_masteries_connection_when_is_eligible_for_non_progression_without_masteries_randomization_then_not_eligible(self): + player_flag = RandomizationFlag.BIT_NON_PROGRESSION | RandomizationFlag.EXCLUDE_MASTERIES + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.NON_PROGRESSION ^ RandomizationFlag.EXCLUDE_MASTERIES) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertFalse(is_eligible) + + +class TestRandomizationFlag(unittest.TestCase): + + def test_given_entrance_randomization_choice_when_create_player_randomization_flag_then_only_relevant_bit_is_enabled(self): + for entrance_randomization_choice, expected_bit in ( + (options.EntranceRandomization.option_disabled, RandomizationFlag.NOT_RANDOMIZED), + (options.EntranceRandomization.option_pelican_town, RandomizationFlag.BIT_PELICAN_TOWN), + (options.EntranceRandomization.option_non_progression, RandomizationFlag.BIT_NON_PROGRESSION), + (options.EntranceRandomization.option_buildings_without_house, RandomizationFlag.BIT_BUILDINGS), + (options.EntranceRandomization.option_buildings, RandomizationFlag.BIT_BUILDINGS), + (options.EntranceRandomization.option_chaos, RandomizationFlag.BIT_BUILDINGS), + ): + player_options = fill_dataclass_with_default({options.EntranceRandomization: entrance_randomization_choice}) + content = create_content(player_options) + + flag = create_player_randomization_flag(player_options.entrance_randomization, content) + + self.assertEqual(flag, expected_bit) + + def test_given_masteries_not_randomized_when_create_player_randomization_flag_then_exclude_masteries_bit_enabled(self): + for entrance_randomization_choice in set(options.EntranceRandomization.options.values()) ^ {options.EntranceRandomization.option_disabled}: + player_options = fill_dataclass_with_default({ + options.EntranceRandomization: entrance_randomization_choice, + options.SkillProgression: options.SkillProgression.option_progressive + }) + content = create_content(player_options) + + flag = create_player_randomization_flag(player_options.entrance_randomization, content) + + self.assertIn(RandomizationFlag.EXCLUDE_MASTERIES, flag) diff --git a/worlds/stardew_valley/test/regions/TestRegionConnections.py b/worlds/stardew_valley/test/regions/TestRegionConnections.py new file mode 100644 index 000000000000..42a2e36124aa --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestRegionConnections.py @@ -0,0 +1,66 @@ +import unittest + +from ..options.utils import fill_dataclass_with_default +from ... import options +from ...content import create_content +from ...mods.region_data import region_data_by_content_pack +from ...regions import vanilla_data +from ...regions.model import MergeFlag +from ...regions.regions import create_all_regions, create_all_connections + + +class TestVanillaRegionsConnectionsWithGingerIsland(unittest.TestCase): + def test_region_exits_lead_somewhere(self): + for region in vanilla_data.regions_with_ginger_island_by_name.values(): + with self.subTest(region=region): + for exit_ in region.exits: + self.assertIn(exit_, vanilla_data.connections_with_ginger_island_by_name, + f"{region.name} is leading to {exit_} but it does not exist.") + + def test_connection_lead_somewhere(self): + for connection in vanilla_data.connections_with_ginger_island_by_name.values(): + with self.subTest(connection=connection): + self.assertIn(connection.destination, vanilla_data.regions_with_ginger_island_by_name, + f"{connection.name} is leading to {connection.destination} but it does not exist.") + + +class TestVanillaRegionsConnectionsWithoutGingerIsland(unittest.TestCase): + def test_region_exits_lead_somewhere(self): + for region in vanilla_data.regions_without_ginger_island_by_name.values(): + with self.subTest(region=region): + for exit_ in region.exits: + self.assertIn(exit_, vanilla_data.connections_without_ginger_island_by_name, + f"{region.name} is leading to {exit_} but it does not exist.") + + def test_connection_lead_somewhere(self): + for connection in vanilla_data.connections_without_ginger_island_by_name.values(): + with self.subTest(connection=connection): + self.assertIn(connection.destination, vanilla_data.regions_without_ginger_island_by_name, + f"{connection.name} is leading to {connection.destination} but it does not exist.") + + +class TestModsConnections(unittest.TestCase): + options = { + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false, + options.Mods: frozenset(options.Mods.valid_keys) + } + content = create_content(fill_dataclass_with_default(options)) + all_regions_by_name = create_all_regions(content.registered_packs) + all_connections_by_name = create_all_connections(content.registered_packs) + + def test_region_exits_lead_somewhere(self): + for mod_region_data in region_data_by_content_pack.values(): + for region in mod_region_data.regions: + if MergeFlag.REMOVE_EXITS in region.flag: + continue + + with self.subTest(mod=mod_region_data.mod_name, region=region.name): + for exit_ in region.exits: + self.assertIn(exit_, self.all_connections_by_name, f"{region.name} is leading to {exit_} but it does not exist.") + + def test_connection_lead_somewhere(self): + for mod_region_data in region_data_by_content_pack.values(): + for connection in mod_region_data.connections: + with self.subTest(mod=mod_region_data.mod_name, connection=connection.name): + self.assertIn(connection.destination, self.all_regions_by_name, + f"{connection.name} is leading to {connection.destination} but it does not exist.") diff --git a/worlds/stardew_valley/test/regions/__init__.py b/worlds/stardew_valley/test/regions/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 From 47a0dd696f9dd292788be284012e920c1b35067d Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Sat, 24 May 2025 01:28:25 -0400 Subject: [PATCH 098/183] Stardew Valley: Added moss to statue of blessings recipe (#5038) --- worlds/stardew_valley/data/craftable_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/stardew_valley/data/craftable_data.py b/worlds/stardew_valley/data/craftable_data.py index de371b7c3a9b..66466d89b189 100644 --- a/worlds/stardew_valley/data/craftable_data.py +++ b/worlds/stardew_valley/data/craftable_data.py @@ -305,7 +305,7 @@ def create_recipe(name: str, ingredients: Dict[str, int], source: RecipeSource, cookout_kit = skill_recipe(Craftable.cookout_kit, Skill.foraging, 3, {Material.wood: 15, Material.fiber: 10, Material.coal: 3}) tent_kit = skill_recipe(Craftable.tent_kit, Skill.foraging, 8, {Material.hardwood: 10, Material.fiber: 25, ArtisanGood.cloth: 1}) -statue_of_blessings = mastery_recipe(Statue.blessings, Skill.farming, {Material.sap: 999, Material.fiber: 999, Material.stone: 999}) +statue_of_blessings = mastery_recipe(Statue.blessings, Skill.farming, {Material.sap: 999, Material.fiber: 999, Material.stone: 999, Material.moss: 333}) statue_of_dwarf_king = mastery_recipe(Statue.dwarf_king, Skill.mining, {MetalBar.iridium: 20}) heavy_furnace = mastery_recipe(Machine.heavy_furnace, Skill.mining, {Machine.furnace: 2, MetalBar.iron: 3, Material.stone: 50}) mystic_tree_seed = mastery_recipe(TreeSeed.mystic, Skill.foraging, {TreeSeed.acorn: 5, TreeSeed.maple: 5, TreeSeed.pine: 5, TreeSeed.mahogany: 5}) From 704cd97f211a44b3a792f11a906f523da8554627 Mon Sep 17 00:00:00 2001 From: Bryce Wilson Date: Fri, 23 May 2025 22:33:01 -0700 Subject: [PATCH 099/183] BizHawkClient: Fix script to list all cores instead of explicit mapping (#5033) --- data/lua/connector_bizhawk_generic.lua | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/data/lua/connector_bizhawk_generic.lua b/data/lua/connector_bizhawk_generic.lua index c2e8f91c0d97..387ca2c6f3b4 100644 --- a/data/lua/connector_bizhawk_generic.lua +++ b/data/lua/connector_bizhawk_generic.lua @@ -365,18 +365,14 @@ request_handlers = { ["PREFERRED_CORES"] = function (req) local res = {} local preferred_cores = client.getconfig().PreferredCores + local systems_enumerator = preferred_cores.Keys:GetEnumerator() res["type"] = "PREFERRED_CORES_RESPONSE" res["value"] = {} - res["value"]["NES"] = preferred_cores.NES - res["value"]["SNES"] = preferred_cores.SNES - res["value"]["GB"] = preferred_cores.GB - res["value"]["GBC"] = preferred_cores.GBC - res["value"]["DGB"] = preferred_cores.DGB - res["value"]["SGB"] = preferred_cores.SGB - res["value"]["PCE"] = preferred_cores.PCE - res["value"]["PCECD"] = preferred_cores.PCECD - res["value"]["SGX"] = preferred_cores.SGX + + while systems_enumerator:MoveNext() do + res["value"][systems_enumerator.Current] = preferred_cores[systems_enumerator.Current] + end return res end, From e830a6d6f56a5c97603c86599dbd9726aeaaf51b Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Sat, 24 May 2025 09:17:54 -0400 Subject: [PATCH 100/183] TWW: Only add Filler for Excluded Locations Which are Progress Locations (#4993) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/tww/randomizers/ItemPool.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/worlds/tww/randomizers/ItemPool.py b/worlds/tww/randomizers/ItemPool.py index 86c02f393212..679d1939dffe 100644 --- a/worlds/tww/randomizers/ItemPool.py +++ b/worlds/tww/randomizers/ItemPool.py @@ -117,7 +117,8 @@ def get_pool_core(world: "TWWWorld") -> tuple[list[str], list[str]]: world.filler_pool = filler_pool # Add filler items to place into excluded locations. - pool.extend([world.get_filler_item_name() for _ in world.options.exclude_locations]) + excluded_locations = world.progress_locations.intersection(world.options.exclude_locations) + pool.extend([world.get_filler_item_name() for _ in excluded_locations]) # The remaining of items left to place should be the same as the number of non-excluded locations in the world. nonexcluded_locations = [ From 4119763e23f948ccf9f2d2c7658456d33b953eb4 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 24 May 2025 09:35:06 -0400 Subject: [PATCH 101/183] Lingo: Fix The Bearer's Pilgrimage Logic (#5005) --- worlds/lingo/data/LL1.yaml | 94 +++++++++++++++-------- worlds/lingo/data/generated.dat | Bin 149504 -> 149835 bytes worlds/lingo/data/ids.yaml | 8 +- worlds/lingo/datatypes.py | 1 + worlds/lingo/regions.py | 9 ++- worlds/lingo/utils/pickle_static_data.py | 2 + worlds/lingo/utils/validate_config.rb | 2 +- 7 files changed, 75 insertions(+), 41 deletions(-) diff --git a/worlds/lingo/data/LL1.yaml b/worlds/lingo/data/LL1.yaml index 6410ffea3bd4..4c41f3236f62 100644 --- a/worlds/lingo/data/LL1.yaml +++ b/worlds/lingo/data/LL1.yaml @@ -4956,10 +4956,16 @@ Outside The Initiated: room: Art Gallery door: Exit - The Bearer (East): True - The Bearer (North): True - The Bearer (South): True - The Bearer (West): True + The Bearer (East): + static_painting: True + The Bearer (North): + static_painting: True + The Bearer (South): + static_painting: True + The Bearer (West): + - static_painting: True + - room: The Bearer (West) + door: Side Area Shortcut Roof: True panels: Achievement: @@ -5053,7 +5059,8 @@ - MIDDLE The Bearer (East): entrances: - Cross Tower (East): True + Cross Tower (East): + static_painting: True Bearer Side Area: door: Side Area Access Roof: True @@ -5084,7 +5091,8 @@ panel: SPACE The Bearer (North): entrances: - Cross Tower (East): True + Cross Tower (North): + static_painting: True Roof: True panels: SILENT (1): @@ -5128,7 +5136,8 @@ panel: POTS The Bearer (South): entrances: - Cross Tower (North): True + Cross Tower (South): + static_painting: True Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5162,7 +5171,10 @@ panel: SILENT (1) The Bearer (West): entrances: - Cross Tower (West): True + Cross Tower (West): + static_painting: True + The Bearer: + door: Side Area Shortcut Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5235,6 +5247,7 @@ The Bearer: room: The Bearer door: East Entrance + static_painting: True Roof: True panels: WINTER: @@ -5250,6 +5263,7 @@ The Bearer (East): room: The Bearer (East) door: North Entrance + static_painting: True Roof: True panels: NORTH: @@ -5270,6 +5284,7 @@ The Bearer (North): room: The Bearer (North) door: South Entrance + static_painting: True panels: FIRE: id: Cross Room/Panel_fire_fire @@ -5284,6 +5299,7 @@ Bearer Side Area: room: Bearer Side Area door: West Entrance + static_painting: True Roof: True panels: DIAMONDS: @@ -7108,6 +7124,8 @@ entrances: Orange Tower Third Floor: warp: True + Art Gallery (First Floor): + warp: True Art Gallery (Second Floor): warp: True Art Gallery (Third Floor): @@ -7125,22 +7143,6 @@ required_door: room: Number Hunt door: Eights - EON: - id: Painting Room/Panel_eon_one - colors: yellow - tag: midyellow - TRUSTWORTHY: - id: Painting Room/Panel_to_two - colors: red - tag: midred - FREE: - id: Painting Room/Panel_free_three - colors: purple - tag: midpurp - OUR: - id: Painting Room/Panel_our_four - colors: blue - tag: midblue ORDER: id: Painting Room/Panel_order_onepathmanyturns tag: forbid @@ -7159,15 +7161,8 @@ - scenery_painting_2c skip_location: True panels: - - EON - First Floor Puzzles: - skip_item: True - location_name: Art Gallery - First Floor Puzzles - panels: - - EON - - TRUSTWORTHY - - FREE - - OUR + - room: Art Gallery (First Floor) + panel: EON Third Floor: painting_id: - scenery_painting_3b @@ -7227,11 +7222,42 @@ - Third Floor - Fourth Floor - Fifth Floor + Art Gallery (First Floor): + entrances: + Art Gallery: + static_painting: True + panels: + EON: + id: Painting Room/Panel_eon_one + colors: yellow + tag: midyellow + TRUSTWORTHY: + id: Painting Room/Panel_to_two + colors: red + tag: midred + FREE: + id: Painting Room/Panel_free_three + colors: purple + tag: midpurp + OUR: + id: Painting Room/Panel_our_four + colors: blue + tag: midblue + doors: + Puzzles: + skip_item: True + location_name: Art Gallery - First Floor Puzzles + panels: + - EON + - TRUSTWORTHY + - FREE + - OUR Art Gallery (Second Floor): entrances: Art Gallery: room: Art Gallery door: Second Floor + static_painting: True panels: HOUSE: id: Painting Room/Panel_house_neighborhood @@ -7263,6 +7289,7 @@ Art Gallery: room: Art Gallery door: Third Floor + static_painting: True panels: AN: id: Painting Room/Panel_an_many @@ -7294,6 +7321,7 @@ Art Gallery: room: Art Gallery door: Fourth Floor + static_painting: True panels: URNS: id: Painting Room/Panel_urns_turns diff --git a/worlds/lingo/data/generated.dat b/worlds/lingo/data/generated.dat index 14f5570db1d17d881dcefbed05323ac89b10a701..f5eb3e069927f30aa069594bd3a98e6caa17e001 100644 GIT binary patch delta 31001 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 delta 30985 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 None: regions[pilgrimage_region_name] = Region(pilgrimage_region_name, world.player, world.multiworld) # Connect all created regions now that they exist. - allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS + allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS | \ + EntranceType.STATIC_PAINTING if not painting_shuffle: # Don't use the vanilla painting connections if we are shuffling paintings. @@ -156,11 +157,11 @@ def create_regions(world: "LingoWorld") -> None: regions[from_room].connect(regions[to_room], f"Pilgrimage Part {i+1}") else: connect_entrance(regions, regions["Starting Room"], regions["Pilgrim Antechamber"], "Sun Painting", - RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.PAINTING, False, world) + RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.STATIC_PAINTING, False, world) if early_color_hallways: connect_entrance(regions, regions["Starting Room"], regions["Color Hallways"], "Early Color Hallways", - None, EntranceType.PAINTING, False, world) + None, EntranceType.STATIC_PAINTING, False, world) if painting_shuffle: for warp_enter, warp_exit in world.player_logic.painting_mapping.items(): diff --git a/worlds/lingo/utils/pickle_static_data.py b/worlds/lingo/utils/pickle_static_data.py index 740e129bcb6c..7f39b798367e 100644 --- a/worlds/lingo/utils/pickle_static_data.py +++ b/worlds/lingo/utils/pickle_static_data.py @@ -138,6 +138,8 @@ def process_single_entrance(source_room: str, room_name: str, door_obj) -> RoomE entrance_type = EntranceType.WARP elif source_room == "Crossroads" and room_name == "Roof": entrance_type = EntranceType.CROSSROADS_ROOF_ACCESS + elif "static_painting" in door_obj and door_obj["static_painting"]: + entrance_type = EntranceType.STATIC_PAINTING if "painting" in door_obj and door_obj["painting"]: PAINTING_EXIT_ROOMS.add(room_name) diff --git a/worlds/lingo/utils/validate_config.rb b/worlds/lingo/utils/validate_config.rb index 2a765fbcad00..e2704226849f 100644 --- a/worlds/lingo/utils/validate_config.rb +++ b/worlds/lingo/utils/validate_config.rb @@ -2,7 +2,7 @@ # the file are consistent. It also checks that the panel and door IDs mentioned # all exist in the map file. # -# Usage: validate_config.rb [config file] [map file] +# Usage: validate_config.rb [config file] [ids path] [map file] require 'set' require 'yaml' From eba757d2cd468182f4d0500ab87c45d379b225d2 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Sat, 24 May 2025 23:02:27 +0200 Subject: [PATCH 102/183] Raft: Implement get_filler_item_name and refactor filler item code a bit (#4782) * refactor filler item creation for Raft, implement get_filler_item_name * wrong indent * Update worlds/raft/__init__.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/raft/__init__.py | 112 +++++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 47 deletions(-) diff --git a/worlds/raft/__init__.py b/worlds/raft/__init__.py index 3e33b417c04b..74ab9291b26e 100644 --- a/worlds/raft/__init__.py +++ b/worlds/raft/__init__.py @@ -40,6 +40,8 @@ class RaftWorld(World): options_dataclass = RaftOptions options: RaftOptions + extraItemNamePool: list[str] | None = None + required_client_version = (0, 3, 4) def create_items(self): @@ -52,52 +54,52 @@ def create_items(self): pool = [] frequencyItems = [] for item in item_table: - raft_item = self.create_item_replaceAsNecessary(item["name"]) + raft_item = self.create_item(self.replace_item_name_as_necessary(item["name"])) if isFillingFrequencies and "Frequency" in item["name"]: frequencyItems.append(raft_item) else: pool.append(raft_item) - extraItemNamePool = [] + self.extraItemNamePool = [] extras = len(location_table) - len(item_table) - 1 # Victory takes up 1 unaccounted-for slot - if extras > 0: - if (self.options.filler_item_types != self.options.filler_item_types.option_duplicates): # Use resource packs - for packItem in resourcePackItems: - for i in range(minimumResourcePackAmount, maximumResourcePackAmount + 1): - extraItemNamePool.append(createResourcePackName(i, packItem)) - - if self.options.filler_item_types != self.options.filler_item_types.option_resource_packs: # Use duplicate items - dupeItemPool = item_table.copy() - # Remove frequencies if necessary - if self.options.island_frequency_locations != self.options.island_frequency_locations.option_anywhere: # Not completely random locations - # If we let frequencies stay in with progressive-frequencies, the progressive-frequency item - # will be included 7 times. This is a massive flood of progressive-frequency items, so we - # instead add progressive-frequency as its own item a smaller amount of times to prevent - # flooding the duplicate item pool with them. - if self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive: - for _ in range(2): - # Progressives are not in item_pool, need to create faux item for duplicate item pool - # This can still be filtered out later by duplicate_items setting - dupeItemPool.append({ "name": "progressive-frequency", "progression": True }) # Progressive frequencies need to be included - # Always remove non-progressive Frequency items - dupeItemPool = (itm for itm in dupeItemPool if "Frequency" not in itm["name"]) - - # Remove progression or non-progression items if necessary - if (self.options.duplicate_items == self.options.duplicate_items.option_progression): # Progression only - dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == True) - elif (self.options.duplicate_items == self.options.duplicate_items.option_non_progression): # Non-progression only - dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == False) - - dupeItemPool = list(dupeItemPool) - # Finally, add items as necessary - if len(dupeItemPool) > 0: - for item in dupeItemPool: - extraItemNamePool.append(item["name"]) + + if (self.options.filler_item_types != self.options.filler_item_types.option_duplicates): # Use resource packs + for packItem in resourcePackItems: + for i in range(minimumResourcePackAmount, maximumResourcePackAmount + 1): + self.extraItemNamePool.append(createResourcePackName(i, packItem)) + + if self.options.filler_item_types != self.options.filler_item_types.option_resource_packs: # Use duplicate items + dupeItemPool = item_table.copy() + # Remove frequencies if necessary + if self.options.island_frequency_locations != self.options.island_frequency_locations.option_anywhere: # Not completely random locations + # If we let frequencies stay in with progressive-frequencies, the progressive-frequency item + # will be included 7 times. This is a massive flood of progressive-frequency items, so we + # instead add progressive-frequency as its own item a smaller amount of times to prevent + # flooding the duplicate item pool with them. + if self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive: + for _ in range(2): + # Progressives are not in item_pool, need to create faux item for duplicate item pool + # This can still be filtered out later by duplicate_items setting + dupeItemPool.append({ "name": "progressive-frequency", "progression": True }) # Progressive frequencies need to be included + # Always remove non-progressive Frequency items + dupeItemPool = (itm for itm in dupeItemPool if "Frequency" not in itm["name"]) + + # Remove progression or non-progression items if necessary + if (self.options.duplicate_items == self.options.duplicate_items.option_progression): # Progression only + dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == True) + elif (self.options.duplicate_items == self.options.duplicate_items.option_non_progression): # Non-progression only + dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == False) + + dupeItemPool = list(dupeItemPool) + # Finally, add items as necessary + for item in dupeItemPool: + self.extraItemNamePool.append(self.replace_item_name_as_necessary(item)) - if (len(extraItemNamePool) > 0): - for randomItem in self.random.choices(extraItemNamePool, k=extras): - raft_item = self.create_item_replaceAsNecessary(randomItem) - pool.append(raft_item) + assert self.extraItemNamePool, f"Don't know what extra items to create for {self.player_name}." + + for randomItem in self.random.choices(self.extraItemNamePool, k=extras): + raft_item = self.create_item(randomItem) + pool.append(raft_item) self.multiworld.itempool += pool @@ -108,19 +110,35 @@ def create_items(self): if frequencyItems: self.place_frequencyItems(frequencyItems) + def get_filler_item_name(self) -> str: + # A normal Raft world will have an extraItemNamePool defined after create_items. + if self.extraItemNamePool: + return self.random.choice(self.extraItemNamePool) + + # If this is a "fake" world, e.g. item links with link replacement: Resource packs are always be safe to create + minRPSpecified = self.options.minimum_resource_pack_amount.value + maxRPSpecified = self.options.maximum_resource_pack_amount.value + minimumResourcePackAmount = min(minRPSpecified, maxRPSpecified) + maximumResourcePackAmount = max(minRPSpecified, maxRPSpecified) + resource_amount = self.random.randint(minimumResourcePackAmount, maximumResourcePackAmount) + resource_type = self.random.choice(resourcePackItems) + return createResourcePackName(resource_amount, resource_type) + def set_rules(self): set_rules(self.multiworld, self.player) def create_regions(self): create_regions(self.multiworld, self.player) - - def create_item_replaceAsNecessary(self, name: str) -> Item: - isFrequency = "Frequency" in name - shouldUseProgressive = bool((isFrequency and self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive) - or (not isFrequency and self.options.progressive_items)) - if shouldUseProgressive and name in progressive_table: - name = progressive_table[name] - return self.create_item(name) + + def replace_item_name_as_necessary(self, name: str) -> str: + if name not in progressive_table: + return name + if "Frequency" in name: + if self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive: + return progressive_table[name] + elif self.options.progressive_items: + return progressive_table[name] + return name def create_item(self, name: str) -> Item: item = lookup_name_to_item[name] From e7545cbc28d41e781a996a9fbe28dcf4c683174c Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Sat, 24 May 2025 17:59:55 -0400 Subject: [PATCH 103/183] SDV: Fixed Region for two Parrot Locations (#5042) --- worlds/stardew_valley/data/locations.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/stardew_valley/data/locations.csv b/worlds/stardew_valley/data/locations.csv index 66a9157b3437..2829a1252240 100644 --- a/worlds/stardew_valley/data/locations.csv +++ b/worlds/stardew_valley/data/locations.csv @@ -1129,8 +1129,8 @@ id,region,name,tags,mod_name 2204,Leo's Hut,Leo's Parrot,"GINGER_ISLAND,WALNUT_PURCHASE", 2205,Island South,Island West Turtle,"GINGER_ISLAND,WALNUT_PURCHASE", 2206,Island West,Island Farmhouse,"GINGER_ISLAND,WALNUT_PURCHASE", -2207,Island Farmhouse,Island Mailbox,"GINGER_ISLAND,WALNUT_PURCHASE", -2208,Island Farmhouse,Farm Obelisk,"GINGER_ISLAND,WALNUT_PURCHASE", +2207,Island West,Island Mailbox,"GINGER_ISLAND,WALNUT_PURCHASE", +2208,Island West,Farm Obelisk,"GINGER_ISLAND,WALNUT_PURCHASE", 2209,Island North,Dig Site Bridge,"GINGER_ISLAND,WALNUT_PURCHASE", 2210,Island North,Island Trader,"GINGER_ISLAND,WALNUT_PURCHASE", 2211,Volcano Entrance,Volcano Bridge,"GINGER_ISLAND,WALNUT_PURCHASE", From f327ab30a653acdd56376f53ee54577c9e0e06ed Mon Sep 17 00:00:00 2001 From: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com> Date: Sun, 25 May 2025 03:20:25 -0600 Subject: [PATCH 104/183] CV64: Allow Holding Z to Use the Regular Shimmy Speed (#4730) * Add the shimmy modifier hack. * Update the Increase Shimmy Speed option description. --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/cv64/data/patches.py | 15 +++++++++++++++ worlds/cv64/options.py | 1 + worlds/cv64/rom.py | 5 +++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/worlds/cv64/data/patches.py b/worlds/cv64/data/patches.py index 6ef4eafb67d3..4a964612f03e 100644 --- a/worlds/cv64/data/patches.py +++ b/worlds/cv64/data/patches.py @@ -2893,3 +2893,18 @@ 0x25291CB8, # ADDIU T1, T1, 0x1CB8 0x01200008 # JR T1 ] + +shimmy_speed_modifier = [ + # Increases the player's speed while shimmying as long as they are not holding down Z. If they are holding Z, it + # will be the normal speed, allowing it to still be used to set up any tricks that might require the normal speed + # (like Left Tower Skip). + 0x3C088038, # LUI T0, 0x8038 + 0x91087D7E, # LBU T0, 0x7D7E (T0) + 0x31090020, # ANDI T1, T0, 0x0020 + 0x3C0A800A, # LUI T2, 0x800A + 0x240B005A, # ADDIU T3, R0, 0x005A + 0x55200001, # BNEZL T1, [forward 0x01] + 0x240B0032, # ADDIU T3, R0, 0x0032 + 0xA14B3641, # SB T3, 0x3641 (T2) + 0x0800B7C3 # J 0x8002DF0C +] diff --git a/worlds/cv64/options.py b/worlds/cv64/options.py index 07e86347bda6..da1e1aba9440 100644 --- a/worlds/cv64/options.py +++ b/worlds/cv64/options.py @@ -424,6 +424,7 @@ class PantherDash(Choice): class IncreaseShimmySpeed(Toggle): """ Increases the speed at which characters shimmy left and right while hanging on ledges. + Hold Z to use the regular speed in case it's needed to do something. """ display_name = "Increase Shimmy Speed" diff --git a/worlds/cv64/rom.py b/worlds/cv64/rom.py index 1833c7812bc3..830bed27796e 100644 --- a/worlds/cv64/rom.py +++ b/worlds/cv64/rom.py @@ -607,9 +607,10 @@ def apply_patches(caller: APProcedurePatch, rom: bytes, options_file: str) -> by rom_data.write_int32(0xAA530, 0x080FF880) # J 0x803FE200 rom_data.write_int32s(0xBFE200, patches.coffin_cutscene_skipper) - # Increase shimmy speed + # Shimmy speed increase hack if options["increase_shimmy_speed"]: - rom_data.write_byte(0xA4241, 0x5A) + rom_data.write_int32(0x97EB4, 0x803FE9F0) + rom_data.write_int32s(0xBFE9F0, patches.shimmy_speed_modifier) # Disable landing fall damage if options["fall_guard"]: From 32487137e81d23139820aa2a6d3fd86d6ac104f5 Mon Sep 17 00:00:00 2001 From: FlitPix <8645405+FlitPix@users.noreply.github.com> Date: Sun, 25 May 2025 17:17:30 -0400 Subject: [PATCH 105/183] Core: Add descriptions to Components (#4849) * Add descriptions to components * Adhere to style guide * Tweak BHC wording * Trim Open Patch description * Update text client description for consistency Co-authored-by: Scipio Wright * Remove newlines --------- Co-authored-by: Scipio Wright --- Launcher.py | 21 ++++++++++++++------- worlds/LauncherComponents.py | 12 ++++++++---- worlds/_bizhawk/client.py | 3 ++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/Launcher.py b/Launcher.py index e9751f2c2350..88e2070e9c4c 100644 --- a/Launcher.py +++ b/Launcher.py @@ -104,14 +104,21 @@ def update_settings(): components.extend([ # Functions - Component("Open host.yaml", func=open_host_yaml), - Component("Open Patch", func=open_patch), - Component("Generate Template Options", func=generate_yamls), - Component("Archipelago Website", func=lambda: webbrowser.open("https://archipelago.gg/")), - Component("Discord Server", icon="discord", func=lambda: webbrowser.open("https://discord.gg/8Z65BR2")), + Component("Open host.yaml", func=open_host_yaml, + description="Open the host.yaml file to change settings for generation, games, and more."), + Component("Open Patch", func=open_patch, + description="Open a patch file, downloaded from the room page or provided by the host."), + Component("Generate Template Options", func=generate_yamls, + description="Generate template YAMLs for currently installed games."), + Component("Archipelago Website", func=lambda: webbrowser.open("https://archipelago.gg/"), + description="Open archipelago.gg in your browser."), + Component("Discord Server", icon="discord", func=lambda: webbrowser.open("https://discord.gg/8Z65BR2"), + description="Join the Discord server to play public multiworlds, report issues, or just chat!"), Component("Unrated/18+ Discord Server", icon="discord", - func=lambda: webbrowser.open("https://discord.gg/fqvNCCRsu4")), - Component("Browse Files", func=browse_files), + func=lambda: webbrowser.open("https://discord.gg/fqvNCCRsu4"), + description="Find unrated and 18+ games in the After Dark Discord server."), + Component("Browse Files", func=browse_files, + description="Open the Archipelago installation folder in your file browser."), ]) diff --git a/worlds/LauncherComponents.py b/worlds/LauncherComponents.py index 2bd96369313e..e650889a7377 100644 --- a/worlds/LauncherComponents.py +++ b/worlds/LauncherComponents.py @@ -210,10 +210,14 @@ def install_apworld(apworld_path: str = "") -> None: Component('Launcher', 'Launcher', component_type=Type.HIDDEN), # Core Component('Host', 'MultiServer', 'ArchipelagoServer', cli=True, - file_identifier=SuffixIdentifier('.archipelago', '.zip')), - Component('Generate', 'Generate', cli=True), - Component("Install APWorld", func=install_apworld, file_identifier=SuffixIdentifier(".apworld")), - Component('Text Client', 'CommonClient', 'ArchipelagoTextClient', func=launch_textclient), + file_identifier=SuffixIdentifier('.archipelago', '.zip'), + description="Host a generated multiworld on your computer."), + Component('Generate', 'Generate', cli=True, + description="Generate a multiworld with the YAMLs in the players folder."), + Component("Install APWorld", func=install_apworld, file_identifier=SuffixIdentifier(".apworld"), + description="Install an APWorld to play games not included with Archipelago by default."), + Component('Text Client', 'CommonClient', 'ArchipelagoTextClient', func=launch_textclient, + description="Connect to a multiworld using the text client."), Component('Links Awakening DX Client', 'LinksAwakeningClient', file_identifier=SuffixIdentifier('.apladx')), Component('LttP Adjuster', 'LttPAdjuster'), diff --git a/worlds/_bizhawk/client.py b/worlds/_bizhawk/client.py index 16a8325a10f7..fe8e97e65cda 100644 --- a/worlds/_bizhawk/client.py +++ b/worlds/_bizhawk/client.py @@ -19,7 +19,8 @@ def launch_client(*args) -> None: component = Component("BizHawk Client", "BizHawkClient", component_type=Type.CLIENT, func=launch_client, - file_identifier=SuffixIdentifier()) + file_identifier=SuffixIdentifier(), + description="Open the BizHawk client, to play games using the Bizhawk emulator.") components.append(component) From 002202ff5fa9ced9fd100fc394f22323cc5efe73 Mon Sep 17 00:00:00 2001 From: ScootyPuffJr1 <77215594+ScootyPuffJr1@users.noreply.github.com> Date: Mon, 26 May 2025 03:25:39 -0400 Subject: [PATCH 106/183] Update OOT Guides (#5041) * Update OOT Guides * Minor update per review --- worlds/oot/docs/setup_de.md | 4 ++-- worlds/oot/docs/setup_en.md | 4 ++-- worlds/oot/docs/setup_fr.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/worlds/oot/docs/setup_de.md b/worlds/oot/docs/setup_de.md index 92c3150a7d2f..c35dd2769f1a 100644 --- a/worlds/oot/docs/setup_de.md +++ b/worlds/oot/docs/setup_de.md @@ -7,13 +7,13 @@ Da wir BizHawk benutzen, gilt diese Anleitung nur für Windows und Linux. ## Benötigte Software - BizHawk: [BizHawk Veröffentlichungen von TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) - - Version 2.3.1 und später werden unterstützt. Version 2.9 ist empfohlen. + - Version 2.3.1 und später werden unterstützt. Version 2.10 ist empfohlen. - Detailierte Installtionsanweisungen für BizHawk können über den obrigen Link gefunden werden. - Windows-Benutzer müssen die Prerequisiten installiert haben. Diese können ebenfalls über den obrigen Link gefunden werden. - Der integrierte Archipelago-Client, welcher [hier](https://github.com/ArchipelagoMW/Archipelago/releases) installiert werden kann. -- Eine `Ocarina of Time v1.0 US(?) ROM`. (Nicht aus Europa und keine Master-Quest oder Debug-Rom!) +- Eine `Ocarina of Time v1.0 US ROM`. (Nicht aus Europa und keine Master-Quest oder Debug-Rom!) ## Konfigurieren von BizHawk diff --git a/worlds/oot/docs/setup_en.md b/worlds/oot/docs/setup_en.md index 553f1820c3ea..31b7137bd8b1 100644 --- a/worlds/oot/docs/setup_en.md +++ b/worlds/oot/docs/setup_en.md @@ -7,11 +7,11 @@ As we are using BizHawk, this guide is only applicable to Windows and Linux syst ## Required Software - BizHawk: [BizHawk Releases from TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) - - Version 2.3.1 and later are supported. Version 2.7 is recommended for stability. + - Version 2.3.1 and later are supported. Version 2.10 is recommended for stability. - Detailed installation instructions for BizHawk can be found at the above link. - Windows users must run the prereq installer first, which can also be found at the above link. - The built-in Archipelago client, which can be installed [here](https://github.com/ArchipelagoMW/Archipelago/releases). -- An Ocarina of Time v1.0 ROM. +- A US Ocarina of Time v1.0 ROM. ## Configuring BizHawk diff --git a/worlds/oot/docs/setup_fr.md b/worlds/oot/docs/setup_fr.md index 40b0e8f571df..eb2e97384afa 100644 --- a/worlds/oot/docs/setup_fr.md +++ b/worlds/oot/docs/setup_fr.md @@ -7,12 +7,12 @@ Comme nous utilisons BizHawk, ce guide s'applique uniquement aux systèmes Windo ## Logiciel requis - BizHawk : [Sorties BizHawk de TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) - - Les versions 2.3.1 et ultérieures sont prises en charge. La version 2.7 est recommandée pour des raisons de stabilité. + - Les versions 2.3.1 et ultérieures sont prises en charge. La version 2.10 est recommandée pour des raisons de stabilité. - Des instructions d'installation détaillées pour BizHawk peuvent être trouvées sur le lien ci-dessus. - Les utilisateurs Windows doivent d'abord exécuter le programme d'installation des prérequis, qui peut également être trouvé sur le lien ci-dessus. - Le client Archipelago intégré, qui peut être installé [ici](https://github.com/ArchipelagoMW/Archipelago/releases) (sélectionnez « Ocarina of Time Client » lors de l'installation). -- Une ROM Ocarina of Time v1.0. +- Un fichier ROM v1.0 US d'Ocarina of Time. ## Configuration de BizHawk From 20ca7e71c765899007756490669b041878cc4e55 Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Tue, 27 May 2025 01:57:20 -0400 Subject: [PATCH 107/183] TWW: Update patch class (#5046) --- worlds/tww/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/tww/__init__.py b/worlds/tww/__init__.py index 6b6c3ca33a34..918d68478f32 100644 --- a/worlds/tww/__init__.py +++ b/worlds/tww/__init__.py @@ -11,7 +11,7 @@ from BaseClasses import MultiWorld, Region, Tutorial from Options import Toggle from worlds.AutoWorld import WebWorld, World -from worlds.Files import APContainer, AutoPatchRegister +from worlds.Files import APPlayerContainer, AutoPatchRegister from worlds.generic.Rules import add_item_rule from worlds.LauncherComponents import Component, SuffixIdentifier, Type, components, icon_paths, launch_subprocess @@ -51,7 +51,7 @@ def run_client() -> None: icon_paths["The Wind Waker"] = "ap:worlds.tww/assets/icon.png" -class TWWContainer(APContainer, metaclass=AutoPatchRegister): +class TWWContainer(APPlayerContainer, metaclass=AutoPatchRegister): """ This class defines the container file for The Wind Waker. """ From 19a21099ed11fa0fb92fa46606e62a8ac8dbdd43 Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Tue, 27 May 2025 16:21:43 +0000 Subject: [PATCH 108/183] Webhost: update Flask to 3.1.1 (#5052) --- WebHostLib/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebHostLib/requirements.txt b/WebHostLib/requirements.txt index a9cd33dd6d4d..4e6bf25df038 100644 --- a/WebHostLib/requirements.txt +++ b/WebHostLib/requirements.txt @@ -1,4 +1,4 @@ -flask>=3.1.0 +flask>=3.1.1 werkzeug>=3.1.3 pony>=0.7.19 waitress>=3.0.2 From fcb3efee01b2bdad2d29e099e8de9e19c85e95ad Mon Sep 17 00:00:00 2001 From: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com> Date: Wed, 28 May 2025 08:47:24 -0600 Subject: [PATCH 109/183] CVCotM: Add Nerf Roc Wing to Slot Data and HoD Max Ups to `other_game_item_appearances` (#5051) --- worlds/cvcotm/__init__.py | 3 ++- worlds/cvcotm/aesthetics.py | 8 +++++++- worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md | 2 +- worlds/cvcotm/docs/setup_en.md | 4 ++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/worlds/cvcotm/__init__.py b/worlds/cvcotm/__init__.py index 0f5077e7098a..a2d52b3ecc41 100644 --- a/worlds/cvcotm/__init__.py +++ b/worlds/cvcotm/__init__.py @@ -211,7 +211,8 @@ def fill_slot_data(self) -> dict: "ignore_cleansing": self.options.ignore_cleansing.value, "skip_tutorials": self.options.skip_tutorials.value, "required_last_keys": self.required_last_keys, - "completion_goal": self.options.completion_goal.value} + "completion_goal": self.options.completion_goal.value, + "nerf_roc_wing": self.options.nerf_roc_wing.value} def get_filler_item_name(self) -> str: return self.random.choice(FILLER_ITEM_NAMES) diff --git a/worlds/cvcotm/aesthetics.py b/worlds/cvcotm/aesthetics.py index d1668b1db18d..d52165d076a1 100644 --- a/worlds/cvcotm/aesthetics.py +++ b/worlds/cvcotm/aesthetics.py @@ -48,11 +48,17 @@ class OtherGameAppearancesInfo(TypedDict): other_game_item_appearances: Dict[str, Dict[str, OtherGameAppearancesInfo]] = { - # NOTE: Symphony of the Night is currently an unsupported world not in main. + # NOTE: Symphony of the Night and Harmony of Dissonance are custom worlds that are not core verified. "Symphony of the Night": {"Life Vessel": {"type": 0xE4, "appearance": 0x01}, "Heart Vessel": {"type": 0xE4, "appearance": 0x00}}, + + "Castlevania - Harmony of Dissonance": {"Life Max Up": {"type": 0xE4, + "appearance": 0x01}, + "Heart Max Up": {"type": 0xE4, + "appearance": 0x00}}, + "Timespinner": {"Max HP": {"type": 0xE4, "appearance": 0x01}, "Max Aura": {"type": 0xE4, diff --git a/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md b/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md index 695c5f0ff9c8..611a1a376e2a 100644 --- a/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md +++ b/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md @@ -3,7 +3,7 @@ ## Quick Links - [Setup](/tutorial/Castlevania%20-%20Circle%20of%20the%20Moon/setup/en) - [Options Page](/games/Castlevania%20-%20Circle%20of%20the%20Moon/player-options) -- [PopTracker Pack](https://github.com/sassyvania/Circle-of-the-Moon-Rando-AP-Map-Tracker-/releases/latest) +- [PopTracker Pack](https://github.com/BowserCrusher/Circle-of-the-Moon-AP-Tracker/releases/latest) - [Repo for the original, standalone CotMR](https://github.com/calm-palm/cotm-randomizer) - [Web version of the above randomizer](https://rando.circleofthemoon.com/) - [A more in-depth guide to CotMR's nuances](https://docs.google.com/document/d/1uot4BD9XW7A--A8ecgoY8mLK_vSoQRpY5XCkzgas87c/view?usp=sharing) diff --git a/worlds/cvcotm/docs/setup_en.md b/worlds/cvcotm/docs/setup_en.md index 459e0d6afb97..4c34dcb836ef 100644 --- a/worlds/cvcotm/docs/setup_en.md +++ b/worlds/cvcotm/docs/setup_en.md @@ -22,7 +22,7 @@ clear it. ## Optional Software -- [Castlevania: Circle of the Moon AP Tracker](https://github.com/sassyvania/Circle-of-the-Moon-Rando-AP-Map-Tracker-/releases/latest), for use with +- [Castlevania: Circle of the Moon AP Tracker](https://github.com/BowserCrusher/Circle-of-the-Moon-AP-Tracker/releases/latest), for use with [PopTracker](https://github.com/black-sliver/PopTracker/releases). ## Generating and Patching a Game @@ -64,7 +64,7 @@ perfectly safe to make progress offline; everything will re-sync when you reconn Castlevania: Circle of the Moon has a fully functional map tracker that supports auto-tracking. -1. Download [Castlevania: Circle of the Moon AP Tracker](https://github.com/sassyvania/Circle-of-the-Moon-Rando-AP-Map-Tracker-/releases/latest) and +1. Download [Castlevania: Circle of the Moon AP Tracker](https://github.com/BowserCrusher/Circle-of-the-Moon-AP-Tracker/releases/latest) and [PopTracker](https://github.com/black-sliver/PopTracker/releases). 2. Put the tracker pack into `packs/` in your PopTracker install. 3. Open PopTracker, and load the Castlevania: Circle of the Moon pack. From fde203379d9a844da8cea2bd620a0b48d9765429 Mon Sep 17 00:00:00 2001 From: Ehseezed <97066152+Ehseezed@users.noreply.github.com> Date: Wed, 28 May 2025 14:04:57 -0500 Subject: [PATCH 110/183] Timespinner: Fix Logic (#4803) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/timespinner/Locations.py | 4 ++-- worlds/timespinner/Regions.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/worlds/timespinner/Locations.py b/worlds/timespinner/Locations.py index 644304733a9e..82f284c656f2 100644 --- a/worlds/timespinner/Locations.py +++ b/worlds/timespinner/Locations.py @@ -92,7 +92,7 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('Military Fortress (hangar)', 'Military Fortress: Pedestal', 1337065, lambda state: state.has('Water Mask', player) if flooded.flood_lab else (logic.has_doublejump_of_npc(state) or logic.has_forwarddash_doublejump(state))), LocationData('The lab', 'Lab: Coffee break', 1337066), LocationData('The lab', 'Lab: Lower trash right', 1337067, logic.has_doublejump), - LocationData('The lab', 'Lab: Lower trash left', 1337068, lambda state: logic.has_doublejump_of_npc(state) if options.lock_key_amadeus else logic.has_upwarddash ), + LocationData('The lab', 'Lab: Lower trash left', 1337068, lambda state: logic.has_doublejump_of_npc(state) if options.lock_key_amadeus else logic.has_upwarddash(state) ), LocationData('The lab', 'Lab: Below lab entrance', 1337069, logic.has_doublejump), LocationData('The lab (power off)', 'Lab: Trash jump room', 1337070, lambda state: not options.lock_key_amadeus or logic.has_doublejump_of_npc(state) ), LocationData('The lab (power off)', 'Lab: Dynamo Works', 1337071, lambda state: not options.lock_key_amadeus or (state.has_all(('Lab Access Research', 'Lab Access Dynamo'), player)) ), @@ -100,7 +100,7 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('The lab (power off)', 'Lab: Experiment #13', 1337073, lambda state: not options.lock_key_amadeus or state.has('Lab Access Experiment', player) ), LocationData('The lab (upper)', 'Lab: Download and chest room chest', 1337074), LocationData('The lab (upper)', 'Lab: Lab secret', 1337075, logic.can_break_walls), - LocationData('The lab (power off)', 'Lab: Spider Hell', 1337076, lambda state: logic.has_keycard_A and not options.lock_key_amadeus or state.has('Lab Access Research', player)), + LocationData('The lab (power off)', 'Lab: Spider Hell', 1337076, lambda state: logic.has_keycard_A(state) and not options.lock_key_amadeus or state.has('Lab Access Research', player)), LocationData('Emperors tower', 'Emperor\'s Tower: Courtyard bottom chest', 1337077), LocationData('Emperors tower', 'Emperor\'s Tower: Courtyard floor secret', 1337078, lambda state: logic.has_upwarddash(state) and logic.can_break_walls(state)), LocationData('Emperors tower', 'Emperor\'s Tower: Courtyard upper chest', 1337079, lambda state: logic.has_upwarddash(state)), diff --git a/worlds/timespinner/Regions.py b/worlds/timespinner/Regions.py index 51b1688f1a6d..b00396f222cc 100644 --- a/worlds/timespinner/Regions.py +++ b/worlds/timespinner/Regions.py @@ -141,7 +141,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'Lower Lake Serene', 'Left Side forest Caves') connect(world, player, 'Lower Lake Serene', 'Caves of Banishment (upper)', lambda state: flooded.flood_lake_serene or logic.has_doublejump(state)) connect(world, player, 'Caves of Banishment (upper)', 'Lower Lake Serene', lambda state: not flooded.flood_lake_serene or state.has('Water Mask', player)) - connect(world, player, 'Caves of Banishment (upper)', 'Caves of Banishment (Maw)', lambda state: logic.has_doublejump(state) or state.has_any({'Gas Mask', 'Talaria Attachment'} or logic.has_teleport(state), player)) + connect(world, player, 'Caves of Banishment (upper)', 'Caves of Banishment (Maw)', lambda state: logic.has_doublejump(state) or state.has_any({'Gas Mask', 'Talaria Attachment'}, player) or logic.has_teleport(state)) connect(world, player, 'Caves of Banishment (upper)', 'Space time continuum', logic.has_teleport) connect(world, player, 'Caves of Banishment (Maw)', 'Caves of Banishment (upper)', lambda state: logic.has_doublejump(state) if not flooded.flood_maw else state.has('Water Mask', player)) connect(world, player, 'Caves of Banishment (Maw)', 'Caves of Banishment (Sirens)', lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) ) From dd6007b3094e4cf3be4d13dc55b9ceb692e23123 Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Wed, 28 May 2025 18:27:03 -0400 Subject: [PATCH 111/183] TWW: Remove unnecessary items from slot data (#5045) --- worlds/tww/Options.py | 47 ++++++++++++++++++++++++++++++++++++++++++ worlds/tww/__init__.py | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/worlds/tww/Options.py b/worlds/tww/Options.py index ad9c8b3937a5..d02c606f9fb9 100644 --- a/worlds/tww/Options.py +++ b/worlds/tww/Options.py @@ -755,6 +755,53 @@ class TWWOptions(PerGameCommonOptions): remove_music: RemoveMusic death_link: DeathLink + def get_slot_data_dict(self) -> dict[str, Any]: + """ + Returns a dictionary of option name to value to be placed in + the slot data network package. + + :return: Dictionary of option name to value for the slot data. + """ + return self.as_dict( + "progression_dungeons", + "progression_tingle_chests", + "progression_dungeon_secrets", + "progression_puzzle_secret_caves", + "progression_combat_secret_caves", + "progression_savage_labyrinth", + "progression_great_fairies", + "progression_short_sidequests", + "progression_long_sidequests", + "progression_spoils_trading", + "progression_minigames", + "progression_battlesquid", + "progression_free_gifts", + "progression_mail", + "progression_platforms_rafts", + "progression_submarines", + "progression_eye_reef_chests", + "progression_big_octos_gunboats", + "progression_triforce_charts", + "progression_treasure_charts", + "progression_expensive_purchases", + "progression_island_puzzles", + "progression_misc", + "sword_mode", + "required_bosses", + "logic_obscurity", + "logic_precision", + "enable_tuner_logic", + "randomize_dungeon_entrances", + "randomize_secret_cave_entrances", + "randomize_miniboss_entrances", + "randomize_boss_entrances", + "randomize_secret_cave_inner_entrances", + "randomize_fairy_fountain_entrances", + "swift_sail", + "skip_rematch_bosses", + "remove_music", + ) + def get_output_dict(self) -> dict[str, Any]: """ Returns a dictionary of option name to value to be placed in diff --git a/worlds/tww/__init__.py b/worlds/tww/__init__.py index 918d68478f32..71044d78a8f0 100644 --- a/worlds/tww/__init__.py +++ b/worlds/tww/__init__.py @@ -586,7 +586,7 @@ def fill_slot_data(self) -> Mapping[str, Any]: :return: A dictionary to be sent to the client when it connects to the server. """ - slot_data = self.options.as_dict(*self.options_dataclass.type_hints) + slot_data = self.options.get_slot_data_dict() # Add entrances to `slot_data`. This is the same data that is written to the .aptww file. entrances = { From 6ebd60feaa4f70ca73ba473c1e40186e7383e901 Mon Sep 17 00:00:00 2001 From: sgrunt Date: Wed, 28 May 2025 18:37:39 -0600 Subject: [PATCH 112/183] Timespinner: Fix Logic Error with Risky Warp to Emperor's Tower and Lab Access (#4784) Co-authored-by: sgrunt --- worlds/timespinner/Regions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/timespinner/Regions.py b/worlds/timespinner/Regions.py index b00396f222cc..702e237355e0 100644 --- a/worlds/timespinner/Regions.py +++ b/worlds/timespinner/Regions.py @@ -115,7 +115,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'The lab', 'The lab (power off)', lambda state: options.lock_key_amadeus or logic.has_doublejump_of_npc(state)) connect(world, player, 'The lab (power off)', 'The lab', lambda state: not flooded.flood_lab or state.has('Water Mask', player)) connect(world, player, 'The lab (power off)', 'The lab (upper)', lambda state: logic.has_forwarddash_doublejump(state) and ((not options.lock_key_amadeus) or state.has('Lab Access Genza', player))) - connect(world, player, 'The lab (upper)', 'The lab (power off)') + connect(world, player, 'The lab (upper)', 'The lab (power off)', lambda state: options.lock_key_amadeus and state.has('Lab Access Genza', player)) connect(world, player, 'The lab (upper)', 'Emperors tower', logic.has_forwarddash_doublejump) connect(world, player, 'The lab (upper)', 'Ancient Pyramid (entrance)', lambda state: state.has_all({'Timespinner Wheel', 'Timespinner Spindle', 'Timespinner Gear 1', 'Timespinner Gear 2', 'Timespinner Gear 3'}, player)) connect(world, player, 'Emperors tower', 'The lab (upper)') From b0f41c0360bdd7621d6733204a03448dc82f42aa Mon Sep 17 00:00:00 2001 From: sgrunt Date: Wed, 28 May 2025 18:40:24 -0600 Subject: [PATCH 113/183] Timespinner: Fix Connection Logic from Maw Cave Entrance to Maw (#4831) Co-authored-by: sgrunt --- worlds/timespinner/Locations.py | 10 +++++----- worlds/timespinner/Regions.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/worlds/timespinner/Locations.py b/worlds/timespinner/Locations.py index 82f284c656f2..21e5501e580f 100644 --- a/worlds/timespinner/Locations.py +++ b/worlds/timespinner/Locations.py @@ -150,10 +150,10 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('Caves of Banishment (upper)', 'Caves of Banishment (Maw): Jackpot room chest 3', 1337118, lambda state: flooded.flood_maw or logic.has_forwarddash_doublejump(state)), LocationData('Caves of Banishment (upper)', 'Caves of Banishment (Maw): Jackpot room chest 4', 1337119, lambda state: flooded.flood_maw or logic.has_forwarddash_doublejump(state)), LocationData('Caves of Banishment (upper)', 'Caves of Banishment (Maw): Pedestal', 1337120, lambda state: not flooded.flood_maw or state.has('Water Mask', player)), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Last chance before Maw', 1337121, lambda state: state.has('Water Mask', player) if flooded.flood_maw else logic.has_doublejump(state)), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Plasma Crystal', 1337173, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) and (not flooded.flood_maw or state.has('Water Mask', player))), - LocationData('Caves of Banishment (Maw)', 'Killed Maw', EventId, lambda state: state.has('Gas Mask', player) and (not flooded.flood_maw or state.has('Water Mask', player))), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Mineshaft', 1337122, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) and (not flooded.flood_maw or state.has('Water Mask', player))), + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Last chance before Maw', 1337121, lambda state: flooded.flood_maw or logic.has_doublejump(state)), + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Plasma Crystal', 1337173, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player)), + LocationData('Caves of Banishment (Maw)', 'Killed Maw', EventId, lambda state: state.has('Gas Mask', player)), + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Mineshaft', 1337122, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player)), LocationData('Caves of Banishment (Sirens)', 'Caves of Banishment (Sirens): Wyvern room', 1337123), LocationData('Caves of Banishment (Sirens)', 'Caves of Banishment (Sirens): Siren room above water chest', 1337124), LocationData('Caves of Banishment (Sirens)', 'Caves of Banishment (Sirens): Siren room underwater left chest', 1337125, lambda state: state.has('Water Mask', player)), @@ -251,7 +251,7 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('Royal towers (upper)', 'Royal Towers: Journal - Top Struggle Juggle Base (War of the Sisters)', 1337195), LocationData('Royal towers (upper)', 'Royal Towers: Journal - Aelana Boss (Stained Letter)', 1337196), LocationData('Royal towers', 'Royal Towers: Journal - Near Bottom Struggle Juggle (Mission Findings)', 1337197, lambda state: flooded.flood_courtyard or logic.has_doublejump_of_npc(state)), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Journal - Lower Left Caves (Naivety)', 1337198, lambda state: not flooded.flood_maw or state.has('Water Mask', player)) + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Journal - Lower Left Caves (Naivety)', 1337198) ) # 1337199 - 1337232 Reserved for future use diff --git a/worlds/timespinner/Regions.py b/worlds/timespinner/Regions.py index 702e237355e0..cb55d9810d57 100644 --- a/worlds/timespinner/Regions.py +++ b/worlds/timespinner/Regions.py @@ -141,7 +141,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'Lower Lake Serene', 'Left Side forest Caves') connect(world, player, 'Lower Lake Serene', 'Caves of Banishment (upper)', lambda state: flooded.flood_lake_serene or logic.has_doublejump(state)) connect(world, player, 'Caves of Banishment (upper)', 'Lower Lake Serene', lambda state: not flooded.flood_lake_serene or state.has('Water Mask', player)) - connect(world, player, 'Caves of Banishment (upper)', 'Caves of Banishment (Maw)', lambda state: logic.has_doublejump(state) or state.has_any({'Gas Mask', 'Talaria Attachment'}, player) or logic.has_teleport(state)) + connect(world, player, 'Caves of Banishment (upper)', 'Caves of Banishment (Maw)', lambda state: not flooded.flood_maw or state.has('Water Mask', player)) connect(world, player, 'Caves of Banishment (upper)', 'Space time continuum', logic.has_teleport) connect(world, player, 'Caves of Banishment (Maw)', 'Caves of Banishment (upper)', lambda state: logic.has_doublejump(state) if not flooded.flood_maw else state.has('Water Mask', player)) connect(world, player, 'Caves of Banishment (Maw)', 'Caves of Banishment (Sirens)', lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) ) From d19bf98dc4d977372759e73bd97356f3c3cd08c4 Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Fri, 30 May 2025 10:31:00 -0400 Subject: [PATCH 114/183] Jak and Daxter: Post-merge Polish (#5031) - Cleans up a few missed references in the setup guide. - Refactors Options class to use metaclass and decorators to enforce friendly limits on multiple levels. - Templates generated from the website, even ones with `random` should not fail generation because the website will only allow values inside the friendly limits. - _Uploaded_ yamls to the website with `random`, should also now respect friendly limits without the need for `random-range` shenanigans. - _Uploaded_ yamls to the website, or yamls that are used to generate locally, that have hard-defined values outside the friendly limits, will be clamped/dragged/massaged into those limits (with logged warnings). - Removed an early completion goal that was playing havoc with fill. Not enough people seem to use this goal, so its loss will not be mourned. --- worlds/jakanddaxter/__init__.py | 44 +++-- .../en_Jak and Daxter The Precursor Legacy.md | 17 +- worlds/jakanddaxter/docs/setup_en.md | 3 +- worlds/jakanddaxter/options.py | 122 +++++++++++-- worlds/jakanddaxter/regions.py | 4 +- worlds/jakanddaxter/rules.py | 168 +++++++++++------- worlds/jakanddaxter/test/test_trades.py | 10 +- 7 files changed, 254 insertions(+), 114 deletions(-) diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py index d508e967ae9b..9a2cb30293f0 100644 --- a/worlds/jakanddaxter/__init__.py +++ b/worlds/jakanddaxter/__init__.py @@ -34,9 +34,9 @@ cache_location_table, orb_location_table) from .regions import create_regions -from .rules import (enforce_multiplayer_limits, - enforce_singleplayer_limits, - verify_orb_trade_amounts, +from .rules import (enforce_mp_absolute_limits, + enforce_mp_friendly_limits, + enforce_sp_limits, set_orb_trade_rule) from .locs import (cell_locations as cells, scout_locations as scouts, @@ -258,18 +258,31 @@ def generate_early(self) -> None: self.options.mountain_pass_cell_count.value = self.power_cell_thresholds[1] self.options.lava_tube_cell_count.value = self.power_cell_thresholds[2] - # Store this for remove function. - self.power_cell_thresholds_minus_one = [x - 1 for x in self.power_cell_thresholds] - - # For the fairness of other players in a multiworld game, enforce some friendly limitations on our options, - # so we don't cause chaos during seed generation. These friendly limits should **guarantee** a successful gen. - # We would have done this earlier, but we needed to sort the power cell thresholds first. + # We would have done this earlier, but we needed to sort the power cell thresholds first. Don't worry, we'll + # come back to them. enforce_friendly_options = self.settings.enforce_friendly_options - if enforce_friendly_options: - if self.multiworld.players > 1: - enforce_multiplayer_limits(self) + if self.multiworld.players == 1: + # For singleplayer games, always enforce/clamp the cell counts to valid values. + enforce_sp_limits(self) + else: + if enforce_friendly_options: + # For multiplayer games, we have a host setting to make options fair/sane for other players. + # If this setting is enabled, enforce/clamp some friendly limitations on our options. + enforce_mp_friendly_limits(self) else: - enforce_singleplayer_limits(self) + # Even if the setting is disabled, some values must be clamped to avoid generation errors. + enforce_mp_absolute_limits(self) + + # That's right, set the collection of thresholds again. Don't just clamp the values without updating this list! + self.power_cell_thresholds = [ + self.options.fire_canyon_cell_count.value, + self.options.mountain_pass_cell_count.value, + self.options.lava_tube_cell_count.value, + 100, # The 100 Power Cell Door. + ] + + # Now that the threshold list is finalized, store this for the remove function. + self.power_cell_thresholds_minus_one = [x - 1 for x in self.power_cell_thresholds] # Calculate the number of power cells needed for full region access, the number being replaced by traps, # and the number of remaining filler. @@ -282,11 +295,6 @@ def generate_early(self) -> None: self.options.filler_power_cells_replaced_with_traps.value = self.total_trap_cells self.total_filler_cells = non_prog_cells - self.total_trap_cells - # Verify that we didn't overload the trade amounts with more orbs than exist in the world. - # This is easy to do by accident even in a singleplayer world. - self.total_trade_orbs = (9 * self.options.citizen_orb_trade_amount) + (6 * self.options.oracle_orb_trade_amount) - verify_orb_trade_amounts(self) - # Cache the orb bundle size and item name for quicker reference. if self.options.enable_orbsanity == options.EnableOrbsanity.option_per_level: self.orb_bundle_size = self.options.level_orbsanity_bundle_size.value diff --git a/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md b/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md index 6cf8ae54a529..77fbd514cbe8 100644 --- a/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md +++ b/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md @@ -18,7 +18,7 @@ - [What do Traps do?](#what-do-traps-do) - [What kind of Traps are there?](#what-kind-of-traps-are-there) - [I got soft-locked and cannot leave, how do I get out of here?](#i-got-soft-locked-and-cannot-leave-how-do-i-get-out-of-here) -- [Why did I get an Option Error when generating a seed, and how do I fix it?](#why-did-i-get-an-option-error-when-generating-a-seed-and-how-do-i-fix-it) +- [How do I generate seeds with 1 Orb Orbsanity and other extreme options?](#how-do-i-generate-seeds-with-1-orb-orbsanity-and-other-extreme-options) - [How do I check my player options in-game?](#how-do-i-check-my-player-options-in-game) - [How does the HUD work?](#how-does-the-hud-work) - [I think I found a bug, where should I report it?](#i-think-i-found-a-bug-where-should-i-report-it) @@ -201,16 +201,19 @@ Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `W Selecting this option will ask if you want to be teleported to Geyser Rock. From there, you can teleport back to the nearest sage's hut to continue your journey. -## Why did I get an Option Error when generating a seed and how do I fix it +## How do I generate seeds with 1 orb orbsanity and other extreme options? Depending on your player YAML, Jak and Daxter can have a lot of items, which can sometimes be overwhelming or disruptive to multiworld games. There are also options that are mutually incompatible with each other, even in a solo game. To prevent the game from disrupting multiworlds, or generating an impossible solo seed, some options have -Singleplayer and Multiplayer Minimums and Maximums, collectively called "friendly limits." +"friendly limits" that prevent you from choosing more extreme values. -If you're generating a solo game, or your multiworld host agrees to your request, you can override those limits by -editing the `host.yaml`. In the Archipelago Launcher, click `Open host.yaml`, then search for `jakanddaxter_options`, -then search for `enforce_friendly_options`, then change this value from `true` to `false`. Disabling this allows for -more disruptive and challenging options, but it may cause seed generation to fail. **Use at your own risk!** +You can override **some**, not all, of those limits by editing the `host.yaml`. In the Archipelago Launcher, click +`Open host.yaml`, then search for `jakanddaxter_options`, then search for `enforce_friendly_options`, then change this +value from `true` to `false`. You can then generate a seed locally, and upload that to the Archipelago website to host +for you (or host it yourself). + +**Remember:** disabling this setting allows for more disruptive and challenging options, but it may cause seed +generation to fail. **Use at your own risk!** ## How do I check my player options in-game When you connect your text client to the Archipelago Server, the server will tell the game what options were chosen diff --git a/worlds/jakanddaxter/docs/setup_en.md b/worlds/jakanddaxter/docs/setup_en.md index 509fb3ad8dcb..9cd892a9b2c7 100644 --- a/worlds/jakanddaxter/docs/setup_en.md +++ b/worlds/jakanddaxter/docs/setup_en.md @@ -4,7 +4,6 @@ - A legally purchased copy of *Jak And Daxter: The Precursor Legacy.* - [The OpenGOAL Launcher](https://opengoal.dev/) -- [The Jak and Daxter .APWORLD package](https://github.com/ArchipelaGOAL/Archipelago/releases) At this time, this method of setup works on Windows only, but Linux support is a strong likelihood in the near future as OpenGOAL itself supports Linux. @@ -75,7 +74,7 @@ If you are in the middle of an async game, and you do not want to update the mod ### New Game - Run the Archipelago Launcher. -- From the right-most list, find and click `Jak and Daxter Client`. +- From the client list, find and click `Jak and Daxter Client`. - 3 new windows should appear: - The OpenGOAL compiler will launch and compile the game. They should take about 30 seconds to compile. - You should hear a musical cue to indicate the compilation was a success. If you do not, see the Troubleshooting section. diff --git a/worlds/jakanddaxter/options.py b/worlds/jakanddaxter/options.py index bd007e264af8..d36303b0759e 100644 --- a/worlds/jakanddaxter/options.py +++ b/worlds/jakanddaxter/options.py @@ -1,22 +1,78 @@ from dataclasses import dataclass from functools import cached_property -from Options import PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Range, DefaultOnToggle, OptionCounter +from Options import PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Range, DefaultOnToggle, OptionCounter, \ + AssembleOptions from .items import trap_item_table -class StaticGetter: - def __init__(self, func): - self.fget = func +class readonly_classproperty: + """This decorator is used for getting friendly or unfriendly range_end values for options like FireCanyonCellCount + and CitizenOrbTradeAmount. We only need to provide a getter as we will only be setting a single int to one of two + values.""" + def __init__(self, getter): + self.getter = getter def __get__(self, instance, owner): - return self.fget(owner) + return self.getter(owner) -@StaticGetter +@readonly_classproperty def determine_range_end(cls) -> int: - from . import JakAndDaxterWorld - enforce_friendly_options = JakAndDaxterWorld.settings.enforce_friendly_options - return cls.friendly_maximum if enforce_friendly_options else cls.absolute_maximum + from . import JakAndDaxterWorld # Avoid circular imports. + friendly = JakAndDaxterWorld.settings.enforce_friendly_options + return cls.friendly_maximum if friendly else cls.absolute_maximum + + +class classproperty: + """This decorator (?) is used for getting and setting friendly or unfriendly option values for the Orbsanity + options.""" + def __init__(self, getter, setter): + self.getter = getter + self.setter = setter + + def __get__(self, obj, value): + return self.getter(obj) + + def __set__(self, obj, value): + self.setter(obj, value) + + +class AllowedChoiceMeta(AssembleOptions): + """This metaclass overrides AssembleOptions and provides inheriting classes a way to filter out "disallowed" values + by way of implementing get_disallowed_options. This function is used by Jak and Daxter to check host.yaml settings + without circular imports or breaking the settings API.""" + _name_lookup: dict[int, str] + _options: dict[str, int] + + def __new__(mcs, name, bases, attrs): + ret = super().__new__(mcs, name, bases, attrs) + ret._name_lookup = attrs["name_lookup"] + ret._options = attrs["options"] + return ret + + def set_name_lookup(cls, value : dict[int, str]): + cls._name_lookup = value + + def get_name_lookup(cls) -> dict[int, str]: + cls._name_lookup = {k: v for k, v in cls._name_lookup.items() if k not in cls.get_disallowed_options()} + return cls._name_lookup + + def set_options(cls, value: dict[str, int]): + cls._options = value + + def get_options(cls) -> dict[str, int]: + cls._options = {k: v for k, v in cls._options.items() if v not in cls.get_disallowed_options()} + return cls._options + + def get_disallowed_options(cls): + return {} + + name_lookup = classproperty(get_name_lookup, set_name_lookup) + options = classproperty(get_options, set_options) + + +class AllowedChoice(Choice, metaclass=AllowedChoiceMeta): + pass class EnableMoveRandomizer(Toggle): @@ -44,12 +100,13 @@ class EnableOrbsanity(Choice): default = 0 -class GlobalOrbsanityBundleSize(Choice): +class GlobalOrbsanityBundleSize(AllowedChoice): """The orb bundle size for Global Orbsanity. This only applies if "Enable Orbsanity" is set to "Global." There are 2000 orbs in the game, so your bundle size must be a factor of 2000. - Multiplayer Minimum: 10 - Multiplayer Maximum: 200""" + This value is restricted to safe minimum and maximum values to ensure valid singleplayer games and + non-disruptive multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options + in host.yaml.""" display_name = "Global Orbsanity Bundle Size" option_1_orb = 1 option_2_orbs = 2 @@ -75,12 +132,33 @@ class GlobalOrbsanityBundleSize(Choice): friendly_maximum = 200 default = 20 - -class PerLevelOrbsanityBundleSize(Choice): + @classmethod + def get_disallowed_options(cls) -> set[int]: + try: + from . import JakAndDaxterWorld + if JakAndDaxterWorld.settings.enforce_friendly_options: + return {cls.option_1_orb, + cls.option_2_orbs, + cls.option_4_orbs, + cls.option_5_orbs, + cls.option_8_orbs, + cls.option_250_orbs, + cls.option_400_orbs, + cls.option_500_orbs, + cls.option_1000_orbs, + cls.option_2000_orbs} + except ImportError: + pass + return set() + + +class PerLevelOrbsanityBundleSize(AllowedChoice): """The orb bundle size for Per Level Orbsanity. This only applies if "Enable Orbsanity" is set to "Per Level." There are 50, 150, or 200 orbs per level, so your bundle size must be a factor of 50. - Multiplayer Minimum: 10""" + This value is restricted to safe minimum and maximum values to ensure valid singleplayer games and + non-disruptive multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options + in host.yaml.""" display_name = "Per Level Orbsanity Bundle Size" option_1_orb = 1 option_2_orbs = 2 @@ -91,6 +169,18 @@ class PerLevelOrbsanityBundleSize(Choice): friendly_minimum = 10 default = 25 + @classmethod + def get_disallowed_options(cls) -> set[int]: + try: + from . import JakAndDaxterWorld + if JakAndDaxterWorld.settings.enforce_friendly_options: + return {cls.option_1_orb, + cls.option_2_orbs, + cls.option_5_orbs} + except ImportError: + pass + return set() + class FireCanyonCellCount(Range): """The number of power cells you need to cross Fire Canyon. This value is restricted to a safe maximum value to @@ -234,7 +324,7 @@ class CompletionCondition(Choice): option_cross_fire_canyon = 69 option_cross_mountain_pass = 87 option_cross_lava_tube = 89 - option_defeat_dark_eco_plant = 6 + # option_defeat_dark_eco_plant = 6 option_defeat_klaww = 86 option_defeat_gol_and_maia = 112 option_open_100_cell_door = 116 diff --git a/worlds/jakanddaxter/regions.py b/worlds/jakanddaxter/regions.py index 8447f72e8ed0..87186c3a0226 100644 --- a/worlds/jakanddaxter/regions.py +++ b/worlds/jakanddaxter/regions.py @@ -115,8 +115,8 @@ def create_regions(world: "JakAndDaxterWorld"): elif options.jak_completion_condition == CompletionCondition.option_cross_lava_tube: multiworld.completion_condition[player] = lambda state: state.can_reach(gmc, "Region", player) - elif options.jak_completion_condition == CompletionCondition.option_defeat_dark_eco_plant: - multiworld.completion_condition[player] = lambda state: state.can_reach(fjp, "Region", player) + # elif options.jak_completion_condition == CompletionCondition.option_defeat_dark_eco_plant: + # multiworld.completion_condition[player] = lambda state: state.can_reach(fjp, "Region", player) elif options.jak_completion_condition == CompletionCondition.option_defeat_klaww: multiworld.completion_condition[player] = lambda state: state.can_reach(mp, "Region", player) diff --git a/worlds/jakanddaxter/rules.py b/worlds/jakanddaxter/rules.py index 71b94df885c8..25a8323f4dff 100644 --- a/worlds/jakanddaxter/rules.py +++ b/worlds/jakanddaxter/rules.py @@ -1,3 +1,5 @@ +import logging +import math import typing from BaseClasses import CollectionState from Options import OptionError @@ -131,100 +133,138 @@ def can_fight(state: CollectionState, player: int) -> bool: return state.has_any(("Jump Dive", "Jump Kick", "Punch", "Kick"), player) -def enforce_multiplayer_limits(world: "JakAndDaxterWorld"): +def clamp_cell_limits(world: "JakAndDaxterWorld") -> str: options = world.options friendly_message = "" - if (options.enable_orbsanity == EnableOrbsanity.option_global - and (options.global_orbsanity_bundle_size.value < GlobalOrbsanityBundleSize.friendly_minimum - or options.global_orbsanity_bundle_size.value > GlobalOrbsanityBundleSize.friendly_maximum)): - friendly_message += (f" " - f"{options.global_orbsanity_bundle_size.display_name} must be no less than " - f"{GlobalOrbsanityBundleSize.friendly_minimum} and no greater than " - f"{GlobalOrbsanityBundleSize.friendly_maximum} (currently " - f"{options.global_orbsanity_bundle_size.value}).\n") - - if (options.enable_orbsanity == EnableOrbsanity.option_per_level - and options.level_orbsanity_bundle_size.value < PerLevelOrbsanityBundleSize.friendly_minimum): - friendly_message += (f" " - f"{options.level_orbsanity_bundle_size.display_name} must be no less than " - f"{PerLevelOrbsanityBundleSize.friendly_minimum} (currently " - f"{options.level_orbsanity_bundle_size.value}).\n") - if options.fire_canyon_cell_count.value > FireCanyonCellCount.friendly_maximum: + old_value = options.fire_canyon_cell_count.value + options.fire_canyon_cell_count.value = FireCanyonCellCount.friendly_maximum friendly_message += (f" " f"{options.fire_canyon_cell_count.display_name} must be no greater than " - f"{FireCanyonCellCount.friendly_maximum} (currently " - f"{options.fire_canyon_cell_count.value}).\n") + f"{FireCanyonCellCount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") if options.mountain_pass_cell_count.value > MountainPassCellCount.friendly_maximum: + old_value = options.mountain_pass_cell_count.value + options.mountain_pass_cell_count.value = MountainPassCellCount.friendly_maximum friendly_message += (f" " f"{options.mountain_pass_cell_count.display_name} must be no greater than " - f"{MountainPassCellCount.friendly_maximum} (currently " - f"{options.mountain_pass_cell_count.value}).\n") + f"{MountainPassCellCount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") if options.lava_tube_cell_count.value > LavaTubeCellCount.friendly_maximum: + old_value = options.lava_tube_cell_count.value + options.lava_tube_cell_count.value = LavaTubeCellCount.friendly_maximum friendly_message += (f" " f"{options.lava_tube_cell_count.display_name} must be no greater than " - f"{LavaTubeCellCount.friendly_maximum} (currently " - f"{options.lava_tube_cell_count.value}).\n") + f"{LavaTubeCellCount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + return friendly_message + + +def clamp_trade_total_limits(world: "JakAndDaxterWorld"): + """Check if we need to recalculate the 2 trade orb options so the total fits under 2000. If so let's keep them + proportional relative to each other. Then we'll recalculate total_trade_orbs. Remember this situation is + only possible if both values are greater than 0, otherwise the absolute maximums would keep them under 2000.""" + options = world.options + friendly_message = "" + + world.total_trade_orbs = (9 * options.citizen_orb_trade_amount) + (6 * options.oracle_orb_trade_amount) + if world.total_trade_orbs > 2000: + old_total = world.total_trade_orbs + old_citizen_value = options.citizen_orb_trade_amount.value + old_oracle_value = options.oracle_orb_trade_amount.value + + coefficient = old_oracle_value / old_citizen_value + + options.citizen_orb_trade_amount.value = math.floor(2000 / (9 + (6 * coefficient))) + options.oracle_orb_trade_amount.value = math.floor(coefficient * options.citizen_orb_trade_amount.value) + world.total_trade_orbs = (9 * options.citizen_orb_trade_amount) + (6 * options.oracle_orb_trade_amount) + + friendly_message += (f" " + f"Required number of orbs ({old_total}) must be no greater than total orbs in the game " + f"(2000). Reduced the value of {world.options.citizen_orb_trade_amount.display_name} " + f"from {old_citizen_value} to {options.citizen_orb_trade_amount.value} and " + f"{world.options.oracle_orb_trade_amount.display_name} from {old_oracle_value} to " + f"{options.oracle_orb_trade_amount.value}.\n") + + return friendly_message + + +def enforce_mp_friendly_limits(world: "JakAndDaxterWorld"): + options = world.options + friendly_message = "" + + if options.enable_orbsanity == EnableOrbsanity.option_global: + if options.global_orbsanity_bundle_size.value < GlobalOrbsanityBundleSize.friendly_minimum: + old_value = options.global_orbsanity_bundle_size.value + options.global_orbsanity_bundle_size.value = GlobalOrbsanityBundleSize.friendly_minimum + friendly_message += (f" " + f"{options.global_orbsanity_bundle_size.display_name} must be no less than " + f"{GlobalOrbsanityBundleSize.friendly_minimum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.global_orbsanity_bundle_size.value > GlobalOrbsanityBundleSize.friendly_maximum: + old_value = options.global_orbsanity_bundle_size.value + options.global_orbsanity_bundle_size.value = GlobalOrbsanityBundleSize.friendly_maximum + friendly_message += (f" " + f"{options.global_orbsanity_bundle_size.display_name} must be no greater than " + f"{GlobalOrbsanityBundleSize.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + if options.level_orbsanity_bundle_size.value < PerLevelOrbsanityBundleSize.friendly_minimum: + old_value = options.level_orbsanity_bundle_size.value + options.level_orbsanity_bundle_size.value = PerLevelOrbsanityBundleSize.friendly_minimum + friendly_message += (f" " + f"{options.level_orbsanity_bundle_size.display_name} must be no less than " + f"{PerLevelOrbsanityBundleSize.friendly_minimum} (was {old_value}), " + f"changed option to appropriate value.\n") if options.citizen_orb_trade_amount.value > CitizenOrbTradeAmount.friendly_maximum: + old_value = options.citizen_orb_trade_amount.value + options.citizen_orb_trade_amount.value = CitizenOrbTradeAmount.friendly_maximum friendly_message += (f" " f"{options.citizen_orb_trade_amount.display_name} must be no greater than " - f"{CitizenOrbTradeAmount.friendly_maximum} (currently " - f"{options.citizen_orb_trade_amount.value}).\n") + f"{CitizenOrbTradeAmount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") if options.oracle_orb_trade_amount.value > OracleOrbTradeAmount.friendly_maximum: + old_value = options.oracle_orb_trade_amount.value + options.oracle_orb_trade_amount.value = OracleOrbTradeAmount.friendly_maximum friendly_message += (f" " f"{options.oracle_orb_trade_amount.display_name} must be no greater than " - f"{OracleOrbTradeAmount.friendly_maximum} (currently " - f"{options.oracle_orb_trade_amount.value}).\n") + f"{OracleOrbTradeAmount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + friendly_message += clamp_cell_limits(world) + friendly_message += clamp_trade_total_limits(world) if friendly_message != "": - raise OptionError(f"{world.player_name}: The options you have chosen may disrupt the multiworld. \n" - f"Please adjust the following Options for a multiplayer game. \n" - f"{friendly_message}" - f"Or use 'random-range-x-y' instead of 'random' in your player yaml.\n" - f"Or set 'enforce_friendly_options' in the seed generator's host.yaml to false. " - f"(Use at your own risk!)") + logging.warning(f"{world.player_name}: Your options have been modified to avoid disrupting the multiworld.\n" + f"{friendly_message}" + f"You can access more advanced options by setting 'enforce_friendly_options' in the seed " + f"generator's host.yaml to false and generating locally. (Use at your own risk!)") -def enforce_singleplayer_limits(world: "JakAndDaxterWorld"): - options = world.options +def enforce_mp_absolute_limits(world: "JakAndDaxterWorld"): friendly_message = "" - if options.fire_canyon_cell_count.value > FireCanyonCellCount.friendly_maximum: - friendly_message += (f" " - f"{options.fire_canyon_cell_count.display_name} must be no greater than " - f"{FireCanyonCellCount.friendly_maximum} (currently " - f"{options.fire_canyon_cell_count.value}).\n") - - if options.mountain_pass_cell_count.value > MountainPassCellCount.friendly_maximum: - friendly_message += (f" " - f"{options.mountain_pass_cell_count.display_name} must be no greater than " - f"{MountainPassCellCount.friendly_maximum} (currently " - f"{options.mountain_pass_cell_count.value}).\n") - - if options.lava_tube_cell_count.value > LavaTubeCellCount.friendly_maximum: - friendly_message += (f" " - f"{options.lava_tube_cell_count.display_name} must be no greater than " - f"{LavaTubeCellCount.friendly_maximum} (currently " - f"{options.lava_tube_cell_count.value}).\n") + friendly_message += clamp_trade_total_limits(world) if friendly_message != "": - raise OptionError(f"The options you have chosen may result in seed generation failures. \n" - f"Please adjust the following Options for a singleplayer game. \n" - f"{friendly_message}" - f"Or use 'random-range-x-y' instead of 'random' in your player yaml.\n" - f"Or set 'enforce_friendly_options' in your host.yaml to false. " - f"(Use at your own risk!)") + logging.warning(f"{world.player_name}: Your options have been modified to avoid seed generation failures.\n" + f"{friendly_message}") -def verify_orb_trade_amounts(world: "JakAndDaxterWorld"): +def enforce_sp_limits(world: "JakAndDaxterWorld"): + friendly_message = "" - if world.total_trade_orbs > 2000: - raise OptionError(f"{world.player_name}: Required number of orbs for all trades ({world.total_trade_orbs}) " - f"is more than all the orbs in the game (2000). Reduce the value of either " - f"{world.options.citizen_orb_trade_amount.display_name} " - f"or {world.options.oracle_orb_trade_amount.display_name}.") + friendly_message += clamp_cell_limits(world) + friendly_message += clamp_trade_total_limits(world) + + if friendly_message != "": + logging.warning(f"{world.player_name}: Your options have been modified to avoid seed generation failures.\n" + f"{friendly_message}") diff --git a/worlds/jakanddaxter/test/test_trades.py b/worlds/jakanddaxter/test/test_trades.py index e1d1a2e53dec..0277a92353f9 100644 --- a/worlds/jakanddaxter/test/test_trades.py +++ b/worlds/jakanddaxter/test/test_trades.py @@ -4,14 +4,14 @@ class TradesCostNothingTest(JakAndDaxterTestBase): options = { "enable_orbsanity": 2, - "global_orbsanity_bundle_size": 5, + "global_orbsanity_bundle_size": 10, "citizen_orb_trade_amount": 0, "oracle_orb_trade_amount": 0 } def test_orb_items_are_filler(self): self.collect_all_but("") - self.assertNotIn("5 Precursor Orbs", self.multiworld.state.prog_items) + self.assertNotIn("10 Precursor Orbs", self.multiworld.state.prog_items) def test_trades_are_accessible(self): self.assertTrue(self.multiworld @@ -22,15 +22,15 @@ def test_trades_are_accessible(self): class TradesCostEverythingTest(JakAndDaxterTestBase): options = { "enable_orbsanity": 2, - "global_orbsanity_bundle_size": 5, + "global_orbsanity_bundle_size": 10, "citizen_orb_trade_amount": 120, "oracle_orb_trade_amount": 150 } def test_orb_items_are_progression(self): self.collect_all_but("") - self.assertIn("5 Precursor Orbs", self.multiworld.state.prog_items[self.player]) - self.assertEqual(396, self.multiworld.state.prog_items[self.player]["5 Precursor Orbs"]) + self.assertIn("10 Precursor Orbs", self.multiworld.state.prog_items[self.player]) + self.assertEqual(198, self.multiworld.state.prog_items[self.player]["10 Precursor Orbs"]) def test_trades_are_accessible(self): self.collect_all_but("") From fab75d3a32ee16198b7bc67215dcef252e726250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Sat, 31 May 2025 07:57:42 -0400 Subject: [PATCH 115/183] Stardew Valley: Fix Wizard Tower and Entrance Randomizer Softlocks (#4631) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/stardew_valley/content/mods/sve.py | 3 +-- worlds/stardew_valley/logic/quest_logic.py | 2 +- worlds/stardew_valley/logic/region_logic.py | 16 ++++++++-------- worlds/stardew_valley/rules.py | 1 + 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/worlds/stardew_valley/content/mods/sve.py b/worlds/stardew_valley/content/mods/sve.py index 2c9edc810615..378472373749 100644 --- a/worlds/stardew_valley/content/mods/sve.py +++ b/worlds/stardew_valley/content/mods/sve.py @@ -216,7 +216,6 @@ def finalize_hook(self, content: StardewContent): villagers_data.scarlett, villagers_data.susan, villagers_data.morris, - # The wizard leaves his tower on sunday, for like 1 hour... Good enough for entrance rando! - override(villagers_data.wizard, locations=(Region.wizard_tower, Region.forest), bachelor=True, mod_name=ModNames.sve), + override(villagers_data.wizard, bachelor=True, mod_name=ModNames.sve), ) )) diff --git a/worlds/stardew_valley/logic/quest_logic.py b/worlds/stardew_valley/logic/quest_logic.py index 5bc3f86eae74..af52d06e30bf 100644 --- a/worlds/stardew_valley/logic/quest_logic.py +++ b/worlds/stardew_valley/logic/quest_logic.py @@ -89,7 +89,7 @@ def initialize_rules(self): Quest.goblin_problem: self.logic.region.can_reach(Region.witch_swamp) # Void mayo can be fished at 5% chance in the witch swamp while the quest is active. It drops a lot after the quest. & (self.logic.has(ArtisanGood.void_mayonnaise) | self.logic.fishing.can_fish()), - Quest.magic_ink: self.logic.relationship.can_meet(NPC.wizard), + Quest.magic_ink: self.logic.region.can_reach(Region.witch_hut) & self.logic.relationship.can_meet(NPC.wizard), Quest.the_pirates_wife: self.logic.relationship.can_meet(NPC.kent) & self.logic.relationship.can_meet(NPC.gus) & self.logic.relationship.can_meet(NPC.sandy) & self.logic.relationship.can_meet(NPC.george) & self.logic.relationship.can_meet(NPC.wizard) & self.logic.relationship.can_meet(NPC.willy), diff --git a/worlds/stardew_valley/logic/region_logic.py b/worlds/stardew_valley/logic/region_logic.py index 083f56e1676c..81c79be097b8 100644 --- a/worlds/stardew_valley/logic/region_logic.py +++ b/worlds/stardew_valley/logic/region_logic.py @@ -1,23 +1,23 @@ -from typing import Tuple, Union +from typing import Tuple from Utils import cache_self1 from .base_logic import BaseLogic, BaseLogicMixin -from .has_logic import HasLogicMixin from ..options import EntranceRandomization from ..stardew_rule import StardewRule, Reach, false_, true_ from ..strings.region_names import Region main_outside_area = {Region.menu, Region.stardew_valley, Region.farm_house, Region.farm, Region.town, Region.beach, Region.mountain, Region.forest, Region.bus_stop, Region.backwoods, Region.bus_tunnel, Region.tunnel_entrance} -always_accessible_regions_without_er = {*main_outside_area, Region.community_center, Region.pantry, Region.crafts_room, Region.fish_tank, Region.boiler_room, - Region.vault, Region.bulletin_board, Region.mines, Region.hospital, Region.carpenter, Region.alex_house, - Region.elliott_house, Region.ranch, Region.farm_cave, Region.wizard_tower, Region.tent, Region.pierre_store, - Region.saloon, Region.blacksmith, Region.trailer, Region.museum, Region.mayor_house, Region.haley_house, - Region.sam_house, Region.jojamart, Region.fish_shop} +always_accessible_regions_with_non_progression_er = {*main_outside_area, Region.mines, Region.hospital, Region.carpenter, Region.alex_house, + Region.ranch, Region.farm_cave, Region.wizard_tower, Region.tent, + Region.pierre_store, Region.saloon, Region.blacksmith, Region.trailer, Region.museum, Region.mayor_house, + Region.haley_house, Region.sam_house, Region.jojamart, Region.fish_shop} +always_accessible_regions_without_er = {*always_accessible_regions_with_non_progression_er, Region.community_center, Region.pantry, Region.crafts_room, + Region.fish_tank, Region.boiler_room, Region.vault, Region.bulletin_board} always_regions_by_setting = {EntranceRandomization.option_disabled: always_accessible_regions_without_er, EntranceRandomization.option_pelican_town: always_accessible_regions_without_er, - EntranceRandomization.option_non_progression: always_accessible_regions_without_er, + EntranceRandomization.option_non_progression: always_accessible_regions_with_non_progression_er, EntranceRandomization.option_buildings_without_house: main_outside_area, EntranceRandomization.option_buildings: main_outside_area, EntranceRandomization.option_chaos: always_accessible_regions_without_er} diff --git a/worlds/stardew_valley/rules.py b/worlds/stardew_valley/rules.py index e5d7e8863e5a..350da064a103 100644 --- a/worlds/stardew_valley/rules.py +++ b/worlds/stardew_valley/rules.py @@ -195,6 +195,7 @@ def set_entrance_rules(logic: StardewLogic, multiworld, player, world_options: S set_entrance_rule(multiworld, player, Entrance.enter_tide_pools, logic.received("Beach Bridge") | (logic.mod.magic.can_blink())) set_entrance_rule(multiworld, player, Entrance.enter_quarry, logic.received("Bridge Repair") | (logic.mod.magic.can_blink())) set_entrance_rule(multiworld, player, Entrance.enter_secret_woods, logic.tool.has_tool(Tool.axe, "Iron") | (logic.mod.magic.can_blink())) + set_entrance_rule(multiworld, player, Entrance.forest_to_wizard_tower, logic.region.can_reach(Region.community_center)) set_entrance_rule(multiworld, player, Entrance.forest_to_sewer, logic.wallet.has_rusty_key()) set_entrance_rule(multiworld, player, Entrance.town_to_sewer, logic.wallet.has_rusty_key()) set_entrance_rule(multiworld, player, Entrance.enter_abandoned_jojamart, logic.has_abandoned_jojamart()) From 8f68bb342dcd9e4a38f41bbeb605a6e5c81319a4 Mon Sep 17 00:00:00 2001 From: qwint Date: Mon, 2 Jun 2025 10:53:18 -0500 Subject: [PATCH 116/183] Core and Various Worlds: define patch_file_ending to APPlayerContainer (#5058) * move to playercontainer * moves patch_file_ending handling to APPlayerContainer and updates the worlds using it to define their extensions * give oot a patch_file_ending as well --- worlds/Files.py | 4 ++-- worlds/civ_6/Container.py | 18 +++++++----------- worlds/factorio/Mod.py | 1 + worlds/kh2/OpenKH.py | 1 + worlds/oot/Patches.py | 1 + worlds/tww/__init__.py | 4 ++-- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/worlds/Files.py b/worlds/Files.py index 447219bd191b..fa3739a5a919 100644 --- a/worlds/Files.py +++ b/worlds/Files.py @@ -158,6 +158,7 @@ def get_manifest(self) -> Dict[str, Any]: class APPlayerContainer(APContainer): """A zipfile containing at least archipelago.json meant for a player""" game: ClassVar[Optional[str]] = None + patch_file_ending: str = "" player: Optional[int] player_name: str @@ -184,6 +185,7 @@ def get_manifest(self) -> Dict[str, Any]: "player": self.player, "player_name": self.player_name, "game": self.game, + "patch_file_ending": self.patch_file_ending, }) return manifest @@ -223,7 +225,6 @@ class APProcedurePatch(APAutoPatchInterface): """ hash: Optional[str] # base checksum of source file source_data: bytes - patch_file_ending: str = "" files: Dict[str, bytes] @classmethod @@ -245,7 +246,6 @@ def get_manifest(self) -> Dict[str, Any]: manifest = super(APProcedurePatch, self).get_manifest() manifest["base_checksum"] = self.hash manifest["result_file_ending"] = self.result_file_ending - manifest["patch_file_ending"] = self.patch_file_ending manifest["procedure"] = self.procedure if self.procedure == APDeltaPatch.procedure: manifest["compatible_version"] = 5 diff --git a/worlds/civ_6/Container.py b/worlds/civ_6/Container.py index 0c5340d9c2e5..a5790c1ec474 100644 --- a/worlds/civ_6/Container.py +++ b/worlds/civ_6/Container.py @@ -1,10 +1,9 @@ from dataclasses import dataclass import os -import io from typing import TYPE_CHECKING, Dict, List, Optional, cast import zipfile from BaseClasses import Location -from worlds.Files import APContainer, AutoPatchRegister +from worlds.Files import APPlayerContainer from .Enum import CivVICheckType from .Locations import CivVILocation, CivVILocationData @@ -26,22 +25,19 @@ class CivTreeItem: ui_tree_row: int -class CivVIContainer(APContainer, metaclass=AutoPatchRegister): +class CivVIContainer(APPlayerContainer): """ Responsible for generating the dynamic mod files for the Civ VI multiworld """ game: Optional[str] = "Civilization VI" patch_file_ending = ".apcivvi" - def __init__(self, patch_data: Dict[str, str] | io.BytesIO, base_path: str = "", output_directory: str = "", + def __init__(self, patch_data: Dict[str, str], base_path: str = "", output_directory: str = "", player: Optional[int] = None, player_name: str = "", server: str = ""): - if isinstance(patch_data, io.BytesIO): - super().__init__(patch_data, player, player_name, server) - else: - self.patch_data = patch_data - self.file_path = base_path - container_path = os.path.join(output_directory, base_path + ".apcivvi") - super().__init__(container_path, player, player_name, server) + self.patch_data = patch_data + self.file_path = base_path + container_path = os.path.join(output_directory, base_path + ".apcivvi") + super().__init__(container_path, player, player_name, server) def write_contents(self, opened_zipfile: zipfile.ZipFile) -> None: for filename, yml in self.patch_data.items(): diff --git a/worlds/factorio/Mod.py b/worlds/factorio/Mod.py index eb305897f435..3cc156112d32 100644 --- a/worlds/factorio/Mod.py +++ b/worlds/factorio/Mod.py @@ -67,6 +67,7 @@ class FactorioModFile(worlds.Files.APPlayerContainer): game = "Factorio" compression_method = zipfile.ZIP_DEFLATED # Factorio can't load LZMA archives writing_tasks: List[Callable[[], Tuple[str, Union[str, bytes]]]] + patch_file_ending = ".zip" def __init__(self, *args: Any, **kwargs: Any): super().__init__(*args, **kwargs) diff --git a/worlds/kh2/OpenKH.py b/worlds/kh2/OpenKH.py index 985c9913abe8..7c67fc07def4 100644 --- a/worlds/kh2/OpenKH.py +++ b/worlds/kh2/OpenKH.py @@ -13,6 +13,7 @@ class KH2Container(APPlayerContainer): game: str = 'Kingdom Hearts 2' + patch_file_ending = ".zip" def __init__(self, patch_data: dict, base_path: str, output_directory: str, player=None, player_name: str = "", server: str = ""): diff --git a/worlds/oot/Patches.py b/worlds/oot/Patches.py index cd940e052a2b..db7be3d4ddc5 100644 --- a/worlds/oot/Patches.py +++ b/worlds/oot/Patches.py @@ -38,6 +38,7 @@ class OoTContainer(APPatch): game: str = 'Ocarina of Time' + patch_file_ending = ".apz5" def __init__(self, patch_data: bytes, base_path: str, output_directory: str, player = None, player_name: str = "", server: str = ""): diff --git a/worlds/tww/__init__.py b/worlds/tww/__init__.py index 71044d78a8f0..5432d200ae3f 100644 --- a/worlds/tww/__init__.py +++ b/worlds/tww/__init__.py @@ -11,7 +11,7 @@ from BaseClasses import MultiWorld, Region, Tutorial from Options import Toggle from worlds.AutoWorld import WebWorld, World -from worlds.Files import APPlayerContainer, AutoPatchRegister +from worlds.Files import APPlayerContainer from worlds.generic.Rules import add_item_rule from worlds.LauncherComponents import Component, SuffixIdentifier, Type, components, icon_paths, launch_subprocess @@ -51,7 +51,7 @@ def run_client() -> None: icon_paths["The Wind Waker"] = "ap:worlds.tww/assets/icon.png" -class TWWContainer(APPlayerContainer, metaclass=AutoPatchRegister): +class TWWContainer(APPlayerContainer): """ This class defines the container file for The Wind Waker. """ From cabde313b563990171c39bf2b644bf8f779df81b Mon Sep 17 00:00:00 2001 From: qwint Date: Mon, 2 Jun 2025 10:53:57 -0500 Subject: [PATCH 117/183] WebHost: Use expected APPlayerContainer manifest location directly when ingesting them #4754 --- WebHostLib/upload.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WebHostLib/upload.py b/WebHostLib/upload.py index 45b26b175eb3..66b6f5560bae 100644 --- a/WebHostLib/upload.py +++ b/WebHostLib/upload.py @@ -119,9 +119,9 @@ def upload_zip_to_db(zfile: zipfile.ZipFile, owner=None, meta={"race": False}, s # AP Container elif handler: data = zfile.open(file, "r").read() - patch = handler(BytesIO(data)) - patch.read() - files[patch.player] = data + with zipfile.ZipFile(BytesIO(data)) as container: + player = json.loads(container.open("archipelago.json").read())["player"] + files[player] = data # Spoiler elif file.filename.endswith(".txt"): From 0c5cb17d96af6091a5c35f13cc2fc62551679b09 Mon Sep 17 00:00:00 2001 From: Mysteryem Date: Mon, 2 Jun 2025 16:56:11 +0100 Subject: [PATCH 118/183] DLCQuest: Add missing indirect conditions (#5074) The `Behind Rocks` and `Pickaxe Hard Cave` Entrances require being able to reach the `Cut Content` region, but no indirect conditions were being registered for this region. The `set_lfod_self_obtained_items_rules` function was also using a `world` parameter that was actually expecting a `MultiWorld` instance, so I have renamed it for clarity and updated the function to use `world.get_entrance()` rather than `multiworld.get_entrance()`. Much of the rest of the file passes `MultiWorld` instances to `world` parameters, but fixing all of these is out of the scope of the changes in this patch, so has not been included. --- worlds/dlcquest/Rules.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/worlds/dlcquest/Rules.py b/worlds/dlcquest/Rules.py index 3461d0633ef1..5dfd80165a01 100644 --- a/worlds/dlcquest/Rules.py +++ b/worlds/dlcquest/Rules.py @@ -280,16 +280,19 @@ def set_boss_door_requirements_rules(player, world): set_rule(world.get_entrance("Boss Door", player), has_3_swords) -def set_lfod_self_obtained_items_rules(world_options, player, world): +def set_lfod_self_obtained_items_rules(world_options, player, multiworld): if world_options.item_shuffle != Options.ItemShuffle.option_disabled: return - set_rule(world.get_entrance("Vines", player), + world = multiworld.worlds[player] + set_rule(world.get_entrance("Vines"), lambda state: state.has("Incredibly Important Pack", player)) - set_rule(world.get_entrance("Behind Rocks", player), + set_rule(world.get_entrance("Behind Rocks"), lambda state: state.can_reach("Cut Content", 'region', player)) - set_rule(world.get_entrance("Pickaxe Hard Cave", player), + multiworld.register_indirect_condition(world.get_region("Cut Content"), world.get_entrance("Behind Rocks")) + set_rule(world.get_entrance("Pickaxe Hard Cave"), lambda state: state.can_reach("Cut Content", 'region', player) and state.has("Name Change Pack", player)) + multiworld.register_indirect_condition(world.get_region("Cut Content"), world.get_entrance("Pickaxe Hard Cave")) def set_lfod_shuffled_items_rules(world_options, player, world): From 99142fd6625b3bf3ef013bbd3bc1813c5d95923f Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:01:21 -0400 Subject: [PATCH 119/183] Plando Items: Fix count with empty locations/location #5040 --- Options.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Options.py b/Options.py index 3d08c5f00370..26e145926edc 100644 --- a/Options.py +++ b/Options.py @@ -1524,9 +1524,11 @@ def from_any(cls, data: typing.Any) -> Option[typing.List[PlandoItem]]: f"dictionary, not {type(items)}") locations = item.get("locations", []) if not locations: - locations = item.get("location", ["Everywhere"]) + locations = item.get("location", []) if locations: count = 1 + else: + locations = ["Everywhere"] if isinstance(locations, str): locations = [locations] if not isinstance(locations, list): From 04c707f8740c25373f090c8f03199d8c56f067de Mon Sep 17 00:00:00 2001 From: Mysteryem Date: Mon, 2 Jun 2025 17:06:54 +0100 Subject: [PATCH 120/183] DKC3: Add missing indirect conditions (#5073) A couple of Entrance access rules were checking for being able to reach a Location, but a Location first checks for being able to reach its parent Region, so it needs to be registered that access to that parent Region can give access to the Entrance. --- worlds/dkc3/Regions.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/worlds/dkc3/Regions.py b/worlds/dkc3/Regions.py index 6e968dbe1e30..c6c7dd362efd 100644 --- a/worlds/dkc3/Regions.py +++ b/worlds/dkc3/Regions.py @@ -802,8 +802,10 @@ def connect_regions(world: World, level_list): for i in range(0, len(kremwood_forest_levels) - 1): connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[i]) - connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[-1], - lambda state: (state.can_reach(LocationName.riverside_race_flag, "Location", world.player))) + connection = connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[-1], + lambda state: (state.can_reach(LocationName.riverside_race_flag, "Location", world.player))) + world.multiworld.register_indirect_condition(world.get_location(LocationName.riverside_race_flag).parent_region, + connection) # Cotton-Top Cove Connections cotton_top_cove_levels = [ @@ -837,8 +839,11 @@ def connect_regions(world: World, level_list): connect(world, world.player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region, lambda state: (state.has(ItemName.bowling_ball, world.player, 1))) else: - connect(world, world.player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region, - lambda state: (state.can_reach(LocationName.bleaks_house, "Location", world.player))) + connection = connect(world, world.player, names, LocationName.mekanos_region, + LocationName.sky_high_secret_region, + lambda state: (state.can_reach(LocationName.bleaks_house, "Location", world.player))) + world.multiworld.register_indirect_condition(world.get_location(LocationName.bleaks_house).parent_region, + connection) # K3 Connections k3_levels = [ @@ -946,3 +951,4 @@ def connect(world: World, player: int, used_names: typing.Dict[str, int], source source_region.exits.append(connection) connection.connect(target_region) + return connection From b85b18cf5fb5db4dbcbd736ff4a3dafcfeeb0f3b Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Mon, 2 Jun 2025 16:39:42 +0000 Subject: [PATCH 121/183] SoE: remove outdated info from guide (#5064) The client does not depend on Animation Frame anymore, so it can be backgrounded. --- worlds/soe/docs/multiworld_en.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/worlds/soe/docs/multiworld_en.md b/worlds/soe/docs/multiworld_en.md index a2944d4c012b..9378626df4f6 100644 --- a/worlds/soe/docs/multiworld_en.md +++ b/worlds/soe/docs/multiworld_en.md @@ -130,9 +130,7 @@ page: [usb2snes Supported Platforms Page](http://usb2snes.com/#supported-platfor ### Open the client -Open ap-soeclient ([Evermizer Archipelago Client Page](http://evermizer.com/apclient)) in a modern browser. Do not -switch tabs, open it in a new window if you want to use the browser while playing. Do not minimize the window with the -client. +Open ap-soeclient ([Evermizer Archipelago Client Page](http://evermizer.com/apclient)) in a modern browser. The client should automatically connect to SNI, the "SNES" status should change to green. From 694e6bcae36bab4e49c60c3c8f097d2f440a0979 Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Tue, 3 Jun 2025 10:42:37 +0000 Subject: [PATCH 122/183] Launcher/Utils: reset LD_LIBRARY_PATH for system EXEs (#5022) --- Launcher.py | 15 ++++++++++++--- Utils.py | 36 ++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/Launcher.py b/Launcher.py index 88e2070e9c4c..82326aacd70a 100644 --- a/Launcher.py +++ b/Launcher.py @@ -11,6 +11,7 @@ import argparse import logging import multiprocessing +import os import shlex import subprocess import sys @@ -41,13 +42,17 @@ def open_host_yaml(): if is_linux: exe = which('sensible-editor') or which('gedit') or \ which('xdg-open') or which('gnome-open') or which('kde-open') - subprocess.Popen([exe, file]) elif is_macos: exe = which("open") - subprocess.Popen([exe, file]) else: webbrowser.open(file) + return + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + subprocess.Popen([exe, file], env=env) def open_patch(): suffixes = [] @@ -92,7 +97,11 @@ def open_folder(folder_path): return if exe: - subprocess.Popen([exe, folder_path]) + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + subprocess.Popen([exe, folder_path], env=env) else: logging.warning(f"No file browser available to open {folder_path}") diff --git a/Utils.py b/Utils.py index b38809ba1b9e..f20389055008 100644 --- a/Utils.py +++ b/Utils.py @@ -226,7 +226,12 @@ def open_file(filename: typing.Union[str, "pathlib.Path"]) -> None: from shutil import which open_command = which("open") if is_macos else (which("xdg-open") or which("gnome-open") or which("kde-open")) assert open_command, "Didn't find program for open_file! Please report this together with system details." - subprocess.call([open_command, filename]) + + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + subprocess.call([open_command, filename], env=env) # from https://gist.github.com/pypt/94d747fe5180851196eb#gistcomment-4015118 with some changes @@ -708,25 +713,30 @@ def _mp_open_filename(res: "multiprocessing.Queue[typing.Optional[str]]", *args: res.put(open_filename(*args)) +def _run_for_stdout(*args: str): + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + return subprocess.run(args, capture_output=True, text=True, env=env).stdout.split("\n", 1)[0] or None + + def open_filename(title: str, filetypes: typing.Iterable[typing.Tuple[str, typing.Iterable[str]]], suggest: str = "") \ -> typing.Optional[str]: logging.info(f"Opening file input dialog for {title}.") - def run(*args: str): - return subprocess.run(args, capture_output=True, text=True).stdout.split("\n", 1)[0] or None - if is_linux: # prefer native dialog from shutil import which kdialog = which("kdialog") if kdialog: k_filters = '|'.join((f'{text} (*{" *".join(ext)})' for (text, ext) in filetypes)) - return run(kdialog, f"--title={title}", "--getopenfilename", suggest or ".", k_filters) + return _run_for_stdout(kdialog, f"--title={title}", "--getopenfilename", suggest or ".", k_filters) zenity = which("zenity") if zenity: z_filters = (f'--file-filter={text} ({", ".join(ext)}) | *{" *".join(ext)}' for (text, ext) in filetypes) selection = (f"--filename={suggest}",) if suggest else () - return run(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) + return _run_for_stdout(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) # fall back to tk try: @@ -760,21 +770,18 @@ def _mp_open_directory(res: "multiprocessing.Queue[typing.Optional[str]]", *args def open_directory(title: str, suggest: str = "") -> typing.Optional[str]: - def run(*args: str): - return subprocess.run(args, capture_output=True, text=True).stdout.split("\n", 1)[0] or None - if is_linux: # prefer native dialog from shutil import which kdialog = which("kdialog") if kdialog: - return run(kdialog, f"--title={title}", "--getexistingdirectory", + return _run_for_stdout(kdialog, f"--title={title}", "--getexistingdirectory", os.path.abspath(suggest) if suggest else ".") zenity = which("zenity") if zenity: z_filters = ("--directory",) selection = (f"--filename={os.path.abspath(suggest)}/",) if suggest else () - return run(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) + return _run_for_stdout(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) # fall back to tk try: @@ -801,9 +808,6 @@ def run(*args: str): def messagebox(title: str, text: str, error: bool = False) -> None: - def run(*args: str): - return subprocess.run(args, capture_output=True, text=True).stdout.split("\n", 1)[0] or None - if is_kivy_running(): from kvui import MessageBox MessageBox(title, text, error).open() @@ -814,10 +818,10 @@ def run(*args: str): from shutil import which kdialog = which("kdialog") if kdialog: - return run(kdialog, f"--title={title}", "--error" if error else "--msgbox", text) + return _run_for_stdout(kdialog, f"--title={title}", "--error" if error else "--msgbox", text) zenity = which("zenity") if zenity: - return run(zenity, f"--title={title}", f"--text={text}", "--error" if error else "--info") + return _run_for_stdout(zenity, f"--title={title}", f"--text={text}", "--error" if error else "--info") elif is_windows: import ctypes From a76cec15397efc4758fc1d487fc5cbc97e663d7c Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Tue, 3 Jun 2025 06:51:06 -0400 Subject: [PATCH 123/183] =?UTF-8?q?TUNIC:=20Fix=20decoupled=20ER=20+=20lad?= =?UTF-8?q?der=20storage=20making=20invalid=20entrances=C2=A0#5075?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worlds/tunic/er_rules.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/worlds/tunic/er_rules.py b/worlds/tunic/er_rules.py index 8c0979e3e466..edd6021cba6c 100644 --- a/worlds/tunic/er_rules.py +++ b/worlds/tunic/er_rules.py @@ -56,18 +56,18 @@ def get_portal_info(portal_sd: str) -> Tuple[str, str]: for portal1, portal2 in portal_pairs.items(): if portal1.scene_destination() == portal_sd: return portal1.name, get_portal_outlet_region(portal2, world) - if portal2.scene_destination() == portal_sd: + if portal2.scene_destination() == portal_sd and not (options.decoupled and options.entrance_rando): return portal2.name, get_portal_outlet_region(portal1, world) - raise Exception("No matches found in get_portal_info") + raise Exception(f"No matches found in get_portal_info for {portal_sd}") # input scene destination tag, returns paired portal's name and region def get_paired_portal(portal_sd: str) -> Tuple[str, str]: for portal1, portal2 in portal_pairs.items(): if portal1.scene_destination() == portal_sd: return portal2.name, portal2.region - if portal2.scene_destination() == portal_sd: + if portal2.scene_destination() == portal_sd and not (options.decoupled and options.entrance_rando): return portal1.name, portal1.region - raise Exception("no matches found in get_paired_portal") + raise Exception(f"No matches found in get_paired_portal for {portal_sd}") regions["Menu"].connect( connecting_region=regions["Overworld"]) From b4f68bce7671e83e1fd4a358e506705777228eb6 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Tue, 3 Jun 2025 13:49:44 +0200 Subject: [PATCH 124/183] Factorio: revamp args parsing and passing (#5036) --- worlds/factorio/Client.py | 88 ++++++++++++++++++++++--------------- worlds/factorio/__init__.py | 4 +- 2 files changed, 54 insertions(+), 38 deletions(-) diff --git a/worlds/factorio/Client.py b/worlds/factorio/Client.py index 199cb29b86c0..d7992c327635 100644 --- a/worlds/factorio/Client.py +++ b/worlds/factorio/Client.py @@ -69,7 +69,9 @@ class FactorioContext(CommonContext): # updated by spinup server mod_version: Version = Version(0, 0, 0) - def __init__(self, server_address, password, filter_item_sends: bool, bridge_chat_out: bool): + def __init__(self, server_address, password, filter_item_sends: bool, bridge_chat_out: bool, + rcon_port: int, rcon_password: str, server_settings_path: str | None, + factorio_server_args: tuple[str, ...]): super(FactorioContext, self).__init__(server_address, password) self.send_index: int = 0 self.rcon_client = None @@ -82,6 +84,10 @@ def __init__(self, server_address, password, filter_item_sends: bool, bridge_cha self.filter_item_sends: bool = filter_item_sends self.multiplayer: bool = False # whether multiple different players have connected self.bridge_chat_out: bool = bridge_chat_out + self.rcon_port: int = rcon_port + self.rcon_password: str = rcon_password + self.server_settings_path: str = server_settings_path + self.additional_factorio_server_args = factorio_server_args @property def energylink_key(self) -> str: @@ -126,6 +132,18 @@ def print_to_game(self, text): self.rcon_client.send_command(f"/ap-print [font=default-large-bold]Archipelago:[/font] " f"{text}") + @property + def server_args(self) -> tuple[str, ...]: + if self.server_settings_path: + return ( + "--rcon-port", str(self.rcon_port), + "--rcon-password", self.rcon_password, + "--server-settings", self.server_settings_path, + *self.additional_factorio_server_args) + else: + return ("--rcon-port", str(self.rcon_port), "--rcon-password", self.rcon_password, + *self.additional_factorio_server_args) + @property def energy_link_status(self) -> str: if not self.energy_link_increment: @@ -311,7 +329,7 @@ async def factorio_server_watcher(ctx: FactorioContext): executable, "--create", savegame_name, "--preset", "archipelago" )) factorio_process = subprocess.Popen((executable, "--start-server", savegame_name, - *(str(elem) for elem in server_args)), + *ctx.server_args), stderr=subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.DEVNULL, @@ -331,7 +349,7 @@ async def factorio_server_watcher(ctx: FactorioContext): factorio_queue.task_done() if not ctx.rcon_client and "Starting RCON interface at IP ADDR:" in msg: - ctx.rcon_client = factorio_rcon.RCONClient("localhost", rcon_port, rcon_password, + ctx.rcon_client = factorio_rcon.RCONClient("localhost", ctx.rcon_port, ctx.rcon_password, timeout=5) if not ctx.server: logger.info("Established bridge to Factorio Server. " @@ -422,7 +440,7 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: executable, "--create", savegame_name )) factorio_process = subprocess.Popen( - (executable, "--start-server", savegame_name, *(str(elem) for elem in server_args)), + (executable, "--start-server", savegame_name, *ctx.server_args), stderr=subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.DEVNULL, @@ -451,7 +469,7 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: "or a Factorio sharing data directories is already running. " "Server could not start up.") if not rcon_client and "Starting RCON interface at IP ADDR:" in msg: - rcon_client = factorio_rcon.RCONClient("localhost", rcon_port, rcon_password) + rcon_client = factorio_rcon.RCONClient("localhost", ctx.rcon_port, ctx.rcon_password) if ctx.mod_version == ctx.__class__.mod_version: raise Exception("No Archipelago mod was loaded. Aborting.") await get_info(ctx, rcon_client) @@ -474,9 +492,8 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: return False -async def main(args, filter_item_sends: bool, filter_bridge_chat_out: bool): - ctx = FactorioContext(args.connect, args.password, filter_item_sends, filter_bridge_chat_out) - +async def main(make_context): + ctx = make_context() ctx.server_task = asyncio.create_task(server_loop(ctx), name="ServerLoop") if gui_enabled: @@ -509,38 +526,42 @@ def _handle_color(self, node: JSONMessagePart): return self._handle_text(node) -parser = get_base_parser(description="Optional arguments to FactorioClient follow. " - "Remaining arguments get passed into bound Factorio instance." - "Refer to Factorio --help for those.") -parser.add_argument('--rcon-port', default='24242', type=int, help='Port to use to communicate with Factorio') -parser.add_argument('--rcon-password', help='Password to authenticate with RCON.') -parser.add_argument('--server-settings', help='Factorio server settings configuration file.') - -args, rest = parser.parse_known_args() -rcon_port = args.rcon_port -rcon_password = args.rcon_password if args.rcon_password else ''.join( - random.choice(string.ascii_letters) for x in range(32)) factorio_server_logger = logging.getLogger("FactorioServer") settings: FactorioSettings = get_settings().factorio_options if os.path.samefile(settings.executable, sys.executable): selected_executable = settings.executable settings.executable = FactorioSettings.executable # reset to default - raise Exception(f"FactorioClient was set to run itself {selected_executable}, aborting process bomb.") + raise Exception(f"Factorio Client was set to run itself {selected_executable}, aborting process bomb.") executable = settings.executable -server_settings = args.server_settings if args.server_settings \ - else getattr(settings, "server_settings", None) -server_args = ("--rcon-port", rcon_port, "--rcon-password", rcon_password) - -def launch(): +def launch(*new_args: str): import colorama - global executable, server_settings, server_args + global executable colorama.just_fix_windows_console() + # args handling + parser = get_base_parser(description="Optional arguments to Factorio Client follow. " + "Remaining arguments get passed into bound Factorio instance." + "Refer to Factorio --help for those.") + parser.add_argument('--rcon-port', default='24242', type=int, help='Port to use to communicate with Factorio') + parser.add_argument('--rcon-password', help='Password to authenticate with RCON.') + parser.add_argument('--server-settings', help='Factorio server settings configuration file.') + + args, rest = parser.parse_known_args(args=new_args) + rcon_port = args.rcon_port + rcon_password = args.rcon_password if args.rcon_password else ''.join( + random.choice(string.ascii_letters) for _ in range(32)) + + server_settings = args.server_settings if args.server_settings \ + else getattr(settings, "server_settings", None) + if server_settings: server_settings = os.path.abspath(server_settings) + if not os.path.isfile(server_settings): + raise FileNotFoundError(f"Could not find file {server_settings} for server_settings. Aborting.") + initial_filter_item_sends = bool(settings.filter_item_sends) initial_bridge_chat_out = bool(settings.bridge_chat_out) @@ -554,14 +575,9 @@ def launch(): else: raise FileNotFoundError(f"Path {executable} is not an executable file.") - if server_settings and os.path.isfile(server_settings): - server_args = ( - "--rcon-port", rcon_port, - "--rcon-password", rcon_password, - "--server-settings", server_settings, - *rest) - else: - server_args = ("--rcon-port", rcon_port, "--rcon-password", rcon_password, *rest) - - asyncio.run(main(args, initial_filter_item_sends, initial_bridge_chat_out)) + asyncio.run(main(lambda: FactorioContext( + args.connect, args.password, + initial_filter_item_sends, initial_bridge_chat_out, + rcon_port, rcon_password, server_settings, rest + ))) colorama.deinit() diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index bfa6ceb894e0..8dc654099bac 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -22,9 +22,9 @@ from .settings import FactorioSettings -def launch_client(): +def launch_client(*args: str): from .Client import launch - launch_component(launch, name="FactorioClient") + launch_component(launch, name="Factorio Client", args=args) components.append(Component("Factorio Client", func=launch_client, component_type=Type.CLIENT)) From 603a5005e2f5d055f1b66ac5d75c133459240868 Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Tue, 3 Jun 2025 08:49:10 -0400 Subject: [PATCH 125/183] DS3: Fix Non-Crow Itemlinking and Mark Aldrich Ruby and Twin Dragon Greatshield As Missable (#4510) * Fix Branch (Not Crow) * Oops * Mark Aldrich Ruby as missable * Expand comment * Short circuit * Mark Twin Dragon Greatshield as missable * Add missable cause --- worlds/dark_souls_3/Locations.py | 4 ++-- worlds/dark_souls_3/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index c84d91e516c2..b4e45fb57791 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -884,7 +884,7 @@ def __init__( DS3LocationData("RS: Homeward Bone - balcony by Farron Keep", "Homeward Bone x2"), DS3LocationData("RS: Titanite Shard - woods, surrounded by enemies", "Titanite Shard"), DS3LocationData("RS: Twin Dragon Greatshield - woods by Crucifixion Woods bonfire", - "Twin Dragon Greatshield"), + "Twin Dragon Greatshield", missable=True), # After Eclipse DS3LocationData("RS: Sorcerer Hood - water beneath stronghold", "Sorcerer Hood", hidden=True), # Hidden fall DS3LocationData("RS: Sorcerer Robe - water beneath stronghold", "Sorcerer Robe", @@ -1887,7 +1887,7 @@ def __init__( DS3LocationData("AL: Twinkling Titanite - lizard after light cathedral #2", "Twinkling Titanite", lizard=True), DS3LocationData("AL: Aldrich's Ruby - dark cathedral, miniboss", "Aldrich's Ruby", - miniboss=True), # Deep Accursed drop + miniboss=True, missable=True), # Deep Accursed drop, missable after defeating Aldrich DS3LocationData("AL: Aldrich Faithful - water reserves, talk to McDonnel", "Aldrich Faithful", hidden=True), # Behind illusory wall diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index 5e1003d2a9a2..94150faf0571 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -705,7 +705,7 @@ def set_rules(self) -> None: if self._is_location_available("US: Young White Branch - by white tree #2"): self._add_item_rule( "US: Young White Branch - by white tree #2", - lambda item: item.player == self.player and not item.data.unique + lambda item: item.player != self.player or not item.data.unique ) # Make sure the Storm Ruler is available BEFORE Yhorm the Giant From a2708edc37ff98e70b58f0f552deb14282f5a7ad Mon Sep 17 00:00:00 2001 From: Ehseezed <97066152+Ehseezed@users.noreply.github.com> Date: Wed, 4 Jun 2025 12:51:08 -0500 Subject: [PATCH 126/183] Timespinner: Fix Castle Ramparts Region Connection #5082 Co-authored-by: ehseezed --- worlds/timespinner/Regions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/timespinner/Regions.py b/worlds/timespinner/Regions.py index cb55d9810d57..b9b1d10445ce 100644 --- a/worlds/timespinner/Regions.py +++ b/worlds/timespinner/Regions.py @@ -178,7 +178,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'Space time continuum', 'Upper Lake Serene', lambda state: logic.can_teleport_to(state, "Past", "GateLakeSereneLeft")) connect(world, player, 'Space time continuum', 'Left Side forest Caves', lambda state: logic.can_teleport_to(state, "Past", "GateLakeSereneRight")) connect(world, player, 'Space time continuum', 'Refugee Camp', lambda state: logic.can_teleport_to(state, "Past", "GateAccessToPast")) - connect(world, player, 'Space time continuum', 'Castle Ramparts', lambda state: logic.can_teleport_to(state, "Past", "GateCastleRamparts")) + connect(world, player, 'Space time continuum', 'Forest', lambda state: logic.can_teleport_to(state, "Past", "GateCastleRamparts")) connect(world, player, 'Space time continuum', 'Castle Keep', lambda state: logic.can_teleport_to(state, "Past", "GateCastleKeep")) connect(world, player, 'Space time continuum', 'Royal towers (lower)', lambda state: logic.can_teleport_to(state, "Past", "GateRoyalTowers")) connect(world, player, 'Space time continuum', 'Caves of Banishment (Maw)', lambda state: logic.can_teleport_to(state, "Past", "GateMaw")) From 50db922cefbde107dd33d588ce621336b956a397 Mon Sep 17 00:00:00 2001 From: Jarno Date: Thu, 5 Jun 2025 15:05:00 +0200 Subject: [PATCH 127/183] Timespinner: Fixed generation error because of timezone locking (#5084) * Fixed generation error because of timezone locking * Refactored logic + prevent excluding warps when unchained keys in on --- worlds/timespinner/PreCalculatedWeights.py | 9 ++++++--- worlds/timespinner/__init__.py | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/worlds/timespinner/PreCalculatedWeights.py b/worlds/timespinner/PreCalculatedWeights.py index 3ad7c2c78af0..96551ea7f152 100644 --- a/worlds/timespinner/PreCalculatedWeights.py +++ b/worlds/timespinner/PreCalculatedWeights.py @@ -88,12 +88,15 @@ def get_pyramid_keys_unlocks(options: TimespinnerOptions, random: Random, if options.risky_warps: past_teleportation_gates.append("GateLakeSereneLeft") - present_teleportation_gates.append("GateDadsTower") if not is_xarion_flooded: present_teleportation_gates.append("GateXarion") - if not is_lab_flooded: - present_teleportation_gates.append("GateLabEntrance") + # Prevent going past the lazers without a way to the past + if options.unchained_keys or options.prism_break or not options.pyramid_start: + present_teleportation_gates.append("GateDadsTower") + if not is_lab_flooded: + present_teleportation_gates.append("GateLabEntrance") + # Prevent getting stuck in the past without a way back to the future if options.inverted or (options.pyramid_start and not options.back_to_the_future): all_gates: Tuple[str, ...] = present_teleportation_gates else: diff --git a/worlds/timespinner/__init__.py b/worlds/timespinner/__init__.py index 4d1efc41e53f..77314d40ec7b 100644 --- a/worlds/timespinner/__init__.py +++ b/worlds/timespinner/__init__.py @@ -42,6 +42,7 @@ class TimespinnerWorld(World): topology_present = True web = TimespinnerWebWorld() required_client_version = (0, 4, 2) + ut_can_gen_without_yaml = True item_name_to_id = {name: data.code for name, data in item_table.items()} location_name_to_id = {location.name: location.code for location in get_location_datas(-1, None, None)} From ab7d3ce4aadfc647c42c8d4dd0c7aa10f9e0e49d Mon Sep 17 00:00:00 2001 From: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com> Date: Fri, 6 Jun 2025 00:05:53 +0200 Subject: [PATCH 128/183] shapez: Remove preset unittests #5086 --- worlds/shapez/test/__init__.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/worlds/shapez/test/__init__.py b/worlds/shapez/test/__init__.py index 3ab626e63936..d2dfad97da6f 100644 --- a/worlds/shapez/test/__init__.py +++ b/worlds/shapez/test/__init__.py @@ -92,17 +92,7 @@ def test_global_options_import(self): f"{max_levels_and_upgrades} instead.") -class TestMinimum(ShapezTestBase): - options = options_presets["Minimum checks"] - - -class TestMaximum(ShapezTestBase): - options = options_presets["Maximum checks"] - - -class TestRestrictive(ShapezTestBase): - options = options_presets["Restrictive start"] - +# The following unittests are intended to test all code paths of the generator class TestAllRelevantOptions1(ShapezTestBase): options = { From f25ef639f2d127bb991b6bf30913d1da832816c0 Mon Sep 17 00:00:00 2001 From: qwint Date: Sun, 8 Jun 2025 17:43:23 -0500 Subject: [PATCH 129/183] Launcher: Fix Cli Components when installed to a directory with a space (#5091) --- Launcher.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Launcher.py b/Launcher.py index 82326aacd70a..5720012cf9a7 100644 --- a/Launcher.py +++ b/Launcher.py @@ -196,7 +196,8 @@ def get_exe(component: str | Component) -> Sequence[str] | None: def launch(exe, in_terminal=False): if in_terminal: if is_windows: - subprocess.Popen(['start', *exe], shell=True) + # intentionally using a window title with a space so it gets quoted and treated as a title + subprocess.Popen(["start", "Running Archipelago", *exe], shell=True) return elif is_linux: terminal = which('x-terminal-emulator') or which('gnome-terminal') or which('xterm') From ddb3240591feab473e76b1363fe4b45ff1110610 Mon Sep 17 00:00:00 2001 From: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com> Date: Mon, 9 Jun 2025 08:58:08 -0400 Subject: [PATCH 130/183] KH2: Give warning when client has cached locations (#5000) * a * disconnect when connect to wrong slot * connection to the wrong seed fix * seed_name is always none --- worlds/kh2/Client.py | 58 ++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/worlds/kh2/Client.py b/worlds/kh2/Client.py index 96b406c72f2f..fcd27c4c3cb6 100644 --- a/worlds/kh2/Client.py +++ b/worlds/kh2/Client.py @@ -34,7 +34,7 @@ def __init__(self, server_address, password): self.growthlevel = None self.kh2connected = False self.kh2_finished_game = False - self.serverconneced = False + self.serverconnected = False self.item_name_to_data = {name: data for name, data, in item_dictionary_table.items()} self.location_name_to_data = {name: data for name, data, in all_locations.items()} self.kh2_data_package = {} @@ -47,6 +47,8 @@ def __init__(self, server_address, password): self.location_name_to_worlddata = {name: data for name, data, in all_world_locations.items()} self.sending = [] + self.slot_name = None + self.disconnect_from_server = False # list used to keep track of locations+items player has. Used for disoneccting self.kh2_seed_save_cache = { "itemIndex": -1, @@ -185,11 +187,20 @@ async def server_auth(self, password_requested: bool = False): if password_requested and not self.password: await super(KH2Context, self).server_auth(password_requested) await self.get_username() - await self.send_connect() + # if slot name != first time login or previous name + # and seed name is none or saved seed name + if not self.slot_name and not self.kh2seedname: + await self.send_connect() + elif self.slot_name == self.auth and self.kh2seedname: + await self.send_connect() + else: + logger.info(f"You are trying to connect with data still cached in the client. Close client or connect to the correct slot: {self.slot_name}") + self.serverconnected = False + self.disconnect_from_server = True async def connection_closed(self): self.kh2connected = False - self.serverconneced = False + self.serverconnected = False if self.kh2seedname is not None and self.auth is not None: with open(self.kh2_seed_save_path_join, 'w') as f: f.write(json.dumps(self.kh2_seed_save, indent=4)) @@ -197,7 +208,8 @@ async def connection_closed(self): async def disconnect(self, allow_autoreconnect: bool = False): self.kh2connected = False - self.serverconneced = False + self.serverconnected = False + self.locations_checked = [] if self.kh2seedname not in {None} and self.auth not in {None}: with open(self.kh2_seed_save_path_join, 'w') as f: f.write(json.dumps(self.kh2_seed_save, indent=4)) @@ -239,7 +251,15 @@ def kh2_read_string(self, address, length): def on_package(self, cmd: str, args: dict): if cmd == "RoomInfo": - self.kh2seedname = args['seed_name'] + if not self.kh2seedname: + self.kh2seedname = args['seed_name'] + elif self.kh2seedname != args['seed_name']: + self.disconnect_from_server = True + self.serverconnected = False + self.kh2connected = False + logger.info("Connection to the wrong seed, connect to the correct seed or close the client.") + return + self.kh2_seed_save_path = f"kh2save2{self.kh2seedname}{self.auth}.json" self.kh2_seed_save_path_join = os.path.join(self.game_communication_path, self.kh2_seed_save_path) @@ -338,7 +358,7 @@ def on_package(self, cmd: str, args: dict): }, }, } - if start_index > self.kh2_seed_save_cache["itemIndex"] and self.serverconneced: + if start_index > self.kh2_seed_save_cache["itemIndex"] and self.serverconnected: self.kh2_seed_save_cache["itemIndex"] = start_index for item in args['items']: asyncio.create_task(self.give_item(item.item, item.location)) @@ -370,12 +390,14 @@ def connect_to_game(self): if not self.kh2: self.kh2 = pymem.Pymem(process_name="KINGDOM HEARTS II FINAL MIX") self.get_addresses() - +# except Exception as e: if self.kh2connected: self.kh2connected = False logger.info("Game is not open.") - self.serverconneced = True + + self.serverconnected = True + self.slot_name = self.auth def data_package_kh2_cache(self, loc_to_id, item_to_id): self.kh2_loc_name_to_id = loc_to_id @@ -930,7 +952,7 @@ def finishedGame(ctx: KH2Context): async def kh2_watcher(ctx: KH2Context): while not ctx.exit_event.is_set(): try: - if ctx.kh2connected and ctx.serverconneced: + if ctx.kh2connected and ctx.serverconnected: ctx.sending = [] await asyncio.create_task(ctx.checkWorldLocations()) await asyncio.create_task(ctx.checkLevels()) @@ -944,13 +966,19 @@ async def kh2_watcher(ctx: KH2Context): if ctx.sending: message = [{"cmd": 'LocationChecks', "locations": ctx.sending}] await ctx.send_msgs(message) - elif not ctx.kh2connected and ctx.serverconneced: - logger.info("Game Connection lost. waiting 15 seconds until trying to reconnect.") + elif not ctx.kh2connected and ctx.serverconnected: + logger.info("Game Connection lost. trying to reconnect.") ctx.kh2 = None - while not ctx.kh2connected and ctx.serverconneced: - await asyncio.sleep(15) - ctx.kh2 = pymem.Pymem(process_name="KINGDOM HEARTS II FINAL MIX") - ctx.get_addresses() + while not ctx.kh2connected and ctx.serverconnected: + try: + ctx.kh2 = pymem.Pymem(process_name="KINGDOM HEARTS II FINAL MIX") + ctx.get_addresses() + logger.info("Game Connection Established.") + except Exception as e: + await asyncio.sleep(5) + if ctx.disconnect_from_server: + ctx.disconnect_from_server = False + await ctx.disconnect() except Exception as e: if ctx.kh2connected: ctx.kh2connected = False From a8c87ce54ba68007e5f8f291355ffeeeed408ca1 Mon Sep 17 00:00:00 2001 From: BadMagic100 Date: Mon, 9 Jun 2025 20:55:40 -0700 Subject: [PATCH 131/183] CI: Add GH_REPO environment variable to labeler (#5081) --- .github/workflows/label-pull-requests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/label-pull-requests.yml b/.github/workflows/label-pull-requests.yml index bc0f6999b6a8..4a7d4034590a 100644 --- a/.github/workflows/label-pull-requests.yml +++ b/.github/workflows/label-pull-requests.yml @@ -6,6 +6,8 @@ on: permissions: contents: read pull-requests: write +env: + GH_REPO: ${{ github.repository }} jobs: labeler: From 52b11083fe23a6fdbf01ee4cda1dd2bc97800006 Mon Sep 17 00:00:00 2001 From: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com> Date: Wed, 11 Jun 2025 15:52:47 -0400 Subject: [PATCH 132/183] KH2: Raise Exception for Misusing DonaldGoofyStatsanity Option (#4710) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/kh2/Client.py | 30 +++++++++++++++++++++++++----- worlds/kh2/__init__.py | 11 ++++++----- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/worlds/kh2/Client.py b/worlds/kh2/Client.py index fcd27c4c3cb6..5a26231c0cad 100644 --- a/worlds/kh2/Client.py +++ b/worlds/kh2/Client.py @@ -515,23 +515,38 @@ async def verifyLevel(self): async def give_item(self, item, location): try: - # todo: ripout all the itemtype stuff and just have one dictionary. the only thing that needs to be tracked from the server/local is abilites - #sleep so we can get the datapackage and not miss any items that were sent to us while we didnt have our item id dicts + # sleep so we can get the datapackage and not miss any items that were sent to us while we didnt have our item id dicts while not self.lookup_id_to_item: await asyncio.sleep(0.5) itemname = self.lookup_id_to_item[item] itemdata = self.item_name_to_data[itemname] - # itemcode = self.kh2_item_name_to_id[itemname] if itemdata.ability: if location in self.all_weapon_location_id: return + # growth have reserved ability slots because of how the goa handles them if itemname in {"High Jump", "Quick Run", "Dodge Roll", "Aerial Dodge", "Glide"}: self.kh2_seed_save_cache["AmountInvo"]["Growth"][itemname] += 1 return if itemname not in self.kh2_seed_save_cache["AmountInvo"]["Ability"]: self.kh2_seed_save_cache["AmountInvo"]["Ability"][itemname] = [] - # appending the slot that the ability should be in + # appending the slot that the ability should be in + # abilities have a limit amount of slots. + # we start from the back going down to not mess with stuff. + # Front of Invo + # Sora: Save+24F0+0x54 : 0x2546 + # Donald: Save+2604+0x54 : 0x2658 + # Goofy: Save+2718+0x54 : 0x276C + # Back of Invo. Sora has 6 ability slots that are reserved + # Sora: Save+24F0+0x54+0x92 : 0x25D8 + # Donald: Save+2604+0x54+0x9C : 0x26F4 + # Goofy: Save+2718+0x54+0x9C : 0x2808 + # seed has 2 scans in sora's abilities + # recieved second scan + # if len(seed_save(Scan:[ability slot 52]) < (2)amount of that ability they should have from slot data + # ability_slot = back of inventory that isnt taken + # add ability_slot to seed_save(Scan[]) so now its Scan:[ability slot 52,50] + # decrease back of inventory since its ability_slot is already taken if len(self.kh2_seed_save_cache["AmountInvo"]["Ability"][itemname]) < \ self.AbilityQuantityDict[itemname]: if itemname in self.sora_ability_set: @@ -550,18 +565,21 @@ async def give_item(self, item, location): if ability_slot in self.front_ability_slots: self.front_ability_slots.remove(ability_slot) + # if itemdata in {bitmask} all the forms,summons and a few other things are bitmasks elif itemdata.memaddr in {0x36C4, 0x36C5, 0x36C6, 0x36C0, 0x36CA}: # if memaddr is in a bitmask location in memory if itemname not in self.kh2_seed_save_cache["AmountInvo"]["Bitmask"]: self.kh2_seed_save_cache["AmountInvo"]["Bitmask"].append(itemname) + # if itemdata in {magic} elif itemdata.memaddr in {0x3594, 0x3595, 0x3596, 0x3597, 0x35CF, 0x35D0}: - # if memaddr is in magic addresses self.kh2_seed_save_cache["AmountInvo"]["Magic"][itemname] += 1 + # equipment is a list instead of dict because you can only have 1 currently elif itemname in self.all_equipment: self.kh2_seed_save_cache["AmountInvo"]["Equipment"].append(itemname) + # weapons are done differently since you can only have one and has to check it differently elif itemname in self.all_weapons: if itemname in self.keyblade_set: self.kh2_seed_save_cache["AmountInvo"]["Weapon"]["Sora"].append(itemname) @@ -570,9 +588,11 @@ async def give_item(self, item, location): else: self.kh2_seed_save_cache["AmountInvo"]["Weapon"]["Goofy"].append(itemname) + # TODO: this can just be removed and put into the else below it elif itemname in self.stat_increase_set: self.kh2_seed_save_cache["AmountInvo"]["StatIncrease"][itemname] += 1 else: + # "normal" items. They have a unique byte reserved for how many they have if itemname in self.kh2_seed_save_cache["AmountInvo"]["Amount"]: self.kh2_seed_save_cache["AmountInvo"]["Amount"][itemname] += 1 else: diff --git a/worlds/kh2/__init__.py b/worlds/kh2/__init__.py index defb285d509c..19c2aee61f12 100644 --- a/worlds/kh2/__init__.py +++ b/worlds/kh2/__init__.py @@ -277,9 +277,7 @@ def generate_early(self) -> None: if self.options.FillerItemsLocal: for item in filler_items: self.options.local_items.value.add(item) - # By imitating remote this doesn't have to be plandoded filler anymore - # for location in {LocationName.JunkMedal, LocationName.JunkMedal}: - # self.plando_locations[location] = random_stt_item + if not self.options.SummonLevelLocationToggle: self.total_locations -= 6 @@ -400,6 +398,8 @@ def goofy_pre_fill(self): # plando goofy get bonuses goofy_get_bonus_location_pool = [self.multiworld.get_location(location, self.player) for location in Goofy_Checks.keys() if Goofy_Checks[location].yml != "Keyblade"] + if len(goofy_get_bonus_location_pool) > len(self.goofy_get_bonus_abilities): + raise Exception(f"Too little abilities to fill goofy get bonus locations for player {self.player_name}.") for location in goofy_get_bonus_location_pool: self.random.choice(self.goofy_get_bonus_abilities) random_ability = self.random.choice(self.goofy_get_bonus_abilities) @@ -416,11 +416,12 @@ def donald_pre_fill(self): random_ability = self.random.choice(self.donald_weapon_abilities) location.place_locked_item(random_ability) self.donald_weapon_abilities.remove(random_ability) - + # if option is turned off if not self.options.DonaldGoofyStatsanity: - # plando goofy get bonuses donald_get_bonus_location_pool = [self.multiworld.get_location(location, self.player) for location in Donald_Checks.keys() if Donald_Checks[location].yml != "Keyblade"] + if len(donald_get_bonus_location_pool) > len(self.donald_get_bonus_abilities): + raise Exception(f"Too little abilities to fill donald get bonus locations for player {self.player_name}.") for location in donald_get_bonus_location_pool: random_ability = self.random.choice(self.donald_get_bonus_abilities) location.place_locked_item(random_ability) From aecbb2ab0259e8683dc848b538ac2ab7d5ee1fb9 Mon Sep 17 00:00:00 2001 From: qwint Date: Fri, 13 Jun 2025 05:28:58 -0500 Subject: [PATCH 133/183] fix saving princess's use of subprocess helpers (#5103) --- worlds/saving_princess/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/saving_princess/__init__.py b/worlds/saving_princess/__init__.py index 4109f356fd2e..f731012abc8e 100644 --- a/worlds/saving_princess/__init__.py +++ b/worlds/saving_princess/__init__.py @@ -12,7 +12,7 @@ def launch_client(*args: str): from .Client import launch - launch_subprocess(launch(*args), name=CLIENT_NAME) + launch_subprocess(launch, name=CLIENT_NAME, args=args) components.append( From 8c6327d024e6d18503b018b3555c0f24d88b13a6 Mon Sep 17 00:00:00 2001 From: qwint Date: Fri, 13 Jun 2025 14:56:09 -0500 Subject: [PATCH 134/183] LTTP/SDV: use .name when appropriate in subtests (#5107) --- worlds/alttp/test/options/test_dungeon_fill.py | 4 ++-- .../test/regions/TestEntranceClassifications.py | 2 +- .../stardew_valley/test/regions/TestRegionConnections.py | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/worlds/alttp/test/options/test_dungeon_fill.py b/worlds/alttp/test/options/test_dungeon_fill.py index 17501b65d87c..4a0d30f7d9ad 100644 --- a/worlds/alttp/test/options/test_dungeon_fill.py +++ b/worlds/alttp/test/options/test_dungeon_fill.py @@ -38,7 +38,7 @@ def generate_with_options(self, option_value: int): def test_original_dungeons(self): self.generate_with_options(DungeonItem.option_original_dungeon) for location in self.multiworld.get_filled_locations(): - with (self.subTest(location=location)): + with (self.subTest(location_name=location.name)): if location.parent_region.dungeon is None: self.assertIs(location.item.dungeon, None) else: @@ -52,7 +52,7 @@ def test_original_dungeons(self): def test_own_dungeons(self): self.generate_with_options(DungeonItem.option_own_dungeons) for location in self.multiworld.get_filled_locations(): - with self.subTest(location=location): + with self.subTest(location_name=location.name): if location.parent_region.dungeon is None: self.assertIs(location.item.dungeon, None) else: diff --git a/worlds/stardew_valley/test/regions/TestEntranceClassifications.py b/worlds/stardew_valley/test/regions/TestEntranceClassifications.py index 43a7090482b9..4bc13cb51cf8 100644 --- a/worlds/stardew_valley/test/regions/TestEntranceClassifications.py +++ b/worlds/stardew_valley/test/regions/TestEntranceClassifications.py @@ -11,7 +11,7 @@ def assert_non_progression_are_all_accessible_with_empty_inventory(self: SVTestB non_progression_connections = [connection for connection in all_connections.values() if RandomizationFlag.BIT_NON_PROGRESSION in connection.flag] for non_progression_connections in non_progression_connections: - with self.subTest(connection=non_progression_connections): + with self.subTest(connection=non_progression_connections.name): self.assert_can_reach_entrance(non_progression_connections.name) diff --git a/worlds/stardew_valley/test/regions/TestRegionConnections.py b/worlds/stardew_valley/test/regions/TestRegionConnections.py index 42a2e36124aa..f20ef7943c90 100644 --- a/worlds/stardew_valley/test/regions/TestRegionConnections.py +++ b/worlds/stardew_valley/test/regions/TestRegionConnections.py @@ -12,14 +12,14 @@ class TestVanillaRegionsConnectionsWithGingerIsland(unittest.TestCase): def test_region_exits_lead_somewhere(self): for region in vanilla_data.regions_with_ginger_island_by_name.values(): - with self.subTest(region=region): + with self.subTest(region=region.name): for exit_ in region.exits: self.assertIn(exit_, vanilla_data.connections_with_ginger_island_by_name, f"{region.name} is leading to {exit_} but it does not exist.") def test_connection_lead_somewhere(self): for connection in vanilla_data.connections_with_ginger_island_by_name.values(): - with self.subTest(connection=connection): + with self.subTest(connection=connection.name): self.assertIn(connection.destination, vanilla_data.regions_with_ginger_island_by_name, f"{connection.name} is leading to {connection.destination} but it does not exist.") @@ -27,14 +27,14 @@ def test_connection_lead_somewhere(self): class TestVanillaRegionsConnectionsWithoutGingerIsland(unittest.TestCase): def test_region_exits_lead_somewhere(self): for region in vanilla_data.regions_without_ginger_island_by_name.values(): - with self.subTest(region=region): + with self.subTest(region=region.name): for exit_ in region.exits: self.assertIn(exit_, vanilla_data.connections_without_ginger_island_by_name, f"{region.name} is leading to {exit_} but it does not exist.") def test_connection_lead_somewhere(self): for connection in vanilla_data.connections_without_ginger_island_by_name.values(): - with self.subTest(connection=connection): + with self.subTest(connection=connection.name): self.assertIn(connection.destination, vanilla_data.regions_without_ginger_island_by_name, f"{connection.name} is leading to {connection.destination} but it does not exist.") From 0ad4527719c60caacbb6b1777b256556c7ad52d9 Mon Sep 17 00:00:00 2001 From: PoryGone <98504756+PoryGone@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:01:19 -0400 Subject: [PATCH 135/183] SA2B: Logic Fixes (#5095) - Fixed King Boom Boo being able to appear in multiple boss gates - `Final Rush - 16 Animals (Expert)` no longer requires `Sonic - Bounce Bracelet` - `Dry Lagoon - 5 (Standard)` now requires `Rouge - Pick Nails` - `Sand Ocean - Extra Life Box 2 (Standard/Hard/Expert)` no longer requires `Eggman - Jet Engine` - `Security Hall - 8 Animals (Expert)` no longer requires `Rouge - Pick Nails` - `Sky Rail - Item Box 8 (Standard)` now requires `Shadow - Air Shoes` and `Shadow - Mystic Melody` - `Cosmic Wall - Chao Key 1 (Standard/Hard/Expert)` no longer requires `Eggman - Mystic Melody` - `Cannon's Core - Pipe 2 (Expert)` no longer requires `Tails - Booster` - `Cannon's Core - Gold Beetle` no longer requires `Tails - Booster` nor `Knuckles - Hammer Gloves` --- worlds/sa2b/GateBosses.py | 13 ++++++++----- worlds/sa2b/Rules.py | 33 +++++++++------------------------ 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/worlds/sa2b/GateBosses.py b/worlds/sa2b/GateBosses.py index 9e1a81bae94b..02e089359bfe 100644 --- a/worlds/sa2b/GateBosses.py +++ b/worlds/sa2b/GateBosses.py @@ -1,6 +1,7 @@ import typing from BaseClasses import MultiWorld +from Options import OptionError from worlds.AutoWorld import World from .Names import LocationName @@ -99,8 +100,9 @@ def get_gate_bosses(world: World): pass if boss in plando_bosses: - # TODO: Raise error here. Duplicates not allowed - pass + raise OptionError(f"Invalid input for option `plando_bosses`: " + f"No Duplicate Bosses permitted ({boss}) - for " + f"{world.player_name}") plando_bosses[boss_num] = boss @@ -108,13 +110,14 @@ def get_gate_bosses(world: World): available_bosses.remove(boss) for x in range(world.options.number_of_level_gates): - if ("king boom boo" not in selected_bosses) and ("king boom boo" not in available_bosses) and ((x + 1) / world.options.number_of_level_gates) > 0.5: - available_bosses.extend(gate_bosses_with_requirements_table) + if (10 not in selected_bosses) and (king_boom_boo not in available_bosses) and ((x + 1) / world.options.number_of_level_gates) > 0.5: + available_bosses.extend(gate_bosses_with_requirements_table.keys()) world.random.shuffle(available_bosses) chosen_boss = available_bosses[0] if plando_bosses[x] != "None": - available_bosses.append(plando_bosses[x]) + if plando_bosses[x] not in available_bosses: + available_bosses.append(plando_bosses[x]) chosen_boss = plando_bosses[x] selected_bosses.append(all_gate_bosses_table[chosen_boss]) diff --git a/worlds/sa2b/Rules.py b/worlds/sa2b/Rules.py index 9019a5b0330b..a7ea9becb1cf 100644 --- a/worlds/sa2b/Rules.py +++ b/worlds/sa2b/Rules.py @@ -324,7 +324,8 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla add_rule_safe(multiworld, LocationName.iron_gate_5, player, lambda state: state.has(ItemName.eggman_large_cannon, player)) add_rule_safe(multiworld, LocationName.dry_lagoon_5, player, - lambda state: state.has(ItemName.rouge_treasure_scope, player)) + lambda state: state.has(ItemName.rouge_pick_nails, player) and + state.has(ItemName.rouge_treasure_scope, player)) add_rule_safe(multiworld, LocationName.sand_ocean_5, player, lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule_safe(multiworld, LocationName.egg_quarters_5, player, @@ -407,8 +408,7 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla lambda state: state.has(ItemName.sonic_bounce_bracelet, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_chao_1, player), - lambda state: state.has(ItemName.eggman_mystic_melody, player) and - state.has(ItemName.eggman_jet_engine, player)) + lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.cannon_core_chao_1, player), lambda state: state.has(ItemName.tails_booster, player) and @@ -1402,8 +1402,6 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla state.has(ItemName.eggman_large_cannon, player))) add_rule(multiworld.get_location(LocationName.dry_lagoon_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) - add_rule(multiworld.get_location(LocationName.sand_ocean_lifebox_2, player), - lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.egg_quarters_lifebox_2, player), lambda state: (state.has(ItemName.rouge_mystic_melody, player) and state.has(ItemName.rouge_treasure_scope, player))) @@ -1724,6 +1722,9 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.white_jungle_itembox_8, player), lambda state: state.has(ItemName.shadow_air_shoes, player)) + add_rule(multiworld.get_location(LocationName.sky_rail_itembox_8, player), + lambda state: (state.has(ItemName.shadow_air_shoes, player) and + state.has(ItemName.shadow_mystic_melody, player))) add_rule(multiworld.get_location(LocationName.mad_space_itembox_8, player), lambda state: state.has(ItemName.rouge_iron_boots, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_itembox_8, player), @@ -2308,8 +2309,7 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: lambda state: state.has(ItemName.tails_booster, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_chao_1, player), - lambda state: state.has(ItemName.eggman_mystic_melody, player) and - state.has(ItemName.eggman_jet_engine, player)) + lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.cannon_core_chao_1, player), lambda state: state.has(ItemName.tails_booster, player) and @@ -2980,8 +2980,6 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: state.has(ItemName.eggman_jet_engine, player))) add_rule(multiworld.get_location(LocationName.dry_lagoon_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) - add_rule(multiworld.get_location(LocationName.sand_ocean_lifebox_2, player), - lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.egg_quarters_lifebox_2, player), lambda state: (state.has(ItemName.rouge_mystic_melody, player) and state.has(ItemName.rouge_treasure_scope, player))) @@ -3593,8 +3591,7 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe lambda state: state.has(ItemName.tails_booster, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_chao_1, player), - lambda state: state.has(ItemName.eggman_mystic_melody, player) and - state.has(ItemName.eggman_jet_engine, player)) + lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.cannon_core_chao_1, player), lambda state: state.has(ItemName.eggman_jet_engine, player) and @@ -3643,9 +3640,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe add_rule(multiworld.get_location(LocationName.cosmic_wall_pipe_2, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) - add_rule(multiworld.get_location(LocationName.cannon_core_pipe_2, player), - lambda state: state.has(ItemName.tails_booster, player)) - add_rule(multiworld.get_location(LocationName.prison_lane_pipe_3, player), lambda state: state.has(ItemName.tails_bazooka, player)) add_rule(multiworld.get_location(LocationName.mission_street_pipe_3, player), @@ -3771,10 +3765,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe add_rule(multiworld.get_location(LocationName.cosmic_wall_beetle, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) - add_rule(multiworld.get_location(LocationName.cannon_core_beetle, player), - lambda state: state.has(ItemName.tails_booster, player) and - state.has(ItemName.knuckles_hammer_gloves, player)) - # Animal Upgrade Requirements if world.options.animalsanity: add_rule(multiworld.get_location(LocationName.hidden_base_animal_2, player), @@ -3839,8 +3829,7 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe add_rule(multiworld.get_location(LocationName.weapons_bed_animal_8, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.security_hall_animal_8, player), - lambda state: state.has(ItemName.rouge_pick_nails, player) and - state.has(ItemName.rouge_iron_boots, player)) + lambda state: state.has(ItemName.rouge_iron_boots, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_animal_8, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) @@ -3976,8 +3965,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe state.has(ItemName.tails_bazooka, player)) add_rule(multiworld.get_location(LocationName.crazy_gadget_animal_16, player), lambda state: state.has(ItemName.sonic_flame_ring, player)) - add_rule(multiworld.get_location(LocationName.final_rush_animal_16, player), - lambda state: state.has(ItemName.sonic_bounce_bracelet, player)) add_rule(multiworld.get_location(LocationName.final_chase_animal_17, player), lambda state: state.has(ItemName.shadow_flame_ring, player)) @@ -4035,8 +4022,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.dry_lagoon_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) - add_rule(multiworld.get_location(LocationName.sand_ocean_lifebox_2, player), - lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.egg_quarters_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) From 068a7573737078d413cdd0fe1ea4c94bc2903821 Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Fri, 13 Jun 2025 20:29:06 -0400 Subject: [PATCH 136/183] Item Plando: Fix `count` value (#5101) --- Fill.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Fill.py b/Fill.py index d0a42c07ebcd..87d6b02e0921 100644 --- a/Fill.py +++ b/Fill.py @@ -937,13 +937,16 @@ def failed(warning: str, force: bool | str) -> None: count = block.count if not count: - count = len(new_block.items) + count = (min(len(new_block.items), len(new_block.resolved_locations)) + if new_block.resolved_locations else len(new_block.items)) if isinstance(count, int): count = {"min": count, "max": count} if "min" not in count: count["min"] = 0 if "max" not in count: - count["max"] = len(new_block.items) + count["max"] = (min(len(new_block.items), len(new_block.resolved_locations)) + if new_block.resolved_locations else len(new_block.items)) + new_block.count = count plando_blocks[player].append(new_block) From e83e178b63272d2a1ec96dd2ae04dbae64c3f737 Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Fri, 13 Jun 2025 20:29:23 -0400 Subject: [PATCH 137/183] Stardew Valley: Fix 3 Logic Issues (#5094) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/stardew_valley/data/bundle_data.py | 10 ++++---- worlds/stardew_valley/logic/logic.py | 24 +++++++++++-------- .../strings/monster_drop_names.py | 5 ---- .../stardew_valley/test/rules/TestFishing.py | 9 +++---- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/worlds/stardew_valley/data/bundle_data.py b/worlds/stardew_valley/data/bundle_data.py index 3a5523ecdd3f..3f289d33cd1a 100644 --- a/worlds/stardew_valley/data/bundle_data.py +++ b/worlds/stardew_valley/data/bundle_data.py @@ -271,11 +271,11 @@ void_essence = BundleItem(Loot.void_essence) petrified_slime = BundleItem(Mineral.petrified_slime) -blue_slime_egg = BundleItem(Loot.blue_slime_egg) -red_slime_egg = BundleItem(Loot.red_slime_egg) -purple_slime_egg = BundleItem(Loot.purple_slime_egg) -green_slime_egg = BundleItem(Loot.green_slime_egg) -tiger_slime_egg = BundleItem(Loot.tiger_slime_egg, source=BundleItem.Sources.island) +blue_slime_egg = BundleItem(AnimalProduct.slime_egg_blue) +red_slime_egg = BundleItem(AnimalProduct.slime_egg_red) +purple_slime_egg = BundleItem(AnimalProduct.slime_egg_purple) +green_slime_egg = BundleItem(AnimalProduct.slime_egg_green) +tiger_slime_egg = BundleItem(AnimalProduct.slime_egg_tiger, source=BundleItem.Sources.island) cherry_bomb = BundleItem(Bomb.cherry_bomb, 5) bomb = BundleItem(Bomb.bomb, 2) diff --git a/worlds/stardew_valley/logic/logic.py b/worlds/stardew_valley/logic/logic.py index 716dd06571aa..42bfb9cc2604 100644 --- a/worlds/stardew_valley/logic/logic.py +++ b/worlds/stardew_valley/logic/logic.py @@ -168,15 +168,16 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC AnimalProduct.squid_ink: self.mine.can_mine_in_the_mines_floor_81_120() | (self.building.has_building(Building.fish_pond) & self.has(Fish.squid)), AnimalProduct.sturgeon_roe: self.has(Fish.sturgeon) & self.building.has_building(Building.fish_pond), AnimalProduct.truffle: self.animal.has_animal(Animal.pig) & self.season.has_any_not_winter(), - AnimalProduct.void_egg: self.has(AnimalProduct.void_egg_starter), # Should also check void chicken if there was an alternative to obtain it without void egg + AnimalProduct.void_egg: self.has(AnimalProduct.void_egg_starter), # Should also check void chicken if there was an alternative to obtain it without void egg AnimalProduct.wool: self.animal.has_animal(Animal.rabbit) | self.animal.has_animal(Animal.sheep), AnimalProduct.slime_egg_green: self.has(Machine.slime_egg_press) & self.has(Loot.slime), AnimalProduct.slime_egg_blue: self.has(Machine.slime_egg_press) & self.has(Loot.slime) & self.time.has_lived_months(3), AnimalProduct.slime_egg_red: self.has(Machine.slime_egg_press) & self.has(Loot.slime) & self.time.has_lived_months(6), AnimalProduct.slime_egg_purple: self.has(Machine.slime_egg_press) & self.has(Loot.slime) & self.time.has_lived_months(9), - AnimalProduct.slime_egg_tiger: self.has(Fish.lionfish) & self.building.has_building(Building.fish_pond), - AnimalProduct.duck_egg_starter: self.logic.false_, # It could be purchased at the Feast of the Winter Star, but it's random every year, so not considering it yet... - AnimalProduct.dinosaur_egg_starter: self.logic.false_, # Dinosaur eggs are also part of the museum rules, and I don't want to touch them yet. + AnimalProduct.slime_egg_tiger: self.can_fish_pond(Fish.lionfish, *(Forageable.ginger, Fruit.pineapple, Fruit.mango)) & self.time.has_lived_months(12) & + self.building.has_building(Building.slime_hutch) & self.monster.can_kill(Monster.tiger_slime), + AnimalProduct.duck_egg_starter: self.logic.false_, # It could be purchased at the Feast of the Winter Star, but it's random every year, so not considering it yet... + AnimalProduct.dinosaur_egg_starter: self.logic.false_, # Dinosaur eggs are also part of the museum rules, and I don't want to touch them yet. AnimalProduct.egg_starter: self.logic.false_, # It could be purchased at the Desert Festival, but festival logic is quite a mess, so not considering it yet... AnimalProduct.golden_egg_starter: self.received(AnimalProduct.golden_egg) & (self.money.can_spend_at(Region.ranch, 100000) | self.money.can_trade_at(Region.qi_walnut_room, Currency.qi_gem, 100)), AnimalProduct.void_egg_starter: self.money.can_spend_at(Region.sewer, 5000) | (self.building.has_building(Building.fish_pond) & self.has(Fish.void_salmon)), @@ -233,7 +234,7 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC Forageable.secret_note: self.quest.has_magnifying_glass() & (self.ability.can_chop_trees() | self.mine.can_mine_in_the_mines_floor_1_40()), # Fossil.bone_fragment: (self.region.can_reach(Region.dig_site) & self.tool.has_tool(Tool.pickaxe)) | self.monster.can_kill(Monster.skeleton), Fossil.fossilized_leg: self.region.can_reach(Region.dig_site) & self.tool.has_tool(Tool.pickaxe), - Fossil.fossilized_ribs: self.region.can_reach(Region.island_south) & self.tool.has_tool(Tool.hoe), + Fossil.fossilized_ribs: self.region.can_reach(Region.island_south) & self.tool.has_tool(Tool.hoe) & self.received("Open Professor Snail Cave"), Fossil.fossilized_skull: self.action.can_open_geode(Geode.golden_coconut), Fossil.fossilized_spine: self.fishing.can_fish_at(Region.dig_site), Fossil.fossilized_tail: self.action.can_pan_at(Region.dig_site, ToolMaterial.copper), @@ -288,9 +289,9 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC MetalBar.quartz: self.can_smelt(Mineral.quartz) | self.can_smelt("Fire Quartz") | (self.has(Machine.recycling_machine) & (self.has(Trash.broken_cd) | self.has(Trash.broken_glasses))), MetalBar.radioactive: self.can_smelt(Ore.radioactive), Ore.copper: self.mine.can_mine_in_the_mines_floor_1_40() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.copper), - Ore.gold: self.mine.can_mine_in_the_mines_floor_81_120() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.iron), - Ore.iridium: self.mine.can_mine_in_the_skull_cavern() | self.can_fish_pond(Fish.super_cucumber) | self.tool.has_tool(Tool.pan, ToolMaterial.gold), - Ore.iron: self.mine.can_mine_in_the_mines_floor_41_80() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.copper), + Ore.gold: self.mine.can_mine_in_the_mines_floor_81_120() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.gold), + Ore.iridium: self.count(2, *(self.mine.can_mine_in_the_skull_cavern(), self.can_fish_pond(Fish.super_cucumber), self.tool.has_tool(Tool.pan, ToolMaterial.iridium))), + Ore.iron: self.mine.can_mine_in_the_mines_floor_41_80() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.iron), Ore.radioactive: self.ability.can_mine_perfectly() & self.region.can_reach(Region.qi_walnut_room), RetainingSoil.basic: self.money.can_spend_at(Region.pierre_store, 100), RetainingSoil.quality: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), @@ -381,5 +382,8 @@ def has_movie_theater(self) -> StardewRule: def can_use_obelisk(self, obelisk: str) -> StardewRule: return self.region.can_reach(Region.farm) & self.received(obelisk) - def can_fish_pond(self, fish: str) -> StardewRule: - return self.building.has_building(Building.fish_pond) & self.has(fish) + def can_fish_pond(self, fish: str, *items: str) -> StardewRule: + rule = self.building.has_building(Building.fish_pond) & self.has(fish) + if items: + rule = rule & self.has_all(*items) + return rule diff --git a/worlds/stardew_valley/strings/monster_drop_names.py b/worlds/stardew_valley/strings/monster_drop_names.py index df2cacf0c6aa..8612b3c7b52c 100644 --- a/worlds/stardew_valley/strings/monster_drop_names.py +++ b/worlds/stardew_valley/strings/monster_drop_names.py @@ -1,9 +1,4 @@ class Loot: - blue_slime_egg = "Blue Slime Egg" - red_slime_egg = "Red Slime Egg" - purple_slime_egg = "Purple Slime Egg" - green_slime_egg = "Green Slime Egg" - tiger_slime_egg = "Tiger Slime Egg" slime = "Slime" bug_meat = "Bug Meat" bat_wing = "Bat Wing" diff --git a/worlds/stardew_valley/test/rules/TestFishing.py b/worlds/stardew_valley/test/rules/TestFishing.py index 3649592301c4..22e6321a7a93 100644 --- a/worlds/stardew_valley/test/rules/TestFishing.py +++ b/worlds/stardew_valley/test/rules/TestFishing.py @@ -8,7 +8,7 @@ class TestNeedRegionToCatchFish(SVTestBase): SeasonRandomization.internal_name: SeasonRandomization.option_disabled, ElevatorProgression.internal_name: ElevatorProgression.option_vanilla, SkillProgression.internal_name: SkillProgression.option_vanilla, - ToolProgression.internal_name: ToolProgression.option_vanilla, + ToolProgression.internal_name: ToolProgression.option_progressive, Fishsanity.internal_name: Fishsanity.option_all, ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false, SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_qi, @@ -18,7 +18,7 @@ def test_catch_fish_requires_region_unlock(self): fish_and_items = { Fish.crimsonfish: ["Beach Bridge"], Fish.void_salmon: ["Railroad Boulder Removed", "Dark Talisman"], - Fish.woodskip: ["Glittering Boulder Removed", "Progressive Weapon"], # For the ores to get the axe upgrades + Fish.woodskip: ["Progressive Axe", "Progressive Axe", "Progressive Weapon"], # For the ores to get the axe upgrades Fish.mutant_carp: ["Rusty Key"], Fish.slimejack: ["Railroad Boulder Removed", "Rusty Key"], Fish.lionfish: ["Boat Repair"], @@ -26,8 +26,8 @@ def test_catch_fish_requires_region_unlock(self): Fish.stingray: ["Boat Repair", "Island Resort"], Fish.ghostfish: ["Progressive Weapon"], Fish.stonefish: ["Progressive Weapon"], - Fish.ice_pip: ["Progressive Weapon", "Progressive Weapon"], - Fish.lava_eel: ["Progressive Weapon", "Progressive Weapon", "Progressive Weapon"], + Fish.ice_pip: ["Progressive Weapon", "Progressive Weapon", "Progressive Pickaxe", "Progressive Pickaxe"], + Fish.lava_eel: ["Progressive Weapon", "Progressive Weapon", "Progressive Weapon", "Progressive Pickaxe", "Progressive Pickaxe", "Progressive Pickaxe"], Fish.sandfish: ["Bus Repair"], Fish.scorpion_carp: ["Desert Obelisk"], # Starting the extended family quest requires having caught all the legendaries before, so they all have the rules of every other legendary @@ -37,6 +37,7 @@ def test_catch_fish_requires_region_unlock(self): Fish.legend_ii: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"], Fish.ms_angler: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"], } + self.collect("Progressive Fishing Rod", 4) self.original_state = self.multiworld.state.copy() for fish in fish_and_items: with self.subTest(f"Region rules for {fish}"): From 2ff611167a4415f2d06b6904434e814cf6595174 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:21:25 +0200 Subject: [PATCH 138/183] =?UTF-8?q?ALTTP:=20Fix=20take=5Fany=20leaving=20a?= =?UTF-8?q?=20placed=20item=20in=20the=20multiworld=20itempool=C2=A0#5108?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worlds/alttp/ItemPool.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/worlds/alttp/ItemPool.py b/worlds/alttp/ItemPool.py index 57ad01b9e408..9f1a58e5466d 100644 --- a/worlds/alttp/ItemPool.py +++ b/worlds/alttp/ItemPool.py @@ -548,10 +548,12 @@ def set_up_take_anys(multiworld, world, player): old_man_take_any.shop = TakeAny(old_man_take_any, 0x0112, 0xE2, True, True, total_shop_slots) multiworld.shops.append(old_man_take_any.shop) - swords = [item for item in multiworld.itempool if item.player == player and item.type == 'Sword'] - if swords: - sword = multiworld.random.choice(swords) - multiworld.itempool.remove(sword) + sword_indices = [ + index for index, item in enumerate(multiworld.itempool) if item.player == player and item.type == 'Sword' + ] + if sword_indices: + sword_index = multiworld.random.choice(sword_indices) + sword = multiworld.itempool.pop(sword_index) multiworld.itempool.append(item_factory('Rupees (20)', world)) old_man_take_any.shop.add_inventory(0, sword.name, 0, 0) loc_name = "Old Man Sword Cave" From 27a67705692e5abafbfc5dbd5753feb81294855c Mon Sep 17 00:00:00 2001 From: Louis M Date: Sat, 14 Jun 2025 07:17:33 -0400 Subject: [PATCH 139/183] Aquaria: Fixing open waters urns not breakable with nature forms logic bug (#5072) * Fixing open waters urns not breakable with nature forms logic bug * Using list in comprehension only when useful * Replacing damaging items by a constant * Removing comprehension list creating from lambda --- worlds/aquaria/Regions.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/worlds/aquaria/Regions.py b/worlds/aquaria/Regions.py index 40170e0c3262..3436374ac7ea 100755 --- a/worlds/aquaria/Regions.py +++ b/worlds/aquaria/Regions.py @@ -4,7 +4,7 @@ Description: Used to manage Regions in the Aquaria game multiworld randomizer """ -from typing import Dict, Optional +from typing import Dict, Optional, Iterable from BaseClasses import MultiWorld, Region, Entrance, Item, ItemClassification, CollectionState from .Items import AquariaItem, ItemNames from .Locations import AquariaLocations, AquariaLocation, AquariaLocationNames @@ -34,10 +34,15 @@ def _has_li(state: CollectionState, player: int) -> bool: return state.has(ItemNames.LI_AND_LI_SONG, player) -def _has_damaging_item(state: CollectionState, player: int) -> bool: - """`player` in `state` has the shield song item""" - return state.has_any({ItemNames.ENERGY_FORM, ItemNames.NATURE_FORM, ItemNames.BEAST_FORM, ItemNames.LI_AND_LI_SONG, - ItemNames.BABY_NAUTILUS, ItemNames.BABY_PIRANHA, ItemNames.BABY_BLASTER}, player) +DAMAGING_ITEMS:Iterable[str] = [ + ItemNames.ENERGY_FORM, ItemNames.NATURE_FORM, ItemNames.BEAST_FORM, + ItemNames.LI_AND_LI_SONG, ItemNames.BABY_NAUTILUS, ItemNames.BABY_PIRANHA, + ItemNames.BABY_BLASTER +] + +def _has_damaging_item(state: CollectionState, player: int, damaging_items:Iterable[str] = DAMAGING_ITEMS) -> bool: + """`player` in `state` has the an item that do damage other than the ones in `to_remove`""" + return state.has_any(damaging_items, player) def _has_energy_attack_item(state: CollectionState, player: int) -> bool: @@ -566,9 +571,11 @@ def __connect_open_water_regions(self) -> None: self.__connect_one_way_regions(self.openwater_tr, self.openwater_tr_turtle, lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) self.__connect_one_way_regions(self.openwater_tr_turtle, self.openwater_tr) + damaging_items_minus_nature_form = [item for item in DAMAGING_ITEMS if item != ItemNames.NATURE_FORM] self.__connect_one_way_regions(self.openwater_tr, self.openwater_tr_urns, lambda state: _has_bind_song(state, self.player) or - _has_damaging_item(state, self.player)) + _has_damaging_item(state, self.player, + damaging_items_minus_nature_form)) self.__connect_regions(self.openwater_tr, self.openwater_br) self.__connect_regions(self.openwater_tr, self.mithalas_city) self.__connect_regions(self.openwater_tr, self.veil_b) From 3b72140435d4d587a60865ea5e325f5b6aa1d950 Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:26:22 -0400 Subject: [PATCH 140/183] Shivers: Fix get_pre_fill_items (#5113) --- worlds/shivers/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/shivers/__init__.py b/worlds/shivers/__init__.py index 3430a5a02d4e..dd941b9212bb 100644 --- a/worlds/shivers/__init__.py +++ b/worlds/shivers/__init__.py @@ -261,13 +261,13 @@ def get_pre_fill_items(self) -> List[Item]: data.type == ItemType.POT_DUPLICATE] elif self.options.full_pots == "complete": return [self.create_item(name) for name, data in item_table.items() if - data.type == ItemType.POT_COMPELTE_DUPLICATE] + data.type == ItemType.POT_COMPLETE_DUPLICATE] else: pool = [] pieces = [self.create_item(name) for name, data in item_table.items() if data.type == ItemType.POT_DUPLICATE] complete = [self.create_item(name) for name, data in item_table.items() if - data.type == ItemType.POT_COMPELTE_DUPLICATE] + data.type == ItemType.POT_COMPLETE_DUPLICATE] for i in range(10): if self.pot_completed_list[i] == 0: pool.append(pieces[i]) From ecb739ce96716f83d128648d0350df69b5aae7eb Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:26:58 -0400 Subject: [PATCH 141/183] Plando Items: Fix Location Groups Unfolding (#5099) --- Fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fill.py b/Fill.py index 87d6b02e0921..9d460e49c4da 100644 --- a/Fill.py +++ b/Fill.py @@ -923,9 +923,9 @@ def failed(warning: str, force: bool | str) -> None: if isinstance(locations, str): locations = [locations] - locations_from_groups: list[str] = [] resolved_locations: list[Location] = [] for target_player in worlds: + locations_from_groups: list[str] = [] world_locations = multiworld.get_unfilled_locations(target_player) for group in multiworld.worlds[target_player].location_name_groups: if group in locations: From aa9e6175108afb16caec2411486e2f1a054ae4a6 Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:27:22 -0400 Subject: [PATCH 142/183] DS3: Apply Rules to Non-Randomized Locations (#5106) --- worlds/dark_souls_3/__init__.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index 94150faf0571..6584ccec8778 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -75,6 +75,13 @@ class DarkSouls3World(World): """The pool of all items within this particular world. This is a subset of `self.multiworld.itempool`.""" + missable_dupe_prog_locs: Set[str] = {"PC: Storm Ruler - Siegward", + "US: Pyromancy Flame - Cornyx", + "US: Tower Key - kill Irina"} + """Locations whose vanilla item is a missable duplicate of a non-missable progression item. + If vanilla, these locations shouldn't be expected progression, so they aren't created and don't get rules. + """ + def __init__(self, multiworld: MultiWorld, player: int): super().__init__(multiworld, player) self.all_excluded_locations = set() @@ -258,10 +265,7 @@ def create_region(self, region_name, location_table) -> Region: new_location.progress_type = LocationProgressType.EXCLUDED else: # Don't allow missable duplicates of progression items to be expected progression. - if location.name in {"PC: Storm Ruler - Siegward", - "US: Pyromancy Flame - Cornyx", - "US: Tower Key - kill Irina"}: - continue + if location.name in self.missable_dupe_prog_locs: continue # Replace non-randomized items with events that give the default item event_item = ( @@ -1286,8 +1290,9 @@ def _add_location_rule(self, location: Union[str, List[str]], rule: Union[Collec data = location_dictionary[location] if data.dlc and not self.options.enable_dlc: continue if data.ngp and not self.options.enable_ngp: continue + # Don't add rules to missable duplicates of progression items + if location in self.missable_dupe_prog_locs and not self._is_location_available(location): continue - if not self._is_location_available(location): continue if isinstance(rule, str): assert item_dictionary[rule].classification == ItemClassification.progression rule = lambda state, item=rule: state.has(item, self.player) From ec5b4e704f8167dd262579120a9aa99d746ab04d Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:28:02 -0400 Subject: [PATCH 143/183] Plando Items: Better Warning for Nonexisting Worlds (#5112) --- Fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fill.py b/Fill.py index 9d460e49c4da..abdad4407097 100644 --- a/Fill.py +++ b/Fill.py @@ -890,7 +890,7 @@ def failed(warning: str, force: bool | str) -> None: worlds = set() for listed_world in target_world: if listed_world not in world_name_lookup: - failed(f"Cannot place item to {target_world}'s world as that world does not exist.", + failed(f"Cannot place item to {listed_world}'s world as that world does not exist.", block.force) continue worlds.add(world_name_lookup[listed_world]) From 135647941527b601248b8ba1331a82732a685806 Mon Sep 17 00:00:00 2001 From: JusticePS <5125765+JusticePS@users.noreply.github.com> Date: Sun, 15 Jun 2025 16:30:45 -0700 Subject: [PATCH 144/183] AdventureClient: Replace Utils.get_settings with settings.get_settings #5043 --- AdventureClient.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/AdventureClient.py b/AdventureClient.py index 91567fc0a0e9..a4839c902dd0 100644 --- a/AdventureClient.py +++ b/AdventureClient.py @@ -11,6 +11,7 @@ import Utils +from settings import get_settings from NetUtils import ClientStatus from Utils import async_start from CommonClient import CommonContext, server_loop, gui_enabled, ClientCommandProcessor, logger, \ @@ -80,8 +81,8 @@ def __init__(self, server_address, password): self.local_item_locations = {} self.dragon_speed_info = {} - options = Utils.get_settings() - self.display_msgs = options["adventure_options"]["display_msgs"] + options = get_settings().adventure_options + self.display_msgs = options.display_msgs async def server_auth(self, password_requested: bool = False): if password_requested and not self.password: @@ -102,7 +103,7 @@ def _set_message(self, msg: str, msg_id: int): def on_package(self, cmd: str, args: dict): if cmd == 'Connected': self.locations_array = None - if Utils.get_settings()["adventure_options"].get("death_link", False): + if get_settings().adventure_options.as_dict().get("death_link", False): self.set_deathlink = True async_start(self.get_freeincarnates_used()) elif cmd == "RoomInfo": @@ -415,8 +416,9 @@ async def atari_sync_task(ctx: AdventureContext): async def run_game(romfile): - auto_start = Utils.get_settings()["adventure_options"].get("rom_start", True) - rom_args = Utils.get_settings()["adventure_options"].get("rom_args") + options = get_settings().adventure_options + auto_start = options.rom_start + rom_args = options.rom_args if auto_start is True: import webbrowser webbrowser.open(romfile) From b408bb4f6eedc797ac693e4a9aacc40b1922a2a7 Mon Sep 17 00:00:00 2001 From: qwint Date: Sun, 15 Jun 2025 19:31:12 -0500 Subject: [PATCH 145/183] Core: Docstring typo on Region.add_exits (#5089) * doc typo * Update BaseClasses.py --- BaseClasses.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 1de23bc1eab4..dbcd65ab55fa 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -1337,8 +1337,8 @@ def add_exits(self, exits: Union[Iterable[str], Dict[str, Optional[str]]], Connects current region to regions in exit dictionary. Passed region names must exist first. :param exits: exits from the region. format is {"connecting_region": "exit_name"}. if a non dict is provided, - created entrances will be named "self.name -> connecting_region" - :param rules: rules for the exits from this region. format is {"connecting_region", rule} + created entrances will be named "self.name -> connecting_region" + :param rules: rules for the exits from this region. format is {"connecting_region": rule} """ if not isinstance(exits, Dict): exits = dict.fromkeys(exits) From 0e759f25fd4a241cbd1a8793ff0a891a2b3bc322 Mon Sep 17 00:00:00 2001 From: KonoTyran Date: Mon, 16 Jun 2025 03:31:16 -0700 Subject: [PATCH 146/183] Remove Minecraft (#4672) * Remove Minecraft * remove minecraft * remove minecraft * elif -> if --------- Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> --- .gitignore | 7 - MinecraftClient.py | 347 ---- README.md | 1 - WebHostLib/downloads.py | 7 +- WebHostLib/static/styles/minecraftTracker.css | 102 -- WebHostLib/templates/macros.html | 5 +- WebHostLib/templates/tracker__Minecraft.html | 84 - WebHostLib/tracker.py | 121 -- WebHostLib/upload.py | 5 - data/mcicon.ico | Bin 2686 -> 0 bytes docs/CODEOWNERS | 3 - docs/network diagram/network diagram.md | 6 - inno_setup.iss | 5 - worlds/LauncherComponents.py | 4 - worlds/generic/docs/advanced_settings_en.md | 29 +- worlds/generic/docs/plando_en.md | 14 +- worlds/minecraft/Constants.py | 26 - worlds/minecraft/ItemPool.py | 55 - worlds/minecraft/Options.py | 143 -- worlds/minecraft/Rules.py | 508 ------ worlds/minecraft/Structures.py | 59 - worlds/minecraft/__init__.py | 203 --- worlds/minecraft/data/excluded_locations.json | 40 - worlds/minecraft/data/items.json | 128 -- worlds/minecraft/data/locations.json | 250 --- worlds/minecraft/data/regions.json | 28 - worlds/minecraft/docs/en_Minecraft.md | 113 -- worlds/minecraft/docs/minecraft_en.md | 74 - worlds/minecraft/docs/minecraft_es.md | 148 -- worlds/minecraft/docs/minecraft_fr.md | 74 - worlds/minecraft/docs/minecraft_sv.md | 132 -- worlds/minecraft/requirements.txt | 1 - worlds/minecraft/test/TestAdvancements.py | 1410 ----------------- worlds/minecraft/test/TestDataLoad.py | 60 - worlds/minecraft/test/TestEntrances.py | 97 -- worlds/minecraft/test/TestOptions.py | 49 - worlds/minecraft/test/__init__.py | 33 - 37 files changed, 6 insertions(+), 4365 deletions(-) delete mode 100644 MinecraftClient.py delete mode 100644 WebHostLib/static/styles/minecraftTracker.css delete mode 100644 WebHostLib/templates/tracker__Minecraft.html delete mode 100644 data/mcicon.ico delete mode 100644 worlds/minecraft/Constants.py delete mode 100644 worlds/minecraft/ItemPool.py delete mode 100644 worlds/minecraft/Options.py delete mode 100644 worlds/minecraft/Rules.py delete mode 100644 worlds/minecraft/Structures.py delete mode 100644 worlds/minecraft/__init__.py delete mode 100644 worlds/minecraft/data/excluded_locations.json delete mode 100644 worlds/minecraft/data/items.json delete mode 100644 worlds/minecraft/data/locations.json delete mode 100644 worlds/minecraft/data/regions.json delete mode 100644 worlds/minecraft/docs/en_Minecraft.md delete mode 100644 worlds/minecraft/docs/minecraft_en.md delete mode 100644 worlds/minecraft/docs/minecraft_es.md delete mode 100644 worlds/minecraft/docs/minecraft_fr.md delete mode 100644 worlds/minecraft/docs/minecraft_sv.md delete mode 100644 worlds/minecraft/requirements.txt delete mode 100644 worlds/minecraft/test/TestAdvancements.py delete mode 100644 worlds/minecraft/test/TestDataLoad.py delete mode 100644 worlds/minecraft/test/TestEntrances.py delete mode 100644 worlds/minecraft/test/TestOptions.py delete mode 100644 worlds/minecraft/test/__init__.py diff --git a/.gitignore b/.gitignore index f50fc17e23c6..3bb4e68c9924 100644 --- a/.gitignore +++ b/.gitignore @@ -56,7 +56,6 @@ success.txt output/ Output Logs/ /factorio/ -/Minecraft Forge Server/ /WebHostLib/static/generated /freeze_requirements.txt /Archipelago.zip @@ -184,12 +183,6 @@ _speedups.c _speedups.cpp _speedups.html -# minecraft server stuff -jdk*/ -minecraft*/ -minecraft_versions.json -!worlds/minecraft/ - # pyenv .python-version diff --git a/MinecraftClient.py b/MinecraftClient.py deleted file mode 100644 index 3047dc540e86..000000000000 --- a/MinecraftClient.py +++ /dev/null @@ -1,347 +0,0 @@ -import argparse -import json -import os -import sys -import re -import atexit -import shutil -from subprocess import Popen -from shutil import copyfile -from time import strftime -import logging - -import requests - -import Utils -from Utils import is_windows -from settings import get_settings - -atexit.register(input, "Press enter to exit.") - -# 1 or more digits followed by m or g, then optional b -max_heap_re = re.compile(r"^\d+[mMgG][bB]?$") - - -def prompt_yes_no(prompt): - yes_inputs = {'yes', 'ye', 'y'} - no_inputs = {'no', 'n'} - while True: - choice = input(prompt + " [y/n] ").lower() - if choice in yes_inputs: - return True - elif choice in no_inputs: - return False - else: - print('Please respond with "y" or "n".') - - -def find_ap_randomizer_jar(forge_dir): - """Create mods folder if needed; find AP randomizer jar; return None if not found.""" - mods_dir = os.path.join(forge_dir, 'mods') - if os.path.isdir(mods_dir): - for entry in os.scandir(mods_dir): - if entry.name.startswith("aprandomizer") and entry.name.endswith(".jar"): - logging.info(f"Found AP randomizer mod: {entry.name}") - return entry.name - return None - else: - os.mkdir(mods_dir) - logging.info(f"Created mods folder in {forge_dir}") - return None - - -def replace_apmc_files(forge_dir, apmc_file): - """Create APData folder if needed; clean .apmc files from APData; copy given .apmc into directory.""" - if apmc_file is None: - return - apdata_dir = os.path.join(forge_dir, 'APData') - copy_apmc = True - if not os.path.isdir(apdata_dir): - os.mkdir(apdata_dir) - logging.info(f"Created APData folder in {forge_dir}") - for entry in os.scandir(apdata_dir): - if entry.name.endswith(".apmc") and entry.is_file(): - if not os.path.samefile(apmc_file, entry.path): - os.remove(entry.path) - logging.info(f"Removed {entry.name} in {apdata_dir}") - else: # apmc already in apdata - copy_apmc = False - if copy_apmc: - copyfile(apmc_file, os.path.join(apdata_dir, os.path.basename(apmc_file))) - logging.info(f"Copied {os.path.basename(apmc_file)} to {apdata_dir}") - - -def read_apmc_file(apmc_file): - from base64 import b64decode - - with open(apmc_file, 'r') as f: - return json.loads(b64decode(f.read())) - - -def update_mod(forge_dir, url: str): - """Check mod version, download new mod from GitHub releases page if needed. """ - ap_randomizer = find_ap_randomizer_jar(forge_dir) - os.path.basename(url) - if ap_randomizer is not None: - logging.info(f"Your current mod is {ap_randomizer}.") - else: - logging.info(f"You do not have the AP randomizer mod installed.") - - if ap_randomizer != os.path.basename(url): - logging.info(f"A new release of the Minecraft AP randomizer mod was found: " - f"{os.path.basename(url)}") - if prompt_yes_no("Would you like to update?"): - old_ap_mod = os.path.join(forge_dir, 'mods', ap_randomizer) if ap_randomizer is not None else None - new_ap_mod = os.path.join(forge_dir, 'mods', os.path.basename(url)) - logging.info("Downloading AP randomizer mod. This may take a moment...") - apmod_resp = requests.get(url) - if apmod_resp.status_code == 200: - with open(new_ap_mod, 'wb') as f: - f.write(apmod_resp.content) - logging.info(f"Wrote new mod file to {new_ap_mod}") - if old_ap_mod is not None: - os.remove(old_ap_mod) - logging.info(f"Removed old mod file from {old_ap_mod}") - else: - logging.error(f"Error retrieving the randomizer mod (status code {apmod_resp.status_code}).") - logging.error(f"Please report this issue on the Archipelago Discord server.") - sys.exit(1) - - -def check_eula(forge_dir): - """Check if the EULA is agreed to, and prompt the user to read and agree if necessary.""" - eula_path = os.path.join(forge_dir, "eula.txt") - if not os.path.isfile(eula_path): - # Create eula.txt - with open(eula_path, 'w') as f: - f.write("#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).\n") - f.write(f"#{strftime('%a %b %d %X %Z %Y')}\n") - f.write("eula=false\n") - with open(eula_path, 'r+') as f: - text = f.read() - if 'false' in text: - # Prompt user to agree to the EULA - logging.info("You need to agree to the Minecraft EULA in order to run the server.") - logging.info("The EULA can be found at https://account.mojang.com/documents/minecraft_eula") - if prompt_yes_no("Do you agree to the EULA?"): - f.seek(0) - f.write(text.replace('false', 'true')) - f.truncate() - logging.info(f"Set {eula_path} to true") - else: - sys.exit(0) - - -def find_jdk_dir(version: str) -> str: - """get the specified versions jdk directory""" - for entry in os.listdir(): - if os.path.isdir(entry) and entry.startswith(f"jdk{version}"): - return os.path.abspath(entry) - - -def find_jdk(version: str) -> str: - """get the java exe location""" - - if is_windows: - jdk = find_jdk_dir(version) - jdk_exe = os.path.join(jdk, "bin", "java.exe") - if os.path.isfile(jdk_exe): - return jdk_exe - else: - jdk_exe = shutil.which(options.java) - if not jdk_exe: - jdk_exe = shutil.which("java") # try to fall back to system java - if not jdk_exe: - raise Exception("Could not find Java. Is Java installed on the system?") - return jdk_exe - - -def download_java(java: str): - """Download Corretto (Amazon JDK)""" - - jdk = find_jdk_dir(java) - if jdk is not None: - print(f"Removing old JDK...") - from shutil import rmtree - rmtree(jdk) - - print(f"Downloading Java...") - jdk_url = f"https://corretto.aws/downloads/latest/amazon-corretto-{java}-x64-windows-jdk.zip" - resp = requests.get(jdk_url) - if resp.status_code == 200: # OK - print(f"Extracting...") - import zipfile - from io import BytesIO - with zipfile.ZipFile(BytesIO(resp.content)) as zf: - zf.extractall() - else: - print(f"Error downloading Java (status code {resp.status_code}).") - print(f"If this was not expected, please report this issue on the Archipelago Discord server.") - if not prompt_yes_no("Continue anyways?"): - sys.exit(0) - - -def install_forge(directory: str, forge_version: str, java_version: str): - """download and install forge""" - - java_exe = find_jdk(java_version) - if java_exe is not None: - print(f"Downloading Forge {forge_version}...") - forge_url = f"https://maven.minecraftforge.net/net/minecraftforge/forge/{forge_version}/forge-{forge_version}-installer.jar" - resp = requests.get(forge_url) - if resp.status_code == 200: # OK - forge_install_jar = os.path.join(directory, "forge_install.jar") - if not os.path.exists(directory): - os.mkdir(directory) - with open(forge_install_jar, 'wb') as f: - f.write(resp.content) - print(f"Installing Forge...") - install_process = Popen([java_exe, "-jar", forge_install_jar, "--installServer", directory]) - install_process.wait() - os.remove(forge_install_jar) - - -def run_forge_server(forge_dir: str, java_version: str, heap_arg: str) -> Popen: - """Run the Forge server.""" - - java_exe = find_jdk(java_version) - if not os.path.isfile(java_exe): - java_exe = "java" # try to fall back on java in the PATH - - heap_arg = max_heap_re.match(heap_arg).group() - if heap_arg[-1] in ['b', 'B']: - heap_arg = heap_arg[:-1] - heap_arg = "-Xmx" + heap_arg - - os_args = "win_args.txt" if is_windows else "unix_args.txt" - args_file = os.path.join(forge_dir, "libraries", "net", "minecraftforge", "forge", forge_version, os_args) - forge_args = [] - with open(args_file) as argfile: - for line in argfile: - forge_args.extend(line.strip().split(" ")) - - args = [java_exe, heap_arg, *forge_args, "-nogui"] - logging.info(f"Running Forge server: {args}") - os.chdir(forge_dir) - return Popen(args) - - -def get_minecraft_versions(version, release_channel="release"): - version_file_endpoint = "https://raw.githubusercontent.com/KonoTyran/Minecraft_AP_Randomizer/master/versions/minecraft_versions.json" - resp = requests.get(version_file_endpoint) - local = False - if resp.status_code == 200: # OK - try: - data = resp.json() - except requests.exceptions.JSONDecodeError: - logging.warning(f"Unable to fetch version update file, using local version. (status code {resp.status_code}).") - local = True - else: - logging.warning(f"Unable to fetch version update file, using local version. (status code {resp.status_code}).") - local = True - - if local: - with open(Utils.user_path("minecraft_versions.json"), 'r') as f: - data = json.load(f) - else: - with open(Utils.user_path("minecraft_versions.json"), 'w') as f: - json.dump(data, f) - - try: - if version: - return next(filter(lambda entry: entry["version"] == version, data[release_channel])) - else: - return resp.json()[release_channel][0] - except (StopIteration, KeyError): - logging.error(f"No compatible mod version found for client version {version} on \"{release_channel}\" channel.") - if release_channel != "release": - logging.error("Consider switching \"release_channel\" to \"release\" in your Host.yaml file") - else: - logging.error("No suitable mod found on the \"release\" channel. Please Contact us on discord to report this error.") - sys.exit(0) - - -def is_correct_forge(forge_dir) -> bool: - if os.path.isdir(os.path.join(forge_dir, "libraries", "net", "minecraftforge", "forge", forge_version)): - return True - return False - - -if __name__ == '__main__': - Utils.init_logging("MinecraftClient") - parser = argparse.ArgumentParser() - parser.add_argument("apmc_file", default=None, nargs='?', help="Path to an Archipelago Minecraft data file (.apmc)") - parser.add_argument('--install', '-i', dest='install', default=False, action='store_true', - help="Download and install Java and the Forge server. Does not launch the client afterwards.") - parser.add_argument('--release_channel', '-r', dest="channel", type=str, action='store', - help="Specify release channel to use.") - parser.add_argument('--java', '-j', metavar='17', dest='java', type=str, default=False, action='store', - help="specify java version.") - parser.add_argument('--forge', '-f', metavar='1.18.2-40.1.0', dest='forge', type=str, default=False, action='store', - help="specify forge version. (Minecraft Version-Forge Version)") - parser.add_argument('--version', '-v', metavar='9', dest='data_version', type=int, action='store', - help="specify Mod data version to download.") - - args = parser.parse_args() - apmc_file = os.path.abspath(args.apmc_file) if args.apmc_file else None - - # Change to executable's working directory - os.chdir(os.path.abspath(os.path.dirname(sys.argv[0]))) - - options = get_settings().minecraft_options - channel = args.channel or options.release_channel - apmc_data = None - data_version = args.data_version or None - - if apmc_file is None and not args.install: - apmc_file = Utils.open_filename('Select APMC file', (('APMC File', ('.apmc',)),)) - - if apmc_file is not None and data_version is None: - apmc_data = read_apmc_file(apmc_file) - data_version = apmc_data.get('client_version', '') - - versions = get_minecraft_versions(data_version, channel) - - forge_dir = options.forge_directory - max_heap = options.max_heap_size - forge_version = args.forge or versions["forge"] - java_version = args.java or versions["java"] - mod_url = versions["url"] - java_dir = find_jdk_dir(java_version) - - if args.install: - if is_windows: - print("Installing Java") - download_java(java_version) - if not is_correct_forge(forge_dir): - print("Installing Minecraft Forge") - install_forge(forge_dir, forge_version, java_version) - else: - print("Correct Forge version already found, skipping install.") - sys.exit(0) - - if apmc_data is None: - raise FileNotFoundError(f"APMC file does not exist or is inaccessible at the given location ({apmc_file})") - - if is_windows: - if java_dir is None or not os.path.isdir(java_dir): - if prompt_yes_no("Did not find java directory. Download and install java now?"): - download_java(java_version) - java_dir = find_jdk_dir(java_version) - if java_dir is None or not os.path.isdir(java_dir): - raise NotADirectoryError(f"Path {java_dir} does not exist or could not be accessed.") - - if not is_correct_forge(forge_dir): - if prompt_yes_no(f"Did not find forge version {forge_version} download and install it now?"): - install_forge(forge_dir, forge_version, java_version) - if not os.path.isdir(forge_dir): - raise NotADirectoryError(f"Path {forge_dir} does not exist or could not be accessed.") - - if not max_heap_re.match(max_heap): - raise Exception(f"Max heap size {max_heap} in incorrect format. Use a number followed by M or G, e.g. 512M or 2G.") - - update_mod(forge_dir, mod_url) - replace_apmc_files(forge_dir, apmc_file) - check_eula(forge_dir) - server_process = run_forge_server(forge_dir, java_version, max_heap) - server_process.wait() diff --git a/README.md b/README.md index 9ce6caf0cfc7..afad4b15f0b7 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ Currently, the following games are supported: * The Legend of Zelda: A Link to the Past * Factorio -* Minecraft * Subnautica * Risk of Rain 2 * The Legend of Zelda: Ocarina of Time diff --git a/WebHostLib/downloads.py b/WebHostLib/downloads.py index a09ca7017181..388a6dc73cb1 100644 --- a/WebHostLib/downloads.py +++ b/WebHostLib/downloads.py @@ -61,12 +61,7 @@ def download_slot_file(room_id, player_id: int): else: import io - if slot_data.game == "Minecraft": - from worlds.minecraft import mc_update_output - fname = f"AP_{app.jinja_env.filters['suuid'](room_id)}_P{slot_data.player_id}_{slot_data.player_name}.apmc" - data = mc_update_output(slot_data.data, server=app.config['HOST_ADDRESS'], port=room.last_port) - return send_file(io.BytesIO(data), as_attachment=True, download_name=fname) - elif slot_data.game == "Factorio": + if slot_data.game == "Factorio": with zipfile.ZipFile(io.BytesIO(slot_data.data)) as zf: for name in zf.namelist(): if name.endswith("info.json"): diff --git a/WebHostLib/static/styles/minecraftTracker.css b/WebHostLib/static/styles/minecraftTracker.css deleted file mode 100644 index 224cdcdc55a0..000000000000 --- a/WebHostLib/static/styles/minecraftTracker.css +++ /dev/null @@ -1,102 +0,0 @@ -#player-tracker-wrapper{ - margin: 0; -} - -#inventory-table{ - border-top: 2px solid #000000; - border-left: 2px solid #000000; - border-right: 2px solid #000000; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - padding: 3px 3px 10px; - width: 384px; - background-color: #42b149; -} - -#inventory-table td{ - width: 40px; - height: 40px; - text-align: center; - vertical-align: middle; -} - -#inventory-table img{ - height: 100%; - max-width: 40px; - max-height: 40px; - filter: grayscale(100%) contrast(75%) brightness(30%); -} - -#inventory-table img.acquired{ - filter: none; -} - -#inventory-table div.counted-item { - position: relative; -} - -#inventory-table div.item-count { - position: absolute; - color: white; - font-family: "Minecraftia", monospace; - font-weight: bold; - bottom: 0; - right: 0; -} - -#location-table{ - width: 384px; - border-left: 2px solid #000000; - border-right: 2px solid #000000; - border-bottom: 2px solid #000000; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - background-color: #42b149; - padding: 0 3px 3px; - font-family: "Minecraftia", monospace; - font-size: 14px; - cursor: default; -} - -#location-table th{ - vertical-align: middle; - text-align: left; - padding-right: 10px; -} - -#location-table td{ - padding-top: 2px; - padding-bottom: 2px; - line-height: 20px; -} - -#location-table td.counter { - text-align: right; - font-size: 14px; -} - -#location-table td.toggle-arrow { - text-align: right; -} - -#location-table tr#Total-header { - font-weight: bold; -} - -#location-table img{ - height: 100%; - max-width: 30px; - max-height: 30px; -} - -#location-table tbody.locations { - font-size: 12px; -} - -#location-table td.location-name { - padding-left: 16px; -} - -.hide { - display: none; -} diff --git a/WebHostLib/templates/macros.html b/WebHostLib/templates/macros.html index 0416658dde28..be664274e621 100644 --- a/WebHostLib/templates/macros.html +++ b/WebHostLib/templates/macros.html @@ -26,10 +26,7 @@ {{ patch.game }} {% if patch.data %} - {% if patch.game == "Minecraft" %} - - Download APMC File... - {% elif patch.game == "VVVVVV" and room.seed.slots|length == 1 %} + {% if patch.game == "VVVVVV" and room.seed.slots|length == 1 %} Download APV6 File... {% elif patch.game == "Super Mario 64" and room.seed.slots|length == 1 %} diff --git a/WebHostLib/templates/tracker__Minecraft.html b/WebHostLib/templates/tracker__Minecraft.html deleted file mode 100644 index 248f2778bda1..000000000000 --- a/WebHostLib/templates/tracker__Minecraft.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - {{ player_name }}'s Tracker - - - - - - - {# TODO: Replace this with a proper wrapper for each tracker when developing TrackerAPI. #} - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - -
    {{ pearls_count }}
    -
    -
    -
    - -
    {{ scrap_count }}
    -
    -
    -
    - -
    {{ shard_count }}
    -
    -
    - - {% for area in checks_done %} - - - - - - {% for location in location_info[area] %} - - - - - {% endfor %} - - {% endfor %} -
    {{ area }} {{'▼' if area != 'Total'}}{{ checks_done[area] }} / {{ checks_in_area[area] }}
    {{ location }}{{ '✔' if location_info[area][location] else '' }}
    -
    - - diff --git a/WebHostLib/tracker.py b/WebHostLib/tracker.py index 3748de97a4bf..4b92f4b416ba 100644 --- a/WebHostLib/tracker.py +++ b/WebHostLib/tracker.py @@ -706,127 +706,6 @@ def render_ALinkToThePast_tracker(tracker_data: TrackerData, team: int, player: _multiworld_trackers["A Link to the Past"] = render_ALinkToThePast_multiworld_tracker _player_trackers["A Link to the Past"] = render_ALinkToThePast_tracker -if "Minecraft" in network_data_package["games"]: - def render_Minecraft_tracker(tracker_data: TrackerData, team: int, player: int) -> str: - icons = { - "Wooden Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d2/Wooden_Pickaxe_JE3_BE3.png", - "Stone Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c4/Stone_Pickaxe_JE2_BE2.png", - "Iron Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d1/Iron_Pickaxe_JE3_BE2.png", - "Diamond Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/e/e7/Diamond_Pickaxe_JE3_BE3.png", - "Wooden Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d5/Wooden_Sword_JE2_BE2.png", - "Stone Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b1/Stone_Sword_JE2_BE2.png", - "Iron Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/8/8e/Iron_Sword_JE2_BE2.png", - "Diamond Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/4/44/Diamond_Sword_JE3_BE3.png", - "Leather Tunic": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b7/Leather_Tunic_JE4_BE2.png", - "Iron Chestplate": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/31/Iron_Chestplate_JE2_BE2.png", - "Diamond Chestplate": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/e/e0/Diamond_Chestplate_JE3_BE2.png", - "Iron Ingot": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/fc/Iron_Ingot_JE3_BE2.png", - "Block of Iron": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/7/7e/Block_of_Iron_JE4_BE3.png", - "Brewing Stand": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b3/Brewing_Stand_%28empty%29_JE10.png", - "Ender Pearl": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/f6/Ender_Pearl_JE3_BE2.png", - "Bucket": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/fc/Bucket_JE2_BE2.png", - "Bow": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/a/ab/Bow_%28Pull_2%29_JE1_BE1.png", - "Shield": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c6/Shield_JE2_BE1.png", - "Red Bed": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/6/6a/Red_Bed_%28N%29.png", - "Netherite Scrap": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/33/Netherite_Scrap_JE2_BE1.png", - "Flint and Steel": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/9/94/Flint_and_Steel_JE4_BE2.png", - "Enchanting Table": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/31/Enchanting_Table.gif", - "Fishing Rod": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/7/7f/Fishing_Rod_JE2_BE2.png", - "Campfire": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/9/91/Campfire_JE2_BE2.gif", - "Water Bottle": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/7/75/Water_Bottle_JE2_BE2.png", - "Spyglass": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c1/Spyglass_JE2_BE1.png", - "Dragon Egg Shard": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/38/Dragon_Egg_JE4.png", - "Lead": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/1/1f/Lead_JE2_BE2.png", - "Saddle": "https://i.imgur.com/2QtDyR0.png", - "Channeling Book": "https://i.imgur.com/J3WsYZw.png", - "Silk Touch Book": "https://i.imgur.com/iqERxHQ.png", - "Piercing IV Book": "https://i.imgur.com/OzJptGz.png", - } - - minecraft_location_ids = { - "Story": [42073, 42023, 42027, 42039, 42002, 42009, 42010, 42070, - 42041, 42049, 42004, 42031, 42025, 42029, 42051, 42077], - "Nether": [42017, 42044, 42069, 42058, 42034, 42060, 42066, 42076, 42064, 42071, 42021, - 42062, 42008, 42061, 42033, 42011, 42006, 42019, 42000, 42040, 42001, 42015, 42104, 42014], - "The End": [42052, 42005, 42012, 42032, 42030, 42042, 42018, 42038, 42046], - "Adventure": [42047, 42050, 42096, 42097, 42098, 42059, 42055, 42072, 42003, 42109, 42035, 42016, 42020, - 42048, 42054, 42068, 42043, 42106, 42074, 42075, 42024, 42026, 42037, 42045, 42056, 42105, - 42099, 42103, 42110, 42100], - "Husbandry": [42065, 42067, 42078, 42022, 42113, 42107, 42007, 42079, 42013, 42028, 42036, 42108, 42111, - 42112, - 42057, 42063, 42053, 42102, 42101, 42092, 42093, 42094, 42095], - "Archipelago": [42080, 42081, 42082, 42083, 42084, 42085, 42086, 42087, 42088, 42089, 42090, 42091], - } - - display_data = {} - - # Determine display for progressive items - progressive_items = { - "Progressive Tools": 45013, - "Progressive Weapons": 45012, - "Progressive Armor": 45014, - "Progressive Resource Crafting": 45001 - } - progressive_names = { - "Progressive Tools": ["Wooden Pickaxe", "Stone Pickaxe", "Iron Pickaxe", "Diamond Pickaxe"], - "Progressive Weapons": ["Wooden Sword", "Stone Sword", "Iron Sword", "Diamond Sword"], - "Progressive Armor": ["Leather Tunic", "Iron Chestplate", "Diamond Chestplate"], - "Progressive Resource Crafting": ["Iron Ingot", "Iron Ingot", "Block of Iron"] - } - - inventory = tracker_data.get_player_inventory_counts(team, player) - for item_name, item_id in progressive_items.items(): - level = min(inventory[item_id], len(progressive_names[item_name]) - 1) - display_name = progressive_names[item_name][level] - base_name = item_name.split(maxsplit=1)[1].lower().replace(" ", "_") - display_data[base_name + "_url"] = icons[display_name] - - # Multi-items - multi_items = { - "3 Ender Pearls": 45029, - "8 Netherite Scrap": 45015, - "Dragon Egg Shard": 45043 - } - for item_name, item_id in multi_items.items(): - base_name = item_name.split()[-1].lower() - count = inventory[item_id] - if count >= 0: - display_data[base_name + "_count"] = count - - # Victory condition - game_state = tracker_data.get_player_client_status(team, player) - display_data["game_finished"] = game_state == 30 - - # Turn location IDs into advancement tab counts - checked_locations = tracker_data.get_player_checked_locations(team, player) - lookup_name = lambda id: tracker_data.location_id_to_name["Minecraft"][id] - location_info = {tab_name: {lookup_name(id): (id in checked_locations) for id in tab_locations} - for tab_name, tab_locations in minecraft_location_ids.items()} - checks_done = {tab_name: len([id for id in tab_locations if id in checked_locations]) - for tab_name, tab_locations in minecraft_location_ids.items()} - checks_done["Total"] = len(checked_locations) - checks_in_area = {tab_name: len(tab_locations) for tab_name, tab_locations in minecraft_location_ids.items()} - checks_in_area["Total"] = sum(checks_in_area.values()) - - lookup_any_item_id_to_name = tracker_data.item_id_to_name["Minecraft"] - return render_template( - "tracker__Minecraft.html", - inventory=inventory, - icons=icons, - acquired_items={lookup_any_item_id_to_name[id] for id, count in inventory.items() if count > 0}, - player=player, - team=team, - room=tracker_data.room, - player_name=tracker_data.get_player_name(team, player), - saving_second=tracker_data.get_room_saving_second(), - checks_done=checks_done, - checks_in_area=checks_in_area, - location_info=location_info, - **display_data, - ) - - _player_trackers["Minecraft"] = render_Minecraft_tracker - if "Ocarina of Time" in network_data_package["games"]: def render_OcarinaOfTime_tracker(tracker_data: TrackerData, team: int, player: int) -> str: icons = { diff --git a/WebHostLib/upload.py b/WebHostLib/upload.py index 66b6f5560bae..ee4ba6a53e71 100644 --- a/WebHostLib/upload.py +++ b/WebHostLib/upload.py @@ -135,11 +135,6 @@ def upload_zip_to_db(zfile: zipfile.ZipFile, owner=None, meta={"race": False}, s flash("Could not load multidata. File may be corrupted or incompatible.") multidata = None - # Minecraft - elif file.filename.endswith(".apmc"): - data = zfile.open(file, "r").read() - metadata = json.loads(base64.b64decode(data).decode("utf-8")) - files[metadata["player_id"]] = data # Factorio elif file.filename.endswith(".zip"): diff --git a/data/mcicon.ico b/data/mcicon.ico deleted file mode 100644 index 3df0be06f8b021c3d207262d9d48e45ea08acd48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2686 zcmeH{v1-FW42J(grc!W1pxtjWWc1Q0c(|==ycDlBeS=%`R(_8_hCV|Uzd<6M;@Yk) z(+;8pqHrhU@1*}fVFEnRFVB~>FYx&YJOfB+<+S#+`2AcwrLS0TcX)aGzqR>lhxpN_S3eAHp=k7%jVoZ6k<#IQfueca`u;tDbh4;>7F?jx+ z2mTuDc?hlg*aPcZ^G?00#6gzH9K2_JYu;*#df$W0- JMC - end - JM <-- Forge Mod Loader --> MCS end AS <-- WebSockets --> JM diff --git a/inno_setup.iss b/inno_setup.iss index d9d4d7fb0178..6f41b20496a1 100644 --- a/inno_setup.iss +++ b/inno_setup.iss @@ -138,11 +138,6 @@ Root: HKCR; Subkey: "{#MyAppName}kdl3patch"; ValueData: "Arc Root: HKCR; Subkey: "{#MyAppName}kdl3patch\DefaultIcon"; ValueData: "{app}\ArchipelagoSNIClient.exe,0"; ValueType: string; ValueName: ""; Root: HKCR; Subkey: "{#MyAppName}kdl3patch\shell\open\command"; ValueData: """{app}\ArchipelagoSNIClient.exe"" ""%1"""; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: ".apmc"; ValueData: "{#MyAppName}mcdata"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: "{#MyAppName}mcdata"; ValueData: "Archipelago Minecraft Data"; Flags: uninsdeletekey; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: "{#MyAppName}mcdata\DefaultIcon"; ValueData: "{app}\ArchipelagoMinecraftClient.exe,0"; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: "{#MyAppName}mcdata\shell\open\command"; ValueData: """{app}\ArchipelagoMinecraftClient.exe"" ""%1"""; ValueType: string; ValueName: ""; - Root: HKCR; Subkey: ".apz5"; ValueData: "{#MyAppName}n64zpf"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Root: HKCR; Subkey: "{#MyAppName}n64zpf"; ValueData: "Archipelago Ocarina of Time Patch"; Flags: uninsdeletekey; ValueType: string; ValueName: ""; Root: HKCR; Subkey: "{#MyAppName}n64zpf\DefaultIcon"; ValueData: "{app}\ArchipelagoOoTClient.exe,0"; ValueType: string; ValueName: ""; diff --git a/worlds/LauncherComponents.py b/worlds/LauncherComponents.py index e650889a7377..06c77ab060e3 100644 --- a/worlds/LauncherComponents.py +++ b/worlds/LauncherComponents.py @@ -221,9 +221,6 @@ def install_apworld(apworld_path: str = "") -> None: Component('Links Awakening DX Client', 'LinksAwakeningClient', file_identifier=SuffixIdentifier('.apladx')), Component('LttP Adjuster', 'LttPAdjuster'), - # Minecraft - Component('Minecraft Client', 'MinecraftClient', icon='mcicon', cli=True, - file_identifier=SuffixIdentifier('.apmc')), # Ocarina of Time Component('OoT Client', 'OoTClient', file_identifier=SuffixIdentifier('.apz5')), @@ -246,6 +243,5 @@ def install_apworld(apworld_path: str = "") -> None: # if registering an icon from within an apworld, the format "ap:module.name/path/to/file.png" can be used icon_paths = { 'icon': local_path('data', 'icon.png'), - 'mcicon': local_path('data', 'mcicon.png'), 'discord': local_path('data', 'discord-mark-blue.png'), } diff --git a/worlds/generic/docs/advanced_settings_en.md b/worlds/generic/docs/advanced_settings_en.md index 6f0520febc6e..db93981bc9c8 100644 --- a/worlds/generic/docs/advanced_settings_en.md +++ b/worlds/generic/docs/advanced_settings_en.md @@ -288,7 +288,7 @@ world and the beginning of another world. You can also combine multiple files by ### Example ```yaml -description: Example of generating multiple worlds. World 1 of 3 +description: Example of generating multiple worlds. World 1 of 2 name: Mario game: Super Mario 64 requires: @@ -310,31 +310,6 @@ Super Mario 64: --- -description: Example of generating multiple worlds. World 2 of 3 -name: Minecraft -game: Minecraft -Minecraft: - progression_balancing: 50 - accessibility: items - advancement_goal: 40 - combat_difficulty: hard - include_hard_advancements: false - include_unreasonable_advancements: false - include_postgame_advancements: false - shuffle_structures: true - structure_compasses: true - send_defeated_mobs: true - bee_traps: 15 - egg_shards_required: 7 - egg_shards_available: 10 - required_bosses: - none: 0 - ender_dragon: 1 - wither: 0 - both: 0 - ---- - description: Example of generating multiple worlds. World 2 of 2 name: ExampleFinder game: ChecksFinder @@ -344,6 +319,6 @@ ChecksFinder: accessibility: items ``` -The above example will generate 3 worlds - one Super Mario 64, one Minecraft, and one ChecksFinder. +The above example will generate 2 worlds - one Super Mario 64 and one ChecksFinder. diff --git a/worlds/generic/docs/plando_en.md b/worlds/generic/docs/plando_en.md index 946962476286..b383239d8d11 100644 --- a/worlds/generic/docs/plando_en.md +++ b/worlds/generic/docs/plando_en.md @@ -194,7 +194,7 @@ relevant guide: [A Link to the Past Plando Guide](/tutorial/A%20Link%20to%20the% ## Connection Plando -This is currently only supported by a few games, including A Link to the Past, Minecraft, and Ocarina of Time. As the way that these games interact with their +This is currently only supported by a few games, including A Link to the Past and Ocarina of Time. As the way that these games interact with their connections is different, only the basics are explained here. More specific information for connection plando in A Link to the Past can be found in its [plando guide](/tutorial/A%20Link%20to%20the%20Past/plando/en#connections). @@ -207,7 +207,6 @@ its [plando guide](/tutorial/A%20Link%20to%20the%20Past/plando/en#connections). [A Link to the Past connections](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/EntranceShuffle.py#L3852) -[Minecraft connections](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/data/regions.json#L18****) ### Examples @@ -223,19 +222,10 @@ its [plando guide](/tutorial/A%20Link%20to%20the%20Past/plando/en#connections). - entrance: Agahnims Tower exit: Old Man Cave Exit (West) direction: exit - - # example block 2 - Minecraft - - entrance: Overworld Structure 1 - exit: Nether Fortress - direction: both - - entrance: Overworld Structure 2 - exit: Village - direction: both + ``` 1. These connections are decoupled, so going into the Lake Hylia Cave Shop will take you to the inside of Cave 45, and when you leave the interior, you will exit to the Cave 45 ledge. Going into the Cave 45 entrance will then take you to the Lake Hylia Cave Shop. Walking into the entrance for the Old Man Cave and Agahnim's Tower entrance will both take you to their locations as normal, but leaving Old Man Cave will exit at Agahnim's Tower. -2. This will force a Nether fortress and a village to be the Overworld structures for your game. Note that for the - Minecraft connection plando to work structure shuffle must be enabled. diff --git a/worlds/minecraft/Constants.py b/worlds/minecraft/Constants.py deleted file mode 100644 index 1f7b6fa6acef..000000000000 --- a/worlds/minecraft/Constants.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import json -import pkgutil - -def load_data_file(*args) -> dict: - fname = "/".join(["data", *args]) - return json.loads(pkgutil.get_data(__name__, fname).decode()) - -# For historical reasons, these values are different. -# They remain different to ensure datapackage consistency. -# Do not separate other games' location and item IDs like this. -item_id_offset: int = 45000 -location_id_offset: int = 42000 - -item_info = load_data_file("items.json") -item_name_to_id = {name: item_id_offset + index \ - for index, name in enumerate(item_info["all_items"])} -item_name_to_id["Bee Trap"] = item_id_offset + 100 # historical reasons - -location_info = load_data_file("locations.json") -location_name_to_id = {name: location_id_offset + index \ - for index, name in enumerate(location_info["all_locations"])} - -exclusion_info = load_data_file("excluded_locations.json") - -region_info = load_data_file("regions.json") diff --git a/worlds/minecraft/ItemPool.py b/worlds/minecraft/ItemPool.py deleted file mode 100644 index 19bb70ed6402..000000000000 --- a/worlds/minecraft/ItemPool.py +++ /dev/null @@ -1,55 +0,0 @@ -from math import ceil -from typing import List - -from BaseClasses import Item - -from . import Constants -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from . import MinecraftWorld - - -def get_junk_item_names(rand, k: int) -> str: - junk_weights = Constants.item_info["junk_weights"] - junk = rand.choices( - list(junk_weights.keys()), - weights=list(junk_weights.values()), - k=k) - return junk - -def build_item_pool(world: "MinecraftWorld") -> List[Item]: - multiworld = world.multiworld - player = world.player - - itempool = [] - total_location_count = len(multiworld.get_unfilled_locations(player)) - - required_pool = Constants.item_info["required_pool"] - - # Add required progression items - for item_name, num in required_pool.items(): - itempool += [world.create_item(item_name) for _ in range(num)] - - # Add structure compasses - if world.options.structure_compasses: - compasses = [name for name in world.item_name_to_id if "Structure Compass" in name] - for item_name in compasses: - itempool.append(world.create_item(item_name)) - - # Dragon egg shards - if world.options.egg_shards_required > 0: - num = world.options.egg_shards_available - itempool += [world.create_item("Dragon Egg Shard") for _ in range(num)] - - # Bee traps - bee_trap_percentage = world.options.bee_traps * 0.01 - if bee_trap_percentage > 0: - bee_trap_qty = ceil(bee_trap_percentage * (total_location_count - len(itempool))) - itempool += [world.create_item("Bee Trap") for _ in range(bee_trap_qty)] - - # Fill remaining itempool with randomly generated junk - junk = get_junk_item_names(world.random, total_location_count - len(itempool)) - itempool += [world.create_item(name) for name in junk] - - return itempool diff --git a/worlds/minecraft/Options.py b/worlds/minecraft/Options.py deleted file mode 100644 index 7d1377233e4c..000000000000 --- a/worlds/minecraft/Options.py +++ /dev/null @@ -1,143 +0,0 @@ -from Options import Choice, Toggle, DefaultOnToggle, Range, OptionList, DeathLink, PlandoConnections, \ - PerGameCommonOptions -from .Constants import region_info -from dataclasses import dataclass - - -class AdvancementGoal(Range): - """Number of advancements required to spawn bosses.""" - display_name = "Advancement Goal" - range_start = 0 - range_end = 114 - default = 40 - - -class EggShardsRequired(Range): - """Number of dragon egg shards to collect to spawn bosses.""" - display_name = "Egg Shards Required" - range_start = 0 - range_end = 50 - default = 0 - - -class EggShardsAvailable(Range): - """Number of dragon egg shards available to collect.""" - display_name = "Egg Shards Available" - range_start = 0 - range_end = 50 - default = 0 - - -class BossGoal(Choice): - """Bosses which must be defeated to finish the game.""" - display_name = "Required Bosses" - option_none = 0 - option_ender_dragon = 1 - option_wither = 2 - option_both = 3 - default = 1 - - @property - def dragon(self): - return self.value % 2 == 1 - - @property - def wither(self): - return self.value > 1 - - -class ShuffleStructures(DefaultOnToggle): - """Enables shuffling of villages, outposts, fortresses, bastions, and end cities.""" - display_name = "Shuffle Structures" - - -class StructureCompasses(DefaultOnToggle): - """Adds structure compasses to the item pool, which point to the nearest indicated structure.""" - display_name = "Structure Compasses" - - -class BeeTraps(Range): - """Replaces a percentage of junk items with bee traps, which spawn multiple angered bees around every player when - received.""" - display_name = "Bee Trap Percentage" - range_start = 0 - range_end = 100 - default = 0 - - -class CombatDifficulty(Choice): - """Modifies the level of items logically required for exploring dangerous areas and fighting bosses.""" - display_name = "Combat Difficulty" - option_easy = 0 - option_normal = 1 - option_hard = 2 - default = 1 - - -class HardAdvancements(Toggle): - """Enables certain RNG-reliant or tedious advancements.""" - display_name = "Include Hard Advancements" - - -class UnreasonableAdvancements(Toggle): - """Enables the extremely difficult advancements "How Did We Get Here?" and "Adventuring Time.\"""" - display_name = "Include Unreasonable Advancements" - - -class PostgameAdvancements(Toggle): - """Enables advancements that require spawning and defeating the required bosses.""" - display_name = "Include Postgame Advancements" - - -class SendDefeatedMobs(Toggle): - """Send killed mobs to other Minecraft worlds which have this option enabled.""" - display_name = "Send Defeated Mobs" - - -class StartingItems(OptionList): - """Start with these items. Each entry should be of this format: {item: "item_name", amount: #} - `item` can include components, and should be in an identical format to a `/give` command with - `"` escaped for json reasons. - - `amount` is optional and will default to 1 if omitted. - - example: - ``` - starting_items: [ - { "item": "minecraft:stick[minecraft:custom_name=\"{'text':'pointy stick'}\"]" }, - { "item": "minecraft:arrow[minecraft:rarity=epic]", amount: 64 } - ] - ``` - """ - display_name = "Starting Items" - - -class MCPlandoConnections(PlandoConnections): - entrances = set(connection[0] for connection in region_info["default_connections"]) - exits = set(connection[1] for connection in region_info["default_connections"]) - - @classmethod - def can_connect(cls, entrance, exit): - if exit in region_info["illegal_connections"] and entrance in region_info["illegal_connections"][exit]: - return False - return True - - -@dataclass -class MinecraftOptions(PerGameCommonOptions): - plando_connections: MCPlandoConnections - advancement_goal: AdvancementGoal - egg_shards_required: EggShardsRequired - egg_shards_available: EggShardsAvailable - required_bosses: BossGoal - shuffle_structures: ShuffleStructures - structure_compasses: StructureCompasses - - combat_difficulty: CombatDifficulty - include_hard_advancements: HardAdvancements - include_unreasonable_advancements: UnreasonableAdvancements - include_postgame_advancements: PostgameAdvancements - bee_traps: BeeTraps - send_defeated_mobs: SendDefeatedMobs - death_link: DeathLink - starting_items: StartingItems diff --git a/worlds/minecraft/Rules.py b/worlds/minecraft/Rules.py deleted file mode 100644 index 9a7be09a4a84..000000000000 --- a/worlds/minecraft/Rules.py +++ /dev/null @@ -1,508 +0,0 @@ -from BaseClasses import CollectionState -from worlds.generic.Rules import exclusion_rules - -from . import Constants -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from . import MinecraftWorld - - -# Helper functions -# moved from logicmixin - -def has_iron_ingots(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Progressive Tools', player) and state.has('Progressive Resource Crafting', player) - - -def has_copper_ingots(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Progressive Tools', player) and state.has('Progressive Resource Crafting', player) - - -def has_gold_ingots(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (state.has('Progressive Resource Crafting', player) - and ( - state.has('Progressive Tools', player, 2) - or state.can_reach_region('The Nether', player) - ) - ) - - -def has_diamond_pickaxe(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Progressive Tools', player, 3) and has_iron_ingots(world, state, player) - - -def craft_crossbow(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Archery', player) and has_iron_ingots(world, state, player) - - -def has_bottle(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Bottles', player) and state.has('Progressive Resource Crafting', player) - - -def has_spyglass(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (has_copper_ingots(world, state, player) - and state.has('Spyglass', player) - and can_adventure(world, state, player) - ) - - -def can_enchant(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Enchanting', player) and has_diamond_pickaxe(world, state, player) # mine obsidian and lapis - - -def can_use_anvil(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (state.has('Enchanting', player) - and state.has('Progressive Resource Crafting', player,2) - and has_iron_ingots(world, state, player) - ) - - -def fortress_loot(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: # saddles, blaze rods, wither skulls - return state.can_reach_region('Nether Fortress', player) and basic_combat(world, state, player) - - -def can_brew_potions(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Blaze Rods', player) and state.has('Brewing', player) and has_bottle(world, state, player) - - -def can_piglin_trade(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (has_gold_ingots(world, state, player) - and ( - state.can_reach_region('The Nether', player) - or state.can_reach_region('Bastion Remnant', player) - )) - - -def overworld_villager(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - village_region = state.multiworld.get_region('Village', player).entrances[0].parent_region.name - if village_region == 'The Nether': # 2 options: cure zombie villager or build portal in village - return (state.can_reach_location('Zombie Doctor', player) - or ( - has_diamond_pickaxe(world, state, player) - and state.can_reach_region('Village', player) - )) - elif village_region == 'The End': - return state.can_reach_location('Zombie Doctor', player) - return state.can_reach_region('Village', player) - - -def enter_stronghold(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Blaze Rods', player) and state.has('Brewing', player) and state.has('3 Ender Pearls', player) - - -# Difficulty-dependent functions -def combat_difficulty(world: "MinecraftWorld", state: CollectionState, player: int) -> str: - return world.options.combat_difficulty.current_key - - -def can_adventure(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - death_link_check = not world.options.death_link or state.has('Bed', player) - if combat_difficulty(world, state, player) == 'easy': - return state.has('Progressive Weapons', player, 2) and has_iron_ingots(world, state, player) and death_link_check - elif combat_difficulty(world, state, player) == 'hard': - return True - return (state.has('Progressive Weapons', player) and death_link_check and - (state.has('Progressive Resource Crafting', player) or state.has('Campfire', player))) - - -def basic_combat(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - if combat_difficulty(world, state, player) == 'easy': - return (state.has('Progressive Weapons', player, 2) - and state.has('Progressive Armor', player) - and state.has('Shield', player) - and has_iron_ingots(world, state, player) - ) - elif combat_difficulty(world, state, player) == 'hard': - return True - return (state.has('Progressive Weapons', player) - and ( - state.has('Progressive Armor', player) - or state.has('Shield', player) - ) - and has_iron_ingots(world, state, player) - ) - - -def complete_raid(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - reach_regions = (state.can_reach_region('Village', player) - and state.can_reach_region('Pillager Outpost', player)) - if combat_difficulty(world, state, player) == 'easy': - return (reach_regions - and state.has('Progressive Weapons', player, 3) - and state.has('Progressive Armor', player, 2) - and state.has('Shield', player) - and state.has('Archery', player) - and state.has('Progressive Tools', player, 2) - and has_iron_ingots(world, state, player) - ) - elif combat_difficulty(world, state, player) == 'hard': # might be too hard? - return (reach_regions - and state.has('Progressive Weapons', player, 2) - and has_iron_ingots(world, state, player) - and ( - state.has('Progressive Armor', player) - or state.has('Shield', player) - ) - ) - return (reach_regions - and state.has('Progressive Weapons', player, 2) - and has_iron_ingots(world, state, player) - and state.has('Progressive Armor', player) - and state.has('Shield', player) - ) - - -def can_kill_wither(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - normal_kill = (state.has("Progressive Weapons", player, 3) - and state.has("Progressive Armor", player, 2) - and can_brew_potions(world, state, player) - and can_enchant(world, state, player) - ) - if combat_difficulty(world, state, player) == 'easy': - return (fortress_loot(world, state, player) - and normal_kill - and state.has('Archery', player) - ) - elif combat_difficulty(world, state, player) == 'hard': # cheese kill using bedrock ceilings - return (fortress_loot(world, state, player) - and ( - normal_kill - or state.can_reach_region('The Nether', player) - or state.can_reach_region('The End', player) - ) - ) - - return fortress_loot(world, state, player) and normal_kill - - -def can_respawn_ender_dragon(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (state.can_reach_region('The Nether', player) - and state.can_reach_region('The End', player) - and state.has('Progressive Resource Crafting', player) # smelt sand into glass - ) - - -def can_kill_ender_dragon(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - if combat_difficulty(world, state, player) == 'easy': - return (state.has("Progressive Weapons", player, 3) - and state.has("Progressive Armor", player, 2) - and state.has('Archery', player) - and can_brew_potions(world, state, player) - and can_enchant(world, state, player) - ) - if combat_difficulty(world, state, player) == 'hard': - return ( - ( - state.has('Progressive Weapons', player, 2) - and state.has('Progressive Armor', player) - ) or ( - state.has('Progressive Weapons', player, 1) - and state.has('Bed', player) # who needs armor when you can respawn right outside the chamber - ) - ) - return (state.has('Progressive Weapons', player, 2) - and state.has('Progressive Armor', player) - and state.has('Archery', player) - ) - - -def has_structure_compass(world: "MinecraftWorld", state: CollectionState, entrance_name: str, player: int) -> bool: - if not world.options.structure_compasses: - return True - return state.has(f"Structure Compass ({state.multiworld.get_entrance(entrance_name, player).connected_region.name})", player) - - -def get_rules_lookup(world, player: int): - rules_lookup = { - "entrances": { - "Nether Portal": lambda state: state.has('Flint and Steel', player) - and ( - state.has('Bucket', player) - or state.has('Progressive Tools', player, 3) - ) - and has_iron_ingots(world, state, player), - "End Portal": lambda state: enter_stronghold(world, state, player) - and state.has('3 Ender Pearls', player, 4), - "Overworld Structure 1": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Overworld Structure 1", player), - "Overworld Structure 2": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Overworld Structure 2", player), - "Nether Structure 1": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Nether Structure 1", player), - "Nether Structure 2": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Nether Structure 2", player), - "The End Structure": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "The End Structure", player), - }, - "locations": { - "Ender Dragon": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "Wither": lambda state: can_kill_wither(world, state, player), - "Blaze Rods": lambda state: fortress_loot(world, state, player), - "Who is Cutting Onions?": lambda state: can_piglin_trade(world, state, player), - "Oh Shiny": lambda state: can_piglin_trade(world, state, player), - "Suit Up": lambda state: state.has("Progressive Armor", player) - and has_iron_ingots(world, state, player), - "Very Very Frightening": lambda state: state.has("Channeling Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player) - and overworld_villager(world, state, player), - "Hot Stuff": lambda state: state.has("Bucket", player) - and has_iron_ingots(world, state, player), - "Free the End": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "A Furious Cocktail": lambda state: (can_brew_potions(world, state, player) - and state.has("Fishing Rod", player) # Water Breathing - and state.can_reach_region("The Nether", player) # Regeneration, Fire Resistance, gold nuggets - and state.can_reach_region("Village", player) # Night Vision, Invisibility - and state.can_reach_location("Bring Home the Beacon", player)), - # Resistance - "Bring Home the Beacon": lambda state: can_kill_wither(world, state, player) - and has_diamond_pickaxe(world, state, player) - and state.has("Progressive Resource Crafting", player, 2), - "Not Today, Thank You": lambda state: state.has("Shield", player) - and has_iron_ingots(world, state, player), - "Isn't It Iron Pick": lambda state: state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Local Brewery": lambda state: can_brew_potions(world, state, player), - "The Next Generation": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "Fishy Business": lambda state: state.has("Fishing Rod", player), - "This Boat Has Legs": lambda state: ( - fortress_loot(world, state, player) - or complete_raid(world, state, player) - ) - and state.has("Saddle", player) - and state.has("Fishing Rod", player), - "Sniper Duel": lambda state: state.has("Archery", player), - "Great View From Up Here": lambda state: basic_combat(world, state, player), - "How Did We Get Here?": lambda state: (can_brew_potions(world, state, player) - and has_gold_ingots(world, state, player) # Absorption - and state.can_reach_region('End City', player) # Levitation - and state.can_reach_region('The Nether', player) # potion ingredients - and state.has("Fishing Rod", player) # Pufferfish, Nautilus Shells; spectral arrows - and state.has("Archery", player) - and state.can_reach_location("Bring Home the Beacon", player) # Haste - and state.can_reach_location("Hero of the Village", player)), # Bad Omen, Hero of the Village - "Bullseye": lambda state: state.has("Archery", player) - and state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Spooky Scary Skeleton": lambda state: basic_combat(world, state, player), - "Two by Two": lambda state: has_iron_ingots(world, state, player) - and state.has("Bucket", player) - and can_adventure(world, state, player), - "Two Birds, One Arrow": lambda state: craft_crossbow(world, state, player) - and can_enchant(world, state, player), - "Who's the Pillager Now?": lambda state: craft_crossbow(world, state, player), - "Getting an Upgrade": lambda state: state.has("Progressive Tools", player), - "Tactical Fishing": lambda state: state.has("Bucket", player) - and has_iron_ingots(world, state, player), - "Zombie Doctor": lambda state: can_brew_potions(world, state, player) - and has_gold_ingots(world, state, player), - "Ice Bucket Challenge": lambda state: has_diamond_pickaxe(world, state, player), - "Into Fire": lambda state: basic_combat(world, state, player), - "War Pigs": lambda state: basic_combat(world, state, player), - "Take Aim": lambda state: state.has("Archery", player), - "Total Beelocation": lambda state: state.has("Silk Touch Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player), - "Arbalistic": lambda state: (craft_crossbow(world, state, player) - and state.has("Piercing IV Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player) - ), - "The End... Again...": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "Acquire Hardware": lambda state: has_iron_ingots(world, state, player), - "Not Quite \"Nine\" Lives": lambda state: can_piglin_trade(world, state, player) - and state.has("Progressive Resource Crafting", player, 2), - "Cover Me With Diamonds": lambda state: state.has("Progressive Armor", player, 2) - and state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Sky's the Limit": lambda state: basic_combat(world, state, player), - "Hired Help": lambda state: state.has("Progressive Resource Crafting", player, 2) - and has_iron_ingots(world, state, player), - "Sweet Dreams": lambda state: state.has("Bed", player) - or state.can_reach_region('Village', player), - "You Need a Mint": lambda state: can_respawn_ender_dragon(world, state, player) - and has_bottle(world, state, player), - "Monsters Hunted": lambda state: (can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player) - and can_kill_wither(world, state, player) - and state.has("Fishing Rod", player)), - "Enchanter": lambda state: can_enchant(world, state, player), - "Voluntary Exile": lambda state: basic_combat(world, state, player), - "Eye Spy": lambda state: enter_stronghold(world, state, player), - "Serious Dedication": lambda state: (can_brew_potions(world, state, player) - and state.has("Bed", player) - and has_diamond_pickaxe(world, state, player) - and has_gold_ingots(world, state, player)), - "Postmortal": lambda state: complete_raid(world, state, player), - "Adventuring Time": lambda state: can_adventure(world, state, player), - "Hero of the Village": lambda state: complete_raid(world, state, player), - "Hidden in the Depths": lambda state: can_brew_potions(world, state, player) - and state.has("Bed", player) - and has_diamond_pickaxe(world, state, player), - "Beaconator": lambda state: (can_kill_wither(world, state, player) - and has_diamond_pickaxe(world, state, player) - and state.has("Progressive Resource Crafting", player, 2)), - "Withering Heights": lambda state: can_kill_wither(world, state, player), - "A Balanced Diet": lambda state: (has_bottle(world, state, player) - and has_gold_ingots(world, state, player) - and state.has("Progressive Resource Crafting", player, 2) - and state.can_reach_region('The End', player)), - # notch apple, chorus fruit - "Subspace Bubble": lambda state: has_diamond_pickaxe(world, state, player), - "Country Lode, Take Me Home": lambda state: state.can_reach_location("Hidden in the Depths", player) - and has_gold_ingots(world, state, player), - "Bee Our Guest": lambda state: state.has("Campfire", player) - and has_bottle(world, state, player), - "Uneasy Alliance": lambda state: has_diamond_pickaxe(world, state, player) - and state.has('Fishing Rod', player), - "Diamonds!": lambda state: state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "A Throwaway Joke": lambda state: can_adventure(world, state, player), - "Sticky Situation": lambda state: state.has("Campfire", player) - and has_bottle(world, state, player), - "Ol' Betsy": lambda state: craft_crossbow(world, state, player), - "Cover Me in Debris": lambda state: state.has("Progressive Armor", player, 2) - and state.has("8 Netherite Scrap", player, 2) - and state.has("Progressive Resource Crafting", player) - and has_diamond_pickaxe(world, state, player) - and has_iron_ingots(world, state, player) - and can_brew_potions(world, state, player) - and state.has("Bed", player), - "Hot Topic": lambda state: state.has("Progressive Resource Crafting", player), - "The Lie": lambda state: has_iron_ingots(world, state, player) - and state.has("Bucket", player), - "On a Rail": lambda state: has_iron_ingots(world, state, player) - and state.has('Progressive Tools', player, 2), - "When Pigs Fly": lambda state: ( - fortress_loot(world, state, player) - or complete_raid(world, state, player) - ) - and state.has("Saddle", player) - and state.has("Fishing Rod", player) - and can_adventure(world, state, player), - "Overkill": lambda state: can_brew_potions(world, state, player) - and ( - state.has("Progressive Weapons", player) - or state.can_reach_region('The Nether', player) - ), - "Librarian": lambda state: state.has("Enchanting", player), - "Overpowered": lambda state: has_iron_ingots(world, state, player) - and state.has('Progressive Tools', player, 2) - and basic_combat(world, state, player), - "Wax On": lambda state: has_copper_ingots(world, state, player) - and state.has('Campfire', player) - and state.has('Progressive Resource Crafting', player, 2), - "Wax Off": lambda state: has_copper_ingots(world, state, player) - and state.has('Campfire', player) - and state.has('Progressive Resource Crafting', player, 2), - "The Cutest Predator": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player), - "The Healing Power of Friendship": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player), - "Is It a Bird?": lambda state: has_spyglass(world, state, player) - and can_adventure(world, state, player), - "Is It a Balloon?": lambda state: has_spyglass(world, state, player), - "Is It a Plane?": lambda state: has_spyglass(world, state, player) - and can_respawn_ender_dragon(world, state, player), - "Surge Protector": lambda state: state.has("Channeling Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player) - and overworld_villager(world, state, player), - "Light as a Rabbit": lambda state: can_adventure(world, state, player) - and has_iron_ingots(world, state, player) - and state.has('Bucket', player), - "Glow and Behold!": lambda state: can_adventure(world, state, player), - "Whatever Floats Your Goat!": lambda state: can_adventure(world, state, player), - "Caves & Cliffs": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player) - and state.has('Progressive Tools', player, 2), - "Feels like home": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player) - and state.has('Fishing Rod', player) - and ( - fortress_loot(world, state, player) - or complete_raid(world, state, player) - ) - and state.has("Saddle", player), - "Sound of Music": lambda state: state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player) - and basic_combat(world, state, player), - "Star Trader": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player) - and ( - state.can_reach_region("The Nether", player) # soul sand in nether - or state.can_reach_region("Nether Fortress", player) # soul sand in fortress if not in nether for water elevator - or can_piglin_trade(world, state, player) # piglins give soul sand - ) - and overworld_villager(world, state, player), - "Birthday Song": lambda state: state.can_reach_location("The Lie", player) - and state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Bukkit Bukkit": lambda state: state.has("Bucket", player) - and has_iron_ingots(world, state, player) - and can_adventure(world, state, player), - "It Spreads": lambda state: can_adventure(world, state, player) - and has_iron_ingots(world, state, player) - and state.has("Progressive Tools", player, 2), - "Sneak 100": lambda state: can_adventure(world, state, player) - and has_iron_ingots(world, state, player) - and state.has("Progressive Tools", player, 2), - "When the Squad Hops into Town": lambda state: can_adventure(world, state, player) - and state.has("Lead", player), - "With Our Powers Combined!": lambda state: can_adventure(world, state, player) - and state.has("Lead", player), - } - } - return rules_lookup - - -def set_rules(self: "MinecraftWorld") -> None: - multiworld = self.multiworld - player = self.player - - rules_lookup = get_rules_lookup(self, player) - - # Set entrance rules - for entrance_name, rule in rules_lookup["entrances"].items(): - multiworld.get_entrance(entrance_name, player).access_rule = rule - - # Set location rules - for location_name, rule in rules_lookup["locations"].items(): - multiworld.get_location(location_name, player).access_rule = rule - - # Set rules surrounding completion - bosses = self.options.required_bosses - postgame_advancements = set() - if bosses.dragon: - postgame_advancements.update(Constants.exclusion_info["ender_dragon"]) - if bosses.wither: - postgame_advancements.update(Constants.exclusion_info["wither"]) - - def location_count(state: CollectionState) -> int: - return len([location for location in multiworld.get_locations(player) if - location.address is not None and - location.can_reach(state)]) - - def defeated_bosses(state: CollectionState) -> bool: - return ((not bosses.dragon or state.has("Ender Dragon", player)) - and (not bosses.wither or state.has("Wither", player))) - - egg_shards = min(self.options.egg_shards_required.value, self.options.egg_shards_available.value) - completion_requirements = lambda state: (location_count(state) >= self.options.advancement_goal - and state.has("Dragon Egg Shard", player, egg_shards)) - multiworld.completion_condition[player] = lambda state: completion_requirements(state) and defeated_bosses(state) - - # Set exclusions on hard/unreasonable/postgame - excluded_advancements = set() - if not self.options.include_hard_advancements: - excluded_advancements.update(Constants.exclusion_info["hard"]) - if not self.options.include_unreasonable_advancements: - excluded_advancements.update(Constants.exclusion_info["unreasonable"]) - if not self.options.include_postgame_advancements: - excluded_advancements.update(postgame_advancements) - exclusion_rules(multiworld, player, excluded_advancements) diff --git a/worlds/minecraft/Structures.py b/worlds/minecraft/Structures.py deleted file mode 100644 index d4f62f3498e9..000000000000 --- a/worlds/minecraft/Structures.py +++ /dev/null @@ -1,59 +0,0 @@ -from . import Constants -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from . import MinecraftWorld - - -def shuffle_structures(self: "MinecraftWorld") -> None: - multiworld = self.multiworld - player = self.player - - default_connections = Constants.region_info["default_connections"] - illegal_connections = Constants.region_info["illegal_connections"] - - # Get all unpaired exits and all regions without entrances (except the Menu) - # This function is destructive on these lists. - exits = [exit.name for r in multiworld.regions if r.player == player for exit in r.exits if exit.connected_region is None] - structs = [r.name for r in multiworld.regions if r.player == player and r.entrances == [] and r.name != 'Menu'] - exits_spoiler = exits[:] # copy the original order for the spoiler log - - pairs = {} - - def set_pair(exit, struct): - if (exit in exits) and (struct in structs) and (exit not in illegal_connections.get(struct, [])): - pairs[exit] = struct - exits.remove(exit) - structs.remove(struct) - else: - raise Exception(f"Invalid connection: {exit} => {struct} for player {player} ({multiworld.player_name[player]})") - - # Connect plando structures first - if self.options.plando_connections: - for conn in self.options.plando_connections: - set_pair(conn.entrance, conn.exit) - - # The algorithm tries to place the most restrictive structures first. This algorithm always works on the - # relatively small set of restrictions here, but does not work on all possible inputs with valid configurations. - if self.options.shuffle_structures: - structs.sort(reverse=True, key=lambda s: len(illegal_connections.get(s, []))) - for struct in structs[:]: - try: - exit = self.random.choice([e for e in exits if e not in illegal_connections.get(struct, [])]) - except IndexError: - raise Exception(f"No valid structure placements remaining for player {player} ({self.player_name})") - set_pair(exit, struct) - else: # write remaining default connections - for (exit, struct) in default_connections: - if exit in exits: - set_pair(exit, struct) - - # Make sure we actually paired everything; might fail if plando - try: - assert len(exits) == len(structs) == 0 - except AssertionError: - raise Exception(f"Failed to connect all Minecraft structures for player {player} ({self.player_name})") - - for exit in exits_spoiler: - multiworld.get_entrance(exit, player).connect(multiworld.get_region(pairs[exit], player)) - if self.options.shuffle_structures or self.options.plando_connections: - multiworld.spoiler.set_entrance(exit, pairs[exit], 'entrance', player) diff --git a/worlds/minecraft/__init__.py b/worlds/minecraft/__init__.py deleted file mode 100644 index 7ec9b4b2b8d9..000000000000 --- a/worlds/minecraft/__init__.py +++ /dev/null @@ -1,203 +0,0 @@ -import os -import json -import settings -import typing -from base64 import b64encode, b64decode -from typing import Dict, Any - -from BaseClasses import Region, Entrance, Item, Tutorial, ItemClassification, Location -from worlds.AutoWorld import World, WebWorld - -from . import Constants -from .Options import MinecraftOptions -from .Structures import shuffle_structures -from .ItemPool import build_item_pool, get_junk_item_names -from .Rules import set_rules - -client_version = 9 - - -class MinecraftSettings(settings.Group): - class ForgeDirectory(settings.OptionalUserFolderPath): - pass - - class ReleaseChannel(str): - """ - release channel, currently "release", or "beta" - any games played on the "beta" channel have a high likelihood of no longer working on the "release" channel. - """ - - class JavaExecutable(settings.OptionalUserFilePath): - """ - Path to Java executable. If not set, will attempt to fall back to Java system installation. - """ - - forge_directory: ForgeDirectory = ForgeDirectory("Minecraft NeoForge server") - max_heap_size: str = "2G" - release_channel: ReleaseChannel = ReleaseChannel("release") - java: JavaExecutable = JavaExecutable("") - - -class MinecraftWebWorld(WebWorld): - theme = "jungle" - bug_report_page = "https://github.com/KonoTyran/Minecraft_AP_Randomizer/issues/new?assignees=&labels=bug&template=bug_report.yaml&title=%5BBug%5D%3A+Brief+Description+of+bug+here" - - setup = Tutorial( - "Multiworld Setup Guide", - "A guide to setting up the Archipelago Minecraft software on your computer. This guide covers" - "single-player, multiworld, and related software.", - "English", - "minecraft_en.md", - "minecraft/en", - ["Kono Tyran"] - ) - - setup_es = Tutorial( - setup.tutorial_name, - setup.description, - "Español", - "minecraft_es.md", - "minecraft/es", - ["Edos"] - ) - - setup_sv = Tutorial( - setup.tutorial_name, - setup.description, - "Swedish", - "minecraft_sv.md", - "minecraft/sv", - ["Albinum"] - ) - - setup_fr = Tutorial( - setup.tutorial_name, - setup.description, - "Français", - "minecraft_fr.md", - "minecraft/fr", - ["TheLynk"] - ) - - tutorials = [setup, setup_es, setup_sv, setup_fr] - - -class MinecraftWorld(World): - """ - Minecraft is a game about creativity. In a world made entirely of cubes, you explore, discover, mine, - craft, and try not to explode. Delve deep into the earth and discover abandoned mines, ancient - structures, and materials to create a portal to another world. Defeat the Ender Dragon, and claim - victory! - """ - game = "Minecraft" - options_dataclass = MinecraftOptions - options: MinecraftOptions - settings: typing.ClassVar[MinecraftSettings] - topology_present = True - web = MinecraftWebWorld() - - item_name_to_id = Constants.item_name_to_id - location_name_to_id = Constants.location_name_to_id - - def _get_mc_data(self) -> Dict[str, Any]: - exits = [connection[0] for connection in Constants.region_info["default_connections"]] - return { - 'world_seed': self.random.getrandbits(32), - 'seed_name': self.multiworld.seed_name, - 'player_name': self.player_name, - 'player_id': self.player, - 'client_version': client_version, - 'structures': {exit: self.multiworld.get_entrance(exit, self.player).connected_region.name for exit in exits}, - 'advancement_goal': self.options.advancement_goal.value, - 'egg_shards_required': min(self.options.egg_shards_required.value, - self.options.egg_shards_available.value), - 'egg_shards_available': self.options.egg_shards_available.value, - 'required_bosses': self.options.required_bosses.current_key, - 'MC35': bool(self.options.send_defeated_mobs.value), - 'death_link': bool(self.options.death_link.value), - 'starting_items': json.dumps(self.options.starting_items.value), - 'race': self.multiworld.is_race, - } - - def create_item(self, name: str) -> Item: - item_class = ItemClassification.filler - if name in Constants.item_info["progression_items"]: - item_class = ItemClassification.progression - elif name in Constants.item_info["useful_items"]: - item_class = ItemClassification.useful - elif name in Constants.item_info["trap_items"]: - item_class = ItemClassification.trap - - return MinecraftItem(name, item_class, self.item_name_to_id.get(name, None), self.player) - - def create_event(self, region_name: str, event_name: str) -> None: - region = self.multiworld.get_region(region_name, self.player) - loc = MinecraftLocation(self.player, event_name, None, region) - loc.place_locked_item(self.create_event_item(event_name)) - region.locations.append(loc) - - def create_event_item(self, name: str) -> Item: - item = self.create_item(name) - item.classification = ItemClassification.progression - return item - - def create_regions(self) -> None: - # Create regions - for region_name, exits in Constants.region_info["regions"]: - r = Region(region_name, self.player, self.multiworld) - for exit_name in exits: - r.exits.append(Entrance(self.player, exit_name, r)) - self.multiworld.regions.append(r) - - # Bind mandatory connections - for entr_name, region_name in Constants.region_info["mandatory_connections"]: - e = self.multiworld.get_entrance(entr_name, self.player) - r = self.multiworld.get_region(region_name, self.player) - e.connect(r) - - # Add locations - for region_name, locations in Constants.location_info["locations_by_region"].items(): - region = self.multiworld.get_region(region_name, self.player) - for loc_name in locations: - loc = MinecraftLocation(self.player, loc_name, - self.location_name_to_id.get(loc_name, None), region) - region.locations.append(loc) - - # Add events - self.create_event("Nether Fortress", "Blaze Rods") - self.create_event("The End", "Ender Dragon") - self.create_event("Nether Fortress", "Wither") - - # Shuffle the connections - shuffle_structures(self) - - def create_items(self) -> None: - self.multiworld.itempool += build_item_pool(self) - - set_rules = set_rules - - def generate_output(self, output_directory: str) -> None: - data = self._get_mc_data() - filename = f"{self.multiworld.get_out_file_name_base(self.player)}.apmc" - with open(os.path.join(output_directory, filename), 'wb') as f: - f.write(b64encode(bytes(json.dumps(data), 'utf-8'))) - - def fill_slot_data(self) -> dict: - return self._get_mc_data() - - def get_filler_item_name(self) -> str: - return get_junk_item_names(self.random, 1)[0] - - -class MinecraftLocation(Location): - game = "Minecraft" - -class MinecraftItem(Item): - game = "Minecraft" - - -def mc_update_output(raw_data, server, port): - data = json.loads(b64decode(raw_data)) - data['server'] = server - data['port'] = port - return b64encode(bytes(json.dumps(data), 'utf-8')) diff --git a/worlds/minecraft/data/excluded_locations.json b/worlds/minecraft/data/excluded_locations.json deleted file mode 100644 index 2f6fbbba6d22..000000000000 --- a/worlds/minecraft/data/excluded_locations.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "hard": [ - "Very Very Frightening", - "A Furious Cocktail", - "Two by Two", - "Two Birds, One Arrow", - "Arbalistic", - "Monsters Hunted", - "Beaconator", - "A Balanced Diet", - "Uneasy Alliance", - "Cover Me in Debris", - "A Complete Catalogue", - "Surge Protector", - "Sound of Music", - "Star Trader", - "When the Squad Hops into Town", - "With Our Powers Combined!" - ], - "unreasonable": [ - "How Did We Get Here?", - "Adventuring Time" - ], - "ender_dragon": [ - "Free the End", - "The Next Generation", - "The End... Again...", - "You Need a Mint", - "Monsters Hunted", - "Is It a Plane?" - ], - "wither": [ - "Withering Heights", - "Bring Home the Beacon", - "Beaconator", - "A Furious Cocktail", - "How Did We Get Here?", - "Monsters Hunted" - ] -} \ No newline at end of file diff --git a/worlds/minecraft/data/items.json b/worlds/minecraft/data/items.json deleted file mode 100644 index 7d35d18aeb01..000000000000 --- a/worlds/minecraft/data/items.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "all_items": [ - "Archery", - "Progressive Resource Crafting", - "Resource Blocks", - "Brewing", - "Enchanting", - "Bucket", - "Flint and Steel", - "Bed", - "Bottles", - "Shield", - "Fishing Rod", - "Campfire", - "Progressive Weapons", - "Progressive Tools", - "Progressive Armor", - "8 Netherite Scrap", - "8 Emeralds", - "4 Emeralds", - "Channeling Book", - "Silk Touch Book", - "Sharpness III Book", - "Piercing IV Book", - "Looting III Book", - "Infinity Book", - "4 Diamond Ore", - "16 Iron Ore", - "500 XP", - "100 XP", - "50 XP", - "3 Ender Pearls", - "4 Lapis Lazuli", - "16 Porkchops", - "8 Gold Ore", - "Rotten Flesh", - "Single Arrow", - "32 Arrows", - "Saddle", - "Structure Compass (Village)", - "Structure Compass (Pillager Outpost)", - "Structure Compass (Nether Fortress)", - "Structure Compass (Bastion Remnant)", - "Structure Compass (End City)", - "Shulker Box", - "Dragon Egg Shard", - "Spyglass", - "Lead", - "Bee Trap" - ], - "progression_items": [ - "Archery", - "Progressive Resource Crafting", - "Resource Blocks", - "Brewing", - "Enchanting", - "Bucket", - "Flint and Steel", - "Bed", - "Bottles", - "Shield", - "Fishing Rod", - "Campfire", - "Progressive Weapons", - "Progressive Tools", - "Progressive Armor", - "8 Netherite Scrap", - "Channeling Book", - "Silk Touch Book", - "Piercing IV Book", - "3 Ender Pearls", - "Saddle", - "Structure Compass (Village)", - "Structure Compass (Pillager Outpost)", - "Structure Compass (Nether Fortress)", - "Structure Compass (Bastion Remnant)", - "Structure Compass (End City)", - "Dragon Egg Shard", - "Spyglass", - "Lead" - ], - "useful_items": [ - "Sharpness III Book", - "Looting III Book", - "Infinity Book" - ], - "trap_items": [ - "Bee Trap" - ], - - "required_pool": { - "Archery": 1, - "Progressive Resource Crafting": 2, - "Brewing": 1, - "Enchanting": 1, - "Bucket": 1, - "Flint and Steel": 1, - "Bed": 1, - "Bottles": 1, - "Shield": 1, - "Fishing Rod": 1, - "Campfire": 1, - "Progressive Weapons": 3, - "Progressive Tools": 3, - "Progressive Armor": 2, - "8 Netherite Scrap": 2, - "Channeling Book": 1, - "Silk Touch Book": 1, - "Sharpness III Book": 1, - "Piercing IV Book": 1, - "Looting III Book": 1, - "Infinity Book": 1, - "3 Ender Pearls": 4, - "Saddle": 1, - "Spyglass": 1, - "Lead": 1 - }, - "junk_weights": { - "4 Emeralds": 2, - "4 Diamond Ore": 1, - "16 Iron Ore": 1, - "50 XP": 4, - "16 Porkchops": 2, - "8 Gold Ore": 1, - "Rotten Flesh": 1, - "32 Arrows": 1 - } -} \ No newline at end of file diff --git a/worlds/minecraft/data/locations.json b/worlds/minecraft/data/locations.json deleted file mode 100644 index 7cd00e58519c..000000000000 --- a/worlds/minecraft/data/locations.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "all_locations": [ - "Who is Cutting Onions?", - "Oh Shiny", - "Suit Up", - "Very Very Frightening", - "Hot Stuff", - "Free the End", - "A Furious Cocktail", - "Best Friends Forever", - "Bring Home the Beacon", - "Not Today, Thank You", - "Isn't It Iron Pick", - "Local Brewery", - "The Next Generation", - "Fishy Business", - "Hot Tourist Destinations", - "This Boat Has Legs", - "Sniper Duel", - "Nether", - "Great View From Up Here", - "How Did We Get Here?", - "Bullseye", - "Spooky Scary Skeleton", - "Two by Two", - "Stone Age", - "Two Birds, One Arrow", - "We Need to Go Deeper", - "Who's the Pillager Now?", - "Getting an Upgrade", - "Tactical Fishing", - "Zombie Doctor", - "The City at the End of the Game", - "Ice Bucket Challenge", - "Remote Getaway", - "Into Fire", - "War Pigs", - "Take Aim", - "Total Beelocation", - "Arbalistic", - "The End... Again...", - "Acquire Hardware", - "Not Quite \"Nine\" Lives", - "Cover Me With Diamonds", - "Sky's the Limit", - "Hired Help", - "Return to Sender", - "Sweet Dreams", - "You Need a Mint", - "Adventure", - "Monsters Hunted", - "Enchanter", - "Voluntary Exile", - "Eye Spy", - "The End", - "Serious Dedication", - "Postmortal", - "Monster Hunter", - "Adventuring Time", - "A Seedy Place", - "Those Were the Days", - "Hero of the Village", - "Hidden in the Depths", - "Beaconator", - "Withering Heights", - "A Balanced Diet", - "Subspace Bubble", - "Husbandry", - "Country Lode, Take Me Home", - "Bee Our Guest", - "What a Deal!", - "Uneasy Alliance", - "Diamonds!", - "A Terrible Fortress", - "A Throwaway Joke", - "Minecraft", - "Sticky Situation", - "Ol' Betsy", - "Cover Me in Debris", - "The End?", - "The Parrots and the Bats", - "A Complete Catalogue", - "Getting Wood", - "Time to Mine!", - "Hot Topic", - "Bake Bread", - "The Lie", - "On a Rail", - "Time to Strike!", - "Cow Tipper", - "When Pigs Fly", - "Overkill", - "Librarian", - "Overpowered", - "Wax On", - "Wax Off", - "The Cutest Predator", - "The Healing Power of Friendship", - "Is It a Bird?", - "Is It a Balloon?", - "Is It a Plane?", - "Surge Protector", - "Light as a Rabbit", - "Glow and Behold!", - "Whatever Floats Your Goat!", - "Caves & Cliffs", - "Feels like home", - "Sound of Music", - "Star Trader", - "Birthday Song", - "Bukkit Bukkit", - "It Spreads", - "Sneak 100", - "When the Squad Hops into Town", - "With Our Powers Combined!", - "You've Got a Friend in Me" - ], - "locations_by_region": { - "Overworld": [ - "Who is Cutting Onions?", - "Oh Shiny", - "Suit Up", - "Very Very Frightening", - "Hot Stuff", - "Best Friends Forever", - "Not Today, Thank You", - "Isn't It Iron Pick", - "Fishy Business", - "Sniper Duel", - "Bullseye", - "Stone Age", - "Two Birds, One Arrow", - "Getting an Upgrade", - "Tactical Fishing", - "Zombie Doctor", - "Ice Bucket Challenge", - "Take Aim", - "Total Beelocation", - "Arbalistic", - "Acquire Hardware", - "Cover Me With Diamonds", - "Hired Help", - "Sweet Dreams", - "Adventure", - "Monsters Hunted", - "Enchanter", - "Eye Spy", - "Monster Hunter", - "Adventuring Time", - "A Seedy Place", - "Husbandry", - "Bee Our Guest", - "Diamonds!", - "A Throwaway Joke", - "Minecraft", - "Sticky Situation", - "Ol' Betsy", - "The Parrots and the Bats", - "Getting Wood", - "Time to Mine!", - "Hot Topic", - "Bake Bread", - "The Lie", - "On a Rail", - "Time to Strike!", - "Cow Tipper", - "When Pigs Fly", - "Librarian", - "Wax On", - "Wax Off", - "The Cutest Predator", - "The Healing Power of Friendship", - "Is It a Bird?", - "Surge Protector", - "Light as a Rabbit", - "Glow and Behold!", - "Whatever Floats Your Goat!", - "Caves & Cliffs", - "Sound of Music", - "Bukkit Bukkit", - "It Spreads", - "Sneak 100", - "When the Squad Hops into Town" - ], - "The Nether": [ - "Hot Tourist Destinations", - "This Boat Has Legs", - "Nether", - "Two by Two", - "We Need to Go Deeper", - "Not Quite \"Nine\" Lives", - "Return to Sender", - "Serious Dedication", - "Hidden in the Depths", - "Subspace Bubble", - "Country Lode, Take Me Home", - "Uneasy Alliance", - "Cover Me in Debris", - "Is It a Balloon?", - "Feels like home", - "With Our Powers Combined!" - ], - "The End": [ - "Free the End", - "The Next Generation", - "Remote Getaway", - "The End... Again...", - "You Need a Mint", - "The End", - "The End?", - "Is It a Plane?" - ], - "Village": [ - "Postmortal", - "Hero of the Village", - "A Balanced Diet", - "What a Deal!", - "A Complete Catalogue", - "Star Trader" - ], - "Nether Fortress": [ - "A Furious Cocktail", - "Bring Home the Beacon", - "Local Brewery", - "How Did We Get Here?", - "Spooky Scary Skeleton", - "Into Fire", - "Beaconator", - "Withering Heights", - "A Terrible Fortress", - "Overkill" - ], - "Pillager Outpost": [ - "Who's the Pillager Now?", - "Voluntary Exile", - "Birthday Song", - "You've Got a Friend in Me" - ], - "Bastion Remnant": [ - "War Pigs", - "Those Were the Days", - "Overpowered" - ], - "End City": [ - "Great View From Up Here", - "The City at the End of the Game", - "Sky's the Limit" - ] - } -} \ No newline at end of file diff --git a/worlds/minecraft/data/regions.json b/worlds/minecraft/data/regions.json deleted file mode 100644 index c9e51e48292e..000000000000 --- a/worlds/minecraft/data/regions.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "regions": [ - ["Menu", ["New World"]], - ["Overworld", ["Nether Portal", "End Portal", "Overworld Structure 1", "Overworld Structure 2"]], - ["The Nether", ["Nether Structure 1", "Nether Structure 2"]], - ["The End", ["The End Structure"]], - ["Village", []], - ["Pillager Outpost", []], - ["Nether Fortress", []], - ["Bastion Remnant", []], - ["End City", []] - ], - "mandatory_connections": [ - ["New World", "Overworld"], - ["Nether Portal", "The Nether"], - ["End Portal", "The End"] - ], - "default_connections": [ - ["Overworld Structure 1", "Village"], - ["Overworld Structure 2", "Pillager Outpost"], - ["Nether Structure 1", "Nether Fortress"], - ["Nether Structure 2", "Bastion Remnant"], - ["The End Structure", "End City"] - ], - "illegal_connections": { - "Nether Fortress": ["The End Structure"] - } -} \ No newline at end of file diff --git a/worlds/minecraft/docs/en_Minecraft.md b/worlds/minecraft/docs/en_Minecraft.md deleted file mode 100644 index 3a69a7f59a22..000000000000 --- a/worlds/minecraft/docs/en_Minecraft.md +++ /dev/null @@ -1,113 +0,0 @@ -# Minecraft - -## Where is the options page? - -The [player options page for this game](../player-options) contains all the options you need to configure and export a -config file. - -## What does randomization do to this game? - -Some recipes are locked from being able to be crafted and shuffled into the item pool. It can also optionally change which -structures appear in each dimension. Crafting recipes are re-learned when they are received from other players as item -checks, and occasionally when completing your own achievements. See below for which recipes are shuffled. - -## What is considered a location check in Minecraft? - -Location checks are completed when the player completes various Minecraft achievements. Opening the advancements menu -in-game by pressing "L" will display outstanding achievements. - -## When the player receives an item, what happens? - -When the player receives an item in Minecraft, it either unlocks crafting recipes or puts items into the player's -inventory directly. - -## What is the victory condition? - -Victory is achieved when the player kills the Ender Dragon, enters the portal in The End, and completes the credits -sequence either by skipping it or watching it play out. - -## Which recipes are locked? - -* Archery - * Bow - * Arrow - * Crossbow -* Brewing - * Blaze Powder - * Brewing Stand -* Enchanting - * Enchanting Table - * Bookshelf -* Bucket -* Flint & Steel -* All Beds -* Bottles -* Shield -* Fishing Rod - * Fishing Rod - * Carrot on a Stick - * Warped Fungus on a Stick -* Campfire - * Campfire - * Soul Campfire -* Spyglass -* Lead -* Progressive Weapons - * Tier I - * Stone Sword - * Stone Axe - * Tier II - * Iron Sword - * Iron Axe - * Tier III - * Diamond Sword - * Diamond Axe -* Progessive Tools - * Tier I - * Stone Pickaxe - * Stone Shovel - * Stone Hoe - * Tier II - * Iron Pickaxe - * Iron Shovel - * Iron Hoe - * Tier III - * Diamond Pickaxe - * Diamond Shovel - * Diamond Hoe - * Netherite Ingot -* Progressive Armor - * Tier I - * Iron Helmet - * Iron Chestplate - * Iron Leggings - * Iron Boots - * Tier II - * Diamond Helmet - * Diamond Chestplate - * Diamond Leggings - * Diamond Boots -* Progressive Resource Crafting - * Tier I - * Iron Ingot from Nuggets - * Iron Nugget - * Gold Ingot from Nuggets - * Gold Nugget - * Furnace - * Blast Furnace - * Tier II - * Redstone - * Redstone Block - * Glowstone - * Iron Ingot from Iron Block - * Iron Block - * Gold Ingot from Gold Block - * Gold Block - * Diamond - * Diamond Block - * Netherite Block - * Netherite Ingot from Netherite Block - * Anvil - * Emerald - * Emerald Block - * Copper Block diff --git a/worlds/minecraft/docs/minecraft_en.md b/worlds/minecraft/docs/minecraft_en.md deleted file mode 100644 index e0b5ae3b98b5..000000000000 --- a/worlds/minecraft/docs/minecraft_en.md +++ /dev/null @@ -1,74 +0,0 @@ -# Minecraft Randomizer Setup Guide - -## Required Software - -- Minecraft Java Edition from - the [Minecraft Java Edition Store Page](https://www.minecraft.net/en-us/store/minecraft-java-edition) -- Archipelago from the [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) - -## Configuring your YAML file - -### What is a YAML file and why do I need one? - -See the guide on setting up a basic YAML at the Archipelago setup -guide: [Basic Multiworld Setup Guide](/tutorial/Archipelago/setup/en) - -### Where do I get a YAML file? - -You can customize your options by visiting the [Minecraft Player Options Page](/games/Minecraft/player-options) - -## Joining a MultiWorld Game - -### Obtain Your Minecraft Data File - -**Only one yaml file needs to be submitted per minecraft world regardless of how many players play on it.** - -When you join a multiworld game, you will be asked to provide your YAML file to whoever is hosting. Once that is done, -the host will provide you with either a link to download your data file, or with a zip file containing everyone's data -files. Your data file should have a `.apmc` extension. - -Double-click on your `.apmc` file to have the Minecraft client auto-launch the installed forge server. Make sure to -leave this window open as this is your server console. - -### Connect to the MultiServer - -Open Minecraft, go to `Multiplayer > Direct Connection`, and join the `localhost` server address. - -If you are using the website to host the game then it should auto-connect to the AP server without the need to `/connect` - -otherwise once you are in game type `/connect (Port) (Password)` where `` is the address of the -Archipelago server. `(Port)` is only required if the Archipelago server is not using the default port of 38281. Note that there is no colon between `` and `(Port)`. -`(Password)` is only required if the Archipelago server you are using has a password set. - -### Play the game - -When the console tells you that you have joined the room, you're all set. Congratulations on successfully joining a -multiworld game! At this point any additional minecraft players may connect to your forge server. To start the game once -everyone is ready use the command `/start`. - -## Non-Windows Installation - -The Minecraft Client will install forge and the mod for other operating systems but Java has to be provided by the -user. Head to [minecraft_versions.json on the MC AP GitHub](https://raw.githubusercontent.com/KonoTyran/Minecraft_AP_Randomizer/master/versions/minecraft_versions.json) -to see which java version is required. New installations will default to the topmost "release" version. -- Install the matching Amazon Corretto JDK - - see [Manual Installation Software Links](#manual-installation-software-links) - - or package manager provided by your OS / distribution -- Open your `host.yaml` and add the path to your Java below the `minecraft_options` key - - ` java: "path/to/java-xx-amazon-corretto/bin/java"` -- Run the Minecraft Client and select your .apmc file - -## Full Manual Installation - -It is highly recommended to ues the Archipelago installer to handle the installation of the forge server for you. -Support will not be given for those wishing to manually install forge. For those of you who know how, and wish to do so, -the following links are the versions of the software we use. - -### Manual Installation Software Links - -- [Minecraft Forge Download Page](https://files.minecraftforge.net/net/minecraftforge/forge/) -- [Minecraft Archipelago Randomizer Mod Releases Page](https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - - **DO NOT INSTALL THIS ON YOUR CLIENT** -- [Amazon Corretto](https://docs.aws.amazon.com/corretto/) - - pick the matching version and select "Downloads" on the left - diff --git a/worlds/minecraft/docs/minecraft_es.md b/worlds/minecraft/docs/minecraft_es.md deleted file mode 100644 index 4f4899212240..000000000000 --- a/worlds/minecraft/docs/minecraft_es.md +++ /dev/null @@ -1,148 +0,0 @@ -# Guia instalación de Minecraft Randomizer - -# Instalacion automatica para el huesped de partida - -- descarga e instala [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases) and activa el - modulo `Minecraft Client` - -## Software Requerido - -- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-edition) - -## Configura tu fichero YAML - -### Que es un fichero YAML y potque necesito uno? - -Tu fichero YAML contiene un numero de opciones que proveen al generador con informacion sobre como debe generar tu -juego. Cada jugador de un multiworld entregara u propio fichero YAML. Esto permite que cada jugador disfrute de una -experiencia personalizada a su gusto y diferentes jugadores dentro del mismo multiworld pueden tener diferentes opciones - -### Where do I get a YAML file? - -Un fichero basico yaml para minecraft tendra este aspecto. - -```yaml -description: Basic Minecraft Yaml -# Tu nombre en el juego. Espacios seran sustituidos por guinoes bajos y -# hay un limite de 16 caracteres -name: TuNombre -game: Minecraft - -# Opciones compartidas por todos los juegos: -accessibility: full -progression_balancing: 50 -# Opciones Especficicas para Minecraft - -Minecraft: - # Numero de logros requeridos (87 max) para que aparezca el Ender Dragon y completar el juego. - advancement_goal: 50 - - # Numero de trozos de huevo de dragon a obtener (30 max) antes de que el Ender Dragon aparezca. - egg_shards_required: 10 - - # Numero de huevos disponibles en la partida (30 max). - egg_shards_available: 15 - - # Modifica el nivel de objetos logicamente requeridos para - # explorar areas peligrosas y luchar contra jefes. - combat_difficulty: - easy: 0 - normal: 1 - hard: 0 - - # Si off, los logros que dependan de suerte o sean tediosos tendran objetos de apoyo, no necesarios para completar el juego. - include_hard_advancements: - on: 0 - off: 1 - - # Si off, los logros muy dificiles tendran objetos de apoyo, no necesarios para completar el juego. - # Solo afecta a How Did We Get Here? and Adventuring Time. - include_insane_advancements: - on: 0 - off: 1 - - # Algunos logros requieren derrotar al Ender Dragon; - # Si esto se queda en off, dichos logros no tendran objetos necesarios. - include_postgame_advancements: - on: 0 - off: 1 - - # Permite el mezclado de villas, puesto, fortalezas, bastiones y ciudades de END. - shuffle_structures: - on: 0 - off: 1 - - # Añade brujulas de estructura al juego, - # apuntaran a la estructura correspondiente mas cercana. - structure_compasses: - on: 0 - off: 1 - - # Reemplaza un porcentaje de objetos innecesarios por trampas abeja - # las cuales crearan multiples abejas agresivas alrededor de los jugadores cuando se reciba. - bee_traps: - 0: 1 - 25: 0 - 50: 0 - 75: 0 - 100: 0 -``` - -## Unirse a un juego MultiWorld - -### Obten tu ficheros de datos Minecraft - -**Solo un fichero yaml es necesario por mundo minecraft, sin importar el numero de jugadores que jueguen en el.** - -Cuando te unes a un juego multiworld, se te pedirá que entregues tu fichero YAML a quien sea que hospede el juego -multiworld (no confundir con hospedar el mundo minecraft). Una vez la generación acabe, el anfitrión te dará un enlace a -tu fichero de datos o un zip con los ficheros de todos. Tu fichero de datos tiene una extensión `.apmc`. - -Haz doble click en tu fichero `.apmc` para que se arranque el cliente de minecraft y el servidor forge se ejecute. - -### Conectar al multiserver - -Despues de poner tu fichero en el directorio `APData`, arranca el Forge server y asegurate que tienes el estado OP -tecleando `/op TuUsuarioMinecraft` en la consola del servidor y entonces conectate con tu cliente Minecraft. - -Una vez en juego introduce `/connect (Port) ()` donde `` es la dirección del -servidor. `(Port)` solo es requerido si el servidor Archipelago no esta usando el puerto por defecto 38281. -`()` -solo se necesita si el servidor Archipleago tiene un password activo. - -### Jugar al juego - -Cuando la consola te diga que te has unido a la sala, estas lista/o para empezar a jugar. Felicidades por unirte -exitosamente a un juego multiworld! Llegados a este punto cualquier jugador adicional puede conectarse a tu servidor -forge. - -## Procedimiento de instalación manual - -Solo es requerido si quieres usar una instalacion de forge por ti mismo, recomendamos usar el instalador de Archipelago - -### Software Requerido - -- [Minecraft Forge](https://files.minecraftforge.net/net/minecraftforge/forge/index_1.16.5.html) -- [Minecraft Archipelago Randomizer Mod](https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - **NO INSTALES ESTO EN TU CLIENTE MINECRAFT** - -### Instalación de servidor dedicado - -Solo una persona ha de realizar este proceso y hospedar un servidor dedicado para que los demas jueguen conectandose a -él. - -1. Descarga el instalador de **Minecraft Forge** 1.16.5 desde el enlace proporcionado, siempre asegurandose de bajar la - version mas reciente. - -2. Ejecuta el fichero `forge-1.16.5-xx.x.x-installer.jar` y elije **install server**. - - En esta pagina elegiras ademas donde instalar el servidor, importante recordar esta localización en el siguiente - paso. - -3. Navega al directorio donde hayas instalado el servidor y abre `forge-1.16.5-xx.x.x.jar` - - La primera vez que lances el servidor se cerrara (o no aparecerá nada en absoluto), debería haber un fichero nuevo - en el directorio llamado `eula.txt`, el cual que contiene un enlace al EULA de minecraft, cambia la linea - a `eula=true` para aceptar el EULA y poder utilizar el software de servidor. - - Esto creara la estructura de directorios apropiada para el siguiente paso - -4. Coloca el fichero `aprandomizer-x.x.x.jar` del segundo enlace en el directorio `mods` - - Cuando se ejecute el servidor de nuevo, generara el directorio `APData` que se necesitara para jugar diff --git a/worlds/minecraft/docs/minecraft_fr.md b/worlds/minecraft/docs/minecraft_fr.md deleted file mode 100644 index 31c48151f491..000000000000 --- a/worlds/minecraft/docs/minecraft_fr.md +++ /dev/null @@ -1,74 +0,0 @@ -# Guide de configuration du randomiseur Minecraft - -## Logiciel requis - -- Minecraft Java Edition à partir de - la [page de la boutique Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-edition) -- Archipelago depuis la [page des versions d'Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases) - - (sélectionnez `Minecraft Client` lors de l'installation.) - -## Configuration de votre fichier YAML - -### Qu'est-ce qu'un fichier YAML et pourquoi en ai-je besoin ? - -Voir le guide sur la configuration d'un YAML de base lors de la configuration d'Archipelago -guide : [Guide de configuration de base de Multiworld](/tutorial/Archipelago/setup/en) - -### Où puis-je obtenir un fichier YAML ? - -Vous pouvez personnaliser vos paramètres Minecraft en allant sur la [page des paramètres de joueur](/games/Minecraft/player-options) - -## Rejoindre une partie MultiWorld - -### Obtenez votre fichier de données Minecraft - -**Un seul fichier yaml doit être soumis par monde minecraft, quel que soit le nombre de joueurs qui y jouent.** - -Lorsque vous rejoignez un jeu multimonde, il vous sera demandé de fournir votre fichier YAML à l'hébergeur. Une fois cela fait, -l'hébergeur vous fournira soit un lien pour télécharger votre fichier de données, soit un fichier zip contenant les données de chacun -des dossiers. Votre fichier de données doit avoir une extension `.apmc`. - -Double-cliquez sur votre fichier `.apmc` pour que le client Minecraft lance automatiquement le serveur forge installé. Assurez-vous de -laissez cette fenêtre ouverte car il s'agit de votre console serveur. - -### Connectez-vous au multiserveur - -Ouvrez Minecraft, accédez à "Multijoueur> Connexion directe" et rejoignez l'adresse du serveur "localhost". - -Si vous utilisez le site Web pour héberger le jeu, il devrait se connecter automatiquement au serveur AP sans avoir besoin de `/connect` - -sinon, une fois que vous êtes dans le jeu, tapez `/connect (Port) (Password)` où `` est l'adresse du -Serveur Archipelago. `(Port)` n'est requis que si le serveur Archipelago n'utilise pas le port par défaut 38281. Notez qu'il n'y a pas de deux-points entre `` et `(Port)` mais un espace. -`(Mot de passe)` n'est requis que si le serveur Archipelago que vous utilisez a un mot de passe défini. - -### Jouer le jeu - -Lorsque la console vous indique que vous avez rejoint la salle, vous êtes prêt. Félicitations pour avoir rejoint avec succès un -jeu multimonde ! À ce stade, tous les joueurs minecraft supplémentaires peuvent se connecter à votre serveur forge. Pour commencer le jeu une fois -que tout le monde est prêt utilisez la commande `/start`. - -## Installation non Windows - -Le client Minecraft installera forge et le mod pour d'autres systèmes d'exploitation, mais Java doit être fourni par l' -utilisateur. Rendez-vous sur [minecraft_versions.json sur le MC AP GitHub](https://raw.githubusercontent.com/KonoTyran/Minecraft_AP_Randomizer/master/versions/minecraft_versions.json) -pour voir quelle version de Java est requise. Les nouvelles installations utiliseront par défaut la version "release" la plus élevée. -- Installez le JDK Amazon Corretto correspondant - - voir les [Liens d'installation manuelle du logiciel](#manual-installation-software-links) - - ou gestionnaire de paquets fourni par votre OS/distribution -- Ouvrez votre `host.yaml` et ajoutez le chemin vers votre Java sous la clé `minecraft_options` - - ` java : "chemin/vers/java-xx-amazon-corretto/bin/java"` -- Exécutez le client Minecraft et sélectionnez votre fichier .apmc - -## Installation manuelle complète - -Il est fortement recommandé d'utiliser le programme d'installation d'Archipelago pour gérer l'installation du serveur forge pour vous. -Le support ne sera pas fourni pour ceux qui souhaitent installer manuellement forge. Pour ceux d'entre vous qui savent comment faire et qui souhaitent le faire, -les liens suivants sont les versions des logiciels que nous utilisons. - -### Liens d'installation manuelle du logiciel - -- [Page de téléchargement de Minecraft Forge] (https://files.minecraftforge.net/net/minecraftforge/forge/) -- [Page des versions du mod Minecraft Archipelago Randomizer] (https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - - **NE PAS INSTALLER CECI SUR VOTRE CLIENT** -- [Amazon Corretto](https://docs.aws.amazon.com/corretto/) - - choisissez la version correspondante et sélectionnez "Téléchargements" sur la gauche diff --git a/worlds/minecraft/docs/minecraft_sv.md b/worlds/minecraft/docs/minecraft_sv.md deleted file mode 100644 index ab8c1b5d8ea7..000000000000 --- a/worlds/minecraft/docs/minecraft_sv.md +++ /dev/null @@ -1,132 +0,0 @@ -# Minecraft Randomizer Uppsättningsguide - -## Nödvändig Mjukvara - -### Server Värd - -- [Minecraft Forge](https://files.minecraftforge.net/net/minecraftforge/forge/index_1.16.5.html) -- [Minecraft Archipelago Randomizer Mod](https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - -### Spelare - -- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-edition) - -## Installationsprocedurer - -### Tillägnad - -Bara en person behöver göra denna uppsättning och vara värd för en server för alla andra spelare att koppla till. - -1. Ladda ner 1.16.5 **Minecraft Forge** installeraren från länken ovanför och se till att ladda ner den senaste - rekommenderade versionen. - -2. Kör `forge-1.16.5-xx.x.x-installer.jar` filen och välj **installera server**. - - På denna sida kommer du också välja vart du ska installera servern för att komma ihåg denna katalog. Detta är - viktigt för nästa steg. - -3. Navigera till vart du har installerat servern och öppna `forge-1.16.5-xx.x.x-installer.jar` - - Under första serverstart så kommer den att stängas ner och fråga dig att acceptera Minecrafts EULA. En ny fil - kommer skapas vid namn `eula.txt` som har en länk till Minecrafts EULA, och en linje som du behöver byta - till `eula=true` för att acceptera Minecrafts EULA. - - Detta kommer skapa de lämpliga katalogerna för dig att placera filerna i de följande steget. - -4. Placera `aprandomizer-x.x.x.jar` länken ovanför i `mods` mappen som ligger ovanför installationen av din forge - server. - - Kör servern igen. Den kommer ladda up och generera den nödvändiga katalogen `APData` för när du är redo att spela! - -### Grundläggande Spelaruppsättning - -- Köp och installera Minecraft från länken ovanför. - - **Du är klar**. - - Andra spelare behöver endast ha en 'Vanilla' omodifierad version av Minecraft för att kunna spela! - -### Avancerad Spelaruppsättning - -***Detta är inte nödvändigt för att spela ett slumpmässigt Minecraftspel.*** -Dock så är det rekommenderat eftersom det hjälper att göra upplevelsen mer trevligt. - -#### Rekommenderade Moddar - -- [JourneyMap](https://www.curseforge.com/minecraft/mc-mods/journeymap) (Minimap) - - -1. Installera och Kör Minecraft från länken ovanför minst en gång. -2. Kör `forge-1.16.5-xx.x.x-installer.jar` filen och välj **installera klient**. - - Starta Minecraft Forge minst en gång för att skapa katalogerna som behövs för de nästa stegen. -3. Navigera till din Minecraft installationskatalog och placera de önskade moddarna med `.jar` i `mods` -katalogen. - - Standardinstallationskatalogerna är som följande; - - Windows `%APPDATA%\.minecraft\mods` - - macOS `~/Library/Application Support/minecraft/mods` - - Linux `~/.minecraft/mods` - -## Konfigurera Din YAML-fil - -### Vad är en YAML-fil och varför behöver jag en? - -Din YAML-fil behåller en uppsättning av konfigurationsalternativ som ger generatorn med information om hur den borde -generera ditt spel. Varje spelare i en multivärld kommer behöva ge deras egen YAML-fil. Denna uppsättning tillåter varje -spelare att an njuta av en upplevelse anpassade för deras smaker, och olika spelare i samma multivärld kan ha helt olika -alternativ. - -### Vart kan jag få tag i en YAML-fil? - -En grundläggande Minecraft YAML kommer se ut så här. - -```yaml -description: Template Name -# Ditt spelnamn. Mellanslag kommer bli omplacerad med understräck och det är en 16-karaktärsgräns. -name: YourName -game: Minecraft -accessibility: full -progression_balancing: 0 -advancement_goal: - few: 0 - normal: 1 - many: 0 -combat_difficulty: - easy: 0 - normal: 1 - hard: 0 -include_hard_advancements: - on: 0 - off: 1 -include_insane_advancements: - on: 0 - off: 1 -include_postgame_advancements: - on: 0 - off: 1 -shuffle_structures: - on: 1 - off: 0 -``` - - -## Gå med i ett Multivärld-spel - -### Skaffa din Minecraft data-fil - -**Endast en YAML-fil behöver användats per Minecraft-värld oavsett hur många spelare det är som spelar.** - -När du går med it ett Multivärld spel så kommer du bli ombedd att lämna in din YAML-fil till personen som värdar. När -detta är klart så kommer värden att ge dig antingen en länk till att ladda ner din data-fil, eller mer en zip-fil som -innehåller allas data-filer. Din data-fil borde ha en `.apmc` -extension. - -Lägg din data-fil i dina forge-servrar `APData` -mapp. Se till att ta bort alla tidigare data-filer som var i där förut. - -### Koppla till Multiservern - -Efter du har placerat din data-fil i `APData` -mappen, starta forge-servern och se till att you har OP-status genom att -skriva `/op DittAnvändarnamn` i forger-serverns konsol innan du kopplar dig till din Minecraft klient. När du är inne i -spelet, skriv `/connect ()` där `` är addressen av -Archipelago-servern. `()` är endast nödvändigt om Archipelago-servern som du använder har ett tillsatt -lösenord. - -### Spela spelet - -När konsolen har informerat att du har gått med i rummet så är du redo att börja spela. Grattis att du har lykats med -att gått med i ett Multivärld-spel! Vid detta tillfälle, alla ytterligare Minecraft-spelare må koppla in till din -forge-server. - diff --git a/worlds/minecraft/requirements.txt b/worlds/minecraft/requirements.txt deleted file mode 100644 index 85fe230fe57b..000000000000 --- a/worlds/minecraft/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -requests >= 2.28.1 # used by client diff --git a/worlds/minecraft/test/TestAdvancements.py b/worlds/minecraft/test/TestAdvancements.py deleted file mode 100644 index 321aef1af934..000000000000 --- a/worlds/minecraft/test/TestAdvancements.py +++ /dev/null @@ -1,1410 +0,0 @@ -from . import MCTestBase - - -# Format: -# [location, expected_result, given_items, [excluded_items]] -# Every advancement has its own test, named by its internal ID number. -class TestAdvancements(MCTestBase): - options = { - "shuffle_structures": False, - "structure_compasses": False - } - - def test_42000(self): - self.run_location_tests([ - ["Who is Cutting Onions?", False, []], - ["Who is Cutting Onions?", False, [], ['Progressive Resource Crafting']], - ["Who is Cutting Onions?", False, [], ['Flint and Steel']], - ["Who is Cutting Onions?", False, [], ['Progressive Tools']], - ["Who is Cutting Onions?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Who is Cutting Onions?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Who is Cutting Onions?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42001(self): - self.run_location_tests([ - ["Oh Shiny", False, []], - ["Oh Shiny", False, [], ['Progressive Resource Crafting']], - ["Oh Shiny", False, [], ['Flint and Steel']], - ["Oh Shiny", False, [], ['Progressive Tools']], - ["Oh Shiny", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Oh Shiny", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Oh Shiny", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42002(self): - self.run_location_tests([ - ["Suit Up", False, []], - ["Suit Up", False, [], ["Progressive Armor"]], - ["Suit Up", False, [], ["Progressive Resource Crafting"]], - ["Suit Up", False, [], ["Progressive Tools"]], - ["Suit Up", True, ["Progressive Armor", "Progressive Resource Crafting", "Progressive Tools"]], - ]) - - def test_42003(self): - self.run_location_tests([ - ["Very Very Frightening", False, []], - ["Very Very Frightening", False, [], ['Channeling Book']], - ["Very Very Frightening", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Very Very Frightening", False, [], ['Enchanting']], - ["Very Very Frightening", False, [], ['Progressive Tools']], - ["Very Very Frightening", False, [], ['Progressive Weapons']], - ["Very Very Frightening", True, ['Progressive Weapons', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Enchanting', 'Progressive Resource Crafting', 'Progressive Resource Crafting', 'Channeling Book']], - ]) - - def test_42004(self): - self.run_location_tests([ - ["Hot Stuff", False, []], - ["Hot Stuff", False, [], ["Bucket"]], - ["Hot Stuff", False, [], ["Progressive Resource Crafting"]], - ["Hot Stuff", False, [], ["Progressive Tools"]], - ["Hot Stuff", True, ["Bucket", "Progressive Resource Crafting", "Progressive Tools"]], - ]) - - def test_42005(self): - self.run_location_tests([ - ["Free the End", False, []], - ["Free the End", False, [], ['Progressive Resource Crafting']], - ["Free the End", False, [], ['Flint and Steel']], - ["Free the End", False, [], ['Progressive Tools']], - ["Free the End", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Free the End", False, [], ['Progressive Armor']], - ["Free the End", False, [], ['Brewing']], - ["Free the End", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Free the End", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Free the End", False, [], ['Archery']], - ["Free the End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Free the End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42006(self): - self.run_location_tests([ - ["A Furious Cocktail", False, []], - ["A Furious Cocktail", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["A Furious Cocktail", False, [], ['Flint and Steel']], - ["A Furious Cocktail", False, [], ['Progressive Tools']], - ["A Furious Cocktail", False, [], ['Progressive Weapons']], - ["A Furious Cocktail", False, [], ['Progressive Armor', 'Shield']], - ["A Furious Cocktail", False, [], ['Brewing']], - ["A Furious Cocktail", False, [], ['Bottles']], - ["A Furious Cocktail", False, [], ['Fishing Rod']], - ["A Furious Cocktail", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["A Furious Cocktail", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', - 'Progressive Armor', 'Progressive Armor', - 'Enchanting', 'Brewing', 'Bottles', 'Fishing Rod']], - ]) - - def test_42007(self): - self.run_location_tests([ - ["Best Friends Forever", True, []], - ]) - - def test_42008(self): - self.run_location_tests([ - ["Bring Home the Beacon", False, []], - ["Bring Home the Beacon", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Bring Home the Beacon", False, [], ['Flint and Steel']], - ["Bring Home the Beacon", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Bring Home the Beacon", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Bring Home the Beacon", False, ['Progressive Armor'], ['Progressive Armor']], - ["Bring Home the Beacon", False, [], ['Enchanting']], - ["Bring Home the Beacon", False, [], ['Brewing']], - ["Bring Home the Beacon", False, [], ['Bottles']], - ["Bring Home the Beacon", True, [], ['Bucket']], - ["Bring Home the Beacon", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', - 'Progressive Armor', 'Progressive Armor', - 'Enchanting', 'Brewing', 'Bottles']], - ]) - - def test_42009(self): - self.run_location_tests([ - ["Not Today, Thank You", False, []], - ["Not Today, Thank You", False, [], ["Shield"]], - ["Not Today, Thank You", False, [], ["Progressive Resource Crafting"]], - ["Not Today, Thank You", False, [], ["Progressive Tools"]], - ["Not Today, Thank You", True, ["Shield", "Progressive Resource Crafting", "Progressive Tools"]], - ]) - - def test_42010(self): - self.run_location_tests([ - ["Isn't It Iron Pick", False, []], - ["Isn't It Iron Pick", True, ["Progressive Tools", "Progressive Tools"], ["Progressive Tools"]], - ["Isn't It Iron Pick", False, [], ["Progressive Tools", "Progressive Tools"]], - ["Isn't It Iron Pick", False, [], ["Progressive Resource Crafting"]], - ["Isn't It Iron Pick", False, ["Progressive Tools", "Progressive Resource Crafting"]], - ["Isn't It Iron Pick", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42011(self): - self.run_location_tests([ - ["Local Brewery", False, []], - ["Local Brewery", False, [], ['Progressive Resource Crafting']], - ["Local Brewery", False, [], ['Flint and Steel']], - ["Local Brewery", False, [], ['Progressive Tools']], - ["Local Brewery", False, [], ['Progressive Weapons']], - ["Local Brewery", False, [], ['Progressive Armor', 'Shield']], - ["Local Brewery", False, [], ['Brewing']], - ["Local Brewery", False, [], ['Bottles']], - ["Local Brewery", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ]) - - def test_42012(self): - self.run_location_tests([ - ["The Next Generation", False, []], - ["The Next Generation", False, [], ['Progressive Resource Crafting']], - ["The Next Generation", False, [], ['Flint and Steel']], - ["The Next Generation", False, [], ['Progressive Tools']], - ["The Next Generation", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["The Next Generation", False, [], ['Progressive Armor']], - ["The Next Generation", False, [], ['Brewing']], - ["The Next Generation", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The Next Generation", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The Next Generation", False, [], ['Archery']], - ["The Next Generation", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The Next Generation", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42013(self): - self.run_location_tests([ - ["Fishy Business", False, []], - ["Fishy Business", False, [], ['Fishing Rod']], - ["Fishy Business", True, ['Fishing Rod']], - ]) - - def test_42014(self): - self.run_location_tests([ - ["Hot Tourist Destinations", False, []], - ["Hot Tourist Destinations", False, [], ['Progressive Resource Crafting']], - ["Hot Tourist Destinations", False, [], ['Flint and Steel']], - ["Hot Tourist Destinations", False, [], ['Progressive Tools']], - ["Hot Tourist Destinations", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Hot Tourist Destinations", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Hot Tourist Destinations", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42015(self): - self.run_location_tests([ - ["This Boat Has Legs", False, []], - ["This Boat Has Legs", False, [], ['Progressive Resource Crafting']], - ["This Boat Has Legs", False, [], ['Flint and Steel']], - ["This Boat Has Legs", False, [], ['Progressive Tools']], - ["This Boat Has Legs", False, [], ['Progressive Weapons']], - ["This Boat Has Legs", False, [], ['Progressive Armor', 'Shield']], - ["This Boat Has Legs", False, [], ['Fishing Rod']], - ["This Boat Has Legs", False, [], ['Saddle']], - ["This Boat Has Legs", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor', 'Flint and Steel', 'Bucket', 'Fishing Rod']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Fishing Rod']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Shield', 'Flint and Steel', 'Bucket', 'Fishing Rod']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Shield', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Fishing Rod']], - ]) - - def test_42016(self): - self.run_location_tests([ - ["Sniper Duel", False, []], - ["Sniper Duel", False, [], ['Archery']], - ["Sniper Duel", True, ['Archery']], - ]) - - def test_42017(self): - self.run_location_tests([ - ["Nether", False, []], - ["Nether", False, [], ['Progressive Resource Crafting']], - ["Nether", False, [], ['Flint and Steel']], - ["Nether", False, [], ['Progressive Tools']], - ["Nether", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Nether", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Nether", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42018(self): - self.run_location_tests([ - ["Great View From Up Here", False, []], - ["Great View From Up Here", False, [], ['Progressive Resource Crafting']], - ["Great View From Up Here", False, [], ['Flint and Steel']], - ["Great View From Up Here", False, [], ['Progressive Tools']], - ["Great View From Up Here", False, [], ['Progressive Weapons']], - ["Great View From Up Here", False, [], ['Progressive Armor', 'Shield']], - ["Great View From Up Here", False, [], ['Brewing']], - ["Great View From Up Here", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Great View From Up Here", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42019(self): - self.run_location_tests([ - ["How Did We Get Here?", False, []], - ["How Did We Get Here?", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["How Did We Get Here?", False, [], ['Flint and Steel']], - ["How Did We Get Here?", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["How Did We Get Here?", False, ['Progressive Weapons', 'Progressive Weapons'], ['Progressive Weapons']], - ["How Did We Get Here?", False, ['Progressive Armor'], ['Progressive Armor']], - ["How Did We Get Here?", False, [], ['Shield']], - ["How Did We Get Here?", False, [], ['Enchanting']], - ["How Did We Get Here?", False, [], ['Brewing']], - ["How Did We Get Here?", False, [], ['Bottles']], - ["How Did We Get Here?", False, [], ['Archery']], - ["How Did We Get Here?", False, [], ['Fishing Rod']], - ["How Did We Get Here?", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["How Did We Get Here?", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', 'Flint and Steel', - 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', - 'Progressive Armor', 'Progressive Armor', 'Shield', - 'Enchanting', 'Brewing', 'Archery', 'Bottles', 'Fishing Rod', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42020(self): - self.run_location_tests([ - ["Bullseye", False, []], - ["Bullseye", False, [], ['Archery']], - ["Bullseye", False, [], ['Progressive Resource Crafting']], - ["Bullseye", False, [], ['Progressive Tools']], - ["Bullseye", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Resource Crafting', 'Archery']], - ]) - - def test_42021(self): - self.run_location_tests([ - ["Spooky Scary Skeleton", False, []], - ["Spooky Scary Skeleton", False, [], ['Progressive Resource Crafting']], - ["Spooky Scary Skeleton", False, [], ['Flint and Steel']], - ["Spooky Scary Skeleton", False, [], ['Progressive Tools']], - ["Spooky Scary Skeleton", False, [], ['Progressive Weapons']], - ["Spooky Scary Skeleton", False, [], ['Progressive Armor', 'Shield']], - ["Spooky Scary Skeleton", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ]) - - def test_42022(self): - self.run_location_tests([ - ["Two by Two", False, []], - ["Two by Two", False, [], ['Progressive Resource Crafting']], - ["Two by Two", False, [], ['Flint and Steel']], - ["Two by Two", False, [], ['Progressive Tools']], - ["Two by Two", False, [], ['Progressive Weapons']], - ["Two by Two", False, [], ['Bucket']], - ["Two by Two", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Two by Two", False, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - ["Two by Two", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons']], - ]) - - def test_42023(self): - self.run_location_tests([ - ["Stone Age", True, []], - ]) - - def test_42024(self): - self.run_location_tests([ - ["Two Birds, One Arrow", False, []], - ["Two Birds, One Arrow", False, [], ['Archery']], - ["Two Birds, One Arrow", False, [], ['Progressive Resource Crafting']], - ["Two Birds, One Arrow", False, ['Progressive Tools'], ['Progressive Tools', 'Progressive Tools']], - ["Two Birds, One Arrow", False, [], ['Enchanting']], - ["Two Birds, One Arrow", True, ['Archery', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Enchanting']], - ]) - - def test_42025(self): - self.run_location_tests([ - ["We Need to Go Deeper", False, []], - ["We Need to Go Deeper", False, [], ['Progressive Resource Crafting']], - ["We Need to Go Deeper", False, [], ['Flint and Steel']], - ["We Need to Go Deeper", False, [], ['Progressive Tools']], - ["We Need to Go Deeper", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["We Need to Go Deeper", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["We Need to Go Deeper", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42026(self): - self.run_location_tests([ - ["Who's the Pillager Now?", False, []], - ["Who's the Pillager Now?", False, [], ['Archery']], - ["Who's the Pillager Now?", False, [], ['Progressive Resource Crafting']], - ["Who's the Pillager Now?", False, [], ['Progressive Tools']], - ["Who's the Pillager Now?", False, [], ['Progressive Weapons']], - ["Who's the Pillager Now?", True, ['Archery', 'Progressive Tools', 'Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42027(self): - self.run_location_tests([ - ["Getting an Upgrade", False, []], - ["Getting an Upgrade", True, ["Progressive Tools"]], - ]) - - def test_42028(self): - self.run_location_tests([ - ["Tactical Fishing", False, []], - ["Tactical Fishing", False, [], ['Progressive Resource Crafting']], - ["Tactical Fishing", False, [], ['Progressive Tools']], - ["Tactical Fishing", False, [], ['Bucket']], - ["Tactical Fishing", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Bucket']], - ]) - - def test_42029(self): - self.run_location_tests([ - ["Zombie Doctor", False, []], - ["Zombie Doctor", False, [], ['Progressive Resource Crafting']], - ["Zombie Doctor", False, [], ['Flint and Steel']], - ["Zombie Doctor", False, [], ['Progressive Tools']], - ["Zombie Doctor", False, [], ['Progressive Weapons']], - ["Zombie Doctor", False, [], ['Progressive Armor', 'Shield']], - ["Zombie Doctor", False, [], ['Brewing']], - ["Zombie Doctor", False, [], ['Bottles']], - ["Zombie Doctor", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ]) - - def test_42030(self): - self.run_location_tests([ - ["The City at the End of the Game", False, []], - ["The City at the End of the Game", False, [], ['Progressive Resource Crafting']], - ["The City at the End of the Game", False, [], ['Flint and Steel']], - ["The City at the End of the Game", False, [], ['Progressive Tools']], - ["The City at the End of the Game", False, [], ['Progressive Weapons']], - ["The City at the End of the Game", False, [], ['Progressive Armor', 'Shield']], - ["The City at the End of the Game", False, [], ['Brewing']], - ["The City at the End of the Game", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The City at the End of the Game", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42031(self): - self.run_location_tests([ - ["Ice Bucket Challenge", False, []], - ["Ice Bucket Challenge", False, ["Progressive Tools", "Progressive Tools"], ["Progressive Tools"]], - ["Ice Bucket Challenge", False, [], ["Progressive Resource Crafting"]], - ["Ice Bucket Challenge", True, ["Progressive Tools", "Progressive Tools", "Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42032(self): - self.run_location_tests([ - ["Remote Getaway", False, []], - ["Remote Getaway", False, [], ['Progressive Resource Crafting']], - ["Remote Getaway", False, [], ['Flint and Steel']], - ["Remote Getaway", False, [], ['Progressive Tools']], - ["Remote Getaway", False, [], ['Progressive Weapons']], - ["Remote Getaway", False, [], ['Progressive Armor', 'Shield']], - ["Remote Getaway", False, [], ['Brewing']], - ["Remote Getaway", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Remote Getaway", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42033(self): - self.run_location_tests([ - ["Into Fire", False, []], - ["Into Fire", False, [], ['Progressive Resource Crafting']], - ["Into Fire", False, [], ['Flint and Steel']], - ["Into Fire", False, [], ['Progressive Tools']], - ["Into Fire", False, [], ['Progressive Weapons']], - ["Into Fire", False, [], ['Progressive Armor', 'Shield']], - ["Into Fire", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ]) - - def test_42034(self): - self.run_location_tests([ - ["War Pigs", False, []], - ["War Pigs", False, [], ['Progressive Resource Crafting']], - ["War Pigs", False, [], ['Flint and Steel']], - ["War Pigs", False, [], ['Progressive Tools']], - ["War Pigs", False, [], ['Progressive Weapons']], - ["War Pigs", False, [], ['Progressive Armor', 'Shield']], - ["War Pigs", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["War Pigs", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ["War Pigs", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ]) - - def test_42035(self): - self.run_location_tests([ - ["Take Aim", False, []], - ["Take Aim", False, [], ['Archery']], - ["Take Aim", True, ['Archery']], - ]) - - def test_42036(self): - self.run_location_tests([ - ["Total Beelocation", False, []], - ["Total Beelocation", False, [], ['Enchanting']], - ["Total Beelocation", False, [], ['Silk Touch Book']], - ["Total Beelocation", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Total Beelocation", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Total Beelocation", True, ['Enchanting', 'Silk Touch Book', 'Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42037(self): - self.run_location_tests([ - ["Arbalistic", False, []], - ["Arbalistic", False, [], ['Enchanting']], - ["Arbalistic", False, [], ['Piercing IV Book']], - ["Arbalistic", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Arbalistic", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Arbalistic", False, [], ['Archery']], - ["Arbalistic", True, ['Enchanting', 'Piercing IV Book', 'Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Archery']], - ]) - - def test_42038(self): - self.run_location_tests([ - ["The End... Again...", False, []], - ["The End... Again...", False, [], ['Progressive Resource Crafting']], - ["The End... Again...", False, [], ['Flint and Steel']], - ["The End... Again...", False, [], ['Progressive Tools']], - ["The End... Again...", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["The End... Again...", False, [], ['Progressive Armor']], - ["The End... Again...", False, [], ['Brewing']], - ["The End... Again...", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The End... Again...", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The End... Again...", False, [], ['Archery']], - ["The End... Again...", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End... Again...", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42039(self): - self.run_location_tests([ - ["Acquire Hardware", False, []], - ["Acquire Hardware", False, [], ["Progressive Tools"]], - ["Acquire Hardware", False, [], ["Progressive Resource Crafting"]], - ["Acquire Hardware", True, ["Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42040(self): - self.run_location_tests([ - ["Not Quite \"Nine\" Lives", False, []], - ["Not Quite \"Nine\" Lives", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Not Quite \"Nine\" Lives", False, [], ['Flint and Steel']], - ["Not Quite \"Nine\" Lives", False, [], ['Progressive Tools']], - ["Not Quite \"Nine\" Lives", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Not Quite \"Nine\" Lives", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Not Quite \"Nine\" Lives", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42041(self): - self.run_location_tests([ - ["Cover Me With Diamonds", False, []], - ["Cover Me With Diamonds", False, ['Progressive Armor'], ['Progressive Armor']], - ["Cover Me With Diamonds", False, ['Progressive Tools'], ['Progressive Tools', 'Progressive Tools']], - ["Cover Me With Diamonds", False, [], ['Progressive Resource Crafting']], - ["Cover Me With Diamonds", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Armor', 'Progressive Armor']], - ]) - - def test_42042(self): - self.run_location_tests([ - ["Sky's the Limit", False, []], - ["Sky's the Limit", False, [], ['Progressive Resource Crafting']], - ["Sky's the Limit", False, [], ['Flint and Steel']], - ["Sky's the Limit", False, [], ['Progressive Tools']], - ["Sky's the Limit", False, [], ['Progressive Weapons']], - ["Sky's the Limit", False, [], ['Progressive Armor', 'Shield']], - ["Sky's the Limit", False, [], ['Brewing']], - ["Sky's the Limit", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Sky's the Limit", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42043(self): - self.run_location_tests([ - ["Hired Help", False, []], - ["Hired Help", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Hired Help", False, [], ['Progressive Tools']], - ["Hired Help", True, ['Progressive Tools', 'Progressive Resource Crafting', 'Progressive Resource Crafting']], - ]) - - def test_42044(self): - self.run_location_tests([ - ["Return to Sender", False, []], - ["Return to Sender", False, [], ['Progressive Resource Crafting']], - ["Return to Sender", False, [], ['Flint and Steel']], - ["Return to Sender", False, [], ['Progressive Tools']], - ["Return to Sender", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Return to Sender", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Return to Sender", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42045(self): - self.run_location_tests([ - ["Sweet Dreams", False, []], - ["Sweet Dreams", True, ['Bed']], - ["Sweet Dreams", False, [], ['Bed', 'Progressive Weapons']], - ["Sweet Dreams", False, [], ['Bed', 'Progressive Resource Crafting', 'Campfire']], - ["Sweet Dreams", True, ['Progressive Weapons', 'Progressive Resource Crafting'], ['Bed', 'Campfire']], - ["Sweet Dreams", True, ['Progressive Weapons', 'Campfire'], ['Bed', 'Progressive Resource Crafting']], - ]) - - def test_42046(self): - self.run_location_tests([ - ["You Need a Mint", False, []], - ["You Need a Mint", False, [], ['Progressive Resource Crafting']], - ["You Need a Mint", False, [], ['Flint and Steel']], - ["You Need a Mint", False, [], ['Progressive Tools']], - ["You Need a Mint", False, [], ['Progressive Weapons']], - ["You Need a Mint", False, [], ['Progressive Armor', 'Shield']], - ["You Need a Mint", False, [], ['Brewing']], - ["You Need a Mint", False, [], ['Bottles']], - ["You Need a Mint", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["You Need a Mint", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ]) - - def test_42047(self): - self.run_location_tests([ - ["Adventure", True, []], - ]) - - def test_42048(self): - self.run_location_tests([ - ["Monsters Hunted", False, []], - ["Monsters Hunted", False, [], ['Progressive Resource Crafting']], - ["Monsters Hunted", False, [], ['Flint and Steel']], - ["Monsters Hunted", False, [], ['Progressive Tools']], - ["Monsters Hunted", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Monsters Hunted", False, [], ['Progressive Armor']], - ["Monsters Hunted", False, [], ['Brewing']], - ["Monsters Hunted", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Monsters Hunted", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Monsters Hunted", False, [], ['Archery']], - ["Monsters Hunted", False, [], ['Enchanting']], - ["Monsters Hunted", False, [], ['Fishing Rod']], - ["Monsters Hunted", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', 'Archery', - 'Progressive Armor', 'Progressive Armor', 'Enchanting', - 'Fishing Rod', 'Brewing', 'Bottles', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42049(self): - self.run_location_tests([ - ["Enchanter", False, []], - ["Enchanter", False, [], ['Enchanting']], - ["Enchanter", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Enchanter", False, [], ['Progressive Resource Crafting']], - ["Enchanter", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Enchanting', 'Progressive Resource Crafting']], - ]) - - def test_42050(self): - self.run_location_tests([ - ["Voluntary Exile", False, []], - ["Voluntary Exile", False, [], ['Progressive Weapons']], - ["Voluntary Exile", False, [], ['Progressive Armor', 'Shield']], - ["Voluntary Exile", False, [], ['Progressive Tools']], - ["Voluntary Exile", False, [], ['Progressive Resource Crafting']], - ["Voluntary Exile", True, ['Progressive Tools', 'Progressive Armor', 'Progressive Weapons', 'Progressive Resource Crafting']], - ["Voluntary Exile", True, ['Progressive Tools', 'Shield', 'Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42051(self): - self.run_location_tests([ - ["Eye Spy", False, []], - ["Eye Spy", False, [], ['Progressive Resource Crafting']], - ["Eye Spy", False, [], ['Flint and Steel']], - ["Eye Spy", False, [], ['Progressive Tools']], - ["Eye Spy", False, [], ['Progressive Weapons']], - ["Eye Spy", False, [], ['Progressive Armor', 'Shield']], - ["Eye Spy", False, [], ['Brewing']], - ["Eye Spy", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Eye Spy", False, [], ['3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', '3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', '3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', '3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', '3 Ender Pearls']], - ]) - - def test_42052(self): - self.run_location_tests([ - ["The End", False, []], - ["The End", False, [], ['Progressive Resource Crafting']], - ["The End", False, [], ['Flint and Steel']], - ["The End", False, [], ['Progressive Tools']], - ["The End", False, [], ['Progressive Weapons']], - ["The End", False, [], ['Progressive Armor', 'Shield']], - ["The End", False, [], ['Brewing']], - ["The End", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The End", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42053(self): - self.run_location_tests([ - ["Serious Dedication", False, []], - ["Serious Dedication", False, [], ['Progressive Resource Crafting']], - ["Serious Dedication", False, [], ['Flint and Steel']], - ["Serious Dedication", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Serious Dedication", False, [], ['Progressive Weapons']], - ["Serious Dedication", False, [], ['Progressive Armor', 'Shield']], - ["Serious Dedication", False, [], ['Brewing']], - ["Serious Dedication", False, [], ['Bottles']], - ["Serious Dedication", False, [], ['Bed']], - ["Serious Dedication", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles', 'Bed']], - ["Serious Dedication", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles', 'Bed']], - ]) - - def test_42054(self): - self.run_location_tests([ - ["Postmortal", False, []], - ["Postmortal", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Postmortal", False, [], ['Progressive Armor']], - ["Postmortal", False, [], ['Shield']], - ["Postmortal", False, [], ['Progressive Resource Crafting']], - ["Postmortal", False, [], ['Progressive Tools']], - ["Postmortal", True, ['Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Shield', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42055(self): - self.run_location_tests([ - ["Monster Hunter", True, []], - ]) - - def test_42056(self): - self.run_location_tests([ - ["Adventuring Time", False, []], - ["Adventuring Time", False, [], ['Progressive Weapons']], - ["Adventuring Time", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["Adventuring Time", True, ['Progressive Weapons', 'Campfire']], - ["Adventuring Time", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42057(self): - self.run_location_tests([ - ["A Seedy Place", True, []], - ]) - - def test_42058(self): - self.run_location_tests([ - ["Those Were the Days", False, []], - ["Those Were the Days", False, [], ['Progressive Resource Crafting']], - ["Those Were the Days", False, [], ['Flint and Steel']], - ["Those Were the Days", False, [], ['Progressive Tools']], - ["Those Were the Days", False, [], ['Progressive Weapons']], - ["Those Were the Days", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Those Were the Days", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons']], - ["Those Were the Days", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - ]) - - def test_42059(self): - self.run_location_tests([ - ["Hero of the Village", False, []], - ["Hero of the Village", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Hero of the Village", False, [], ['Progressive Armor']], - ["Hero of the Village", False, [], ['Shield']], - ["Hero of the Village", False, [], ['Progressive Resource Crafting']], - ["Hero of the Village", False, [], ['Progressive Tools']], - ["Hero of the Village", True, ['Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Shield', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42060(self): - self.run_location_tests([ - ["Hidden in the Depths", False, []], - ["Hidden in the Depths", False, [], ['Progressive Resource Crafting']], - ["Hidden in the Depths", False, [], ['Flint and Steel']], - ["Hidden in the Depths", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Hidden in the Depths", False, [], ['Progressive Weapons']], - ["Hidden in the Depths", False, [], ['Progressive Armor', 'Shield']], - ["Hidden in the Depths", False, [], ['Brewing']], - ["Hidden in the Depths", False, [], ['Bottles']], - ["Hidden in the Depths", False, [], ['Bed']], - ["Hidden in the Depths", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles', 'Bed']], - ["Hidden in the Depths", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles', 'Bed']], - ]) - - def test_42061(self): - self.run_location_tests([ - ["Beaconator", False, []], - ["Beaconator", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Beaconator", False, [], ['Flint and Steel']], - ["Beaconator", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Beaconator", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Beaconator", False, ['Progressive Armor'], ['Progressive Armor']], - ["Beaconator", False, [], ['Brewing']], - ["Beaconator", False, [], ['Bottles']], - ["Beaconator", False, [], ['Enchanting']], - ["Beaconator", True, [], ['Bucket']], - ["Beaconator", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Progressive Armor', - 'Brewing', 'Bottles', 'Enchanting']], - ]) - - def test_42062(self): - self.run_location_tests([ - ["Withering Heights", False, []], - ["Withering Heights", False, [], ['Progressive Resource Crafting']], - ["Withering Heights", False, [], ['Flint and Steel']], - ["Withering Heights", False, [], ['Progressive Tools']], - ["Withering Heights", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Withering Heights", False, ['Progressive Armor'], ['Progressive Armor']], - ["Withering Heights", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Withering Heights", False, [], ['Brewing']], - ["Withering Heights", False, [], ['Bottles']], - ["Withering Heights", False, [], ['Enchanting']], - ["Withering Heights", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Progressive Armor', - 'Brewing', 'Bottles', 'Enchanting']], - ]) - - def test_42063(self): - self.run_location_tests([ - ["A Balanced Diet", False, []], - ["A Balanced Diet", False, [], ['Bottles']], - ["A Balanced Diet", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["A Balanced Diet", False, [], ['Flint and Steel']], - ["A Balanced Diet", False, [], ['Progressive Tools']], - ["A Balanced Diet", False, [], ['Progressive Weapons']], - ["A Balanced Diet", False, [], ['Progressive Armor', 'Shield']], - ["A Balanced Diet", False, [], ['Brewing']], - ["A Balanced Diet", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["A Balanced Diet", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42064(self): - self.run_location_tests([ - ["Subspace Bubble", False, []], - ["Subspace Bubble", False, [], ['Progressive Resource Crafting']], - ["Subspace Bubble", False, [], ['Flint and Steel']], - ["Subspace Bubble", False, [], ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Subspace Bubble", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Resource Crafting']], - ]) - - def test_42065(self): - self.run_location_tests([ - ["Husbandry", True, []], - ]) - - def test_42066(self): - self.run_location_tests([ - ["Country Lode, Take Me Home", False, []], - ["Country Lode, Take Me Home", False, [], ['Progressive Resource Crafting']], - ["Country Lode, Take Me Home", False, [], ['Flint and Steel']], - ["Country Lode, Take Me Home", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Country Lode, Take Me Home", False, [], ['Progressive Weapons']], - ["Country Lode, Take Me Home", False, [], ['Progressive Armor', 'Shield']], - ["Country Lode, Take Me Home", False, [], ['Brewing']], - ["Country Lode, Take Me Home", False, [], ['Bottles']], - ["Country Lode, Take Me Home", False, [], ['Bed']], - ["Country Lode, Take Me Home", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles', 'Bed']], - ["Country Lode, Take Me Home", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles', 'Bed']], - ]) - - def test_42067(self): - self.run_location_tests([ - ["Bee Our Guest", False, []], - ["Bee Our Guest", False, [], ['Campfire']], - ["Bee Our Guest", False, [], ['Bottles']], - ["Bee Our Guest", False, [], ['Progressive Resource Crafting']], - ["Bee Our Guest", True, ['Campfire', 'Bottles', 'Progressive Resource Crafting']], - ]) - - def test_42068(self): - self.run_location_tests([ - ["What a Deal!", False, []], - ["What a Deal!", False, [], ['Progressive Weapons']], - ["What a Deal!", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["What a Deal!", True, ['Progressive Weapons', 'Campfire']], - ["What a Deal!", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42069(self): - self.run_location_tests([ - ["Uneasy Alliance", False, []], - ["Uneasy Alliance", False, [], ['Progressive Resource Crafting']], - ["Uneasy Alliance", False, [], ['Flint and Steel']], - ["Uneasy Alliance", False, [], ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Uneasy Alliance", False, [], ['Fishing Rod']], - ["Uneasy Alliance", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Resource Crafting', 'Fishing Rod']], - ]) - - def test_42070(self): - self.run_location_tests([ - ["Diamonds!", False, []], - ["Diamonds!", True, ["Progressive Tools", "Progressive Tools"], ["Progressive Tools"]], - ["Diamonds!", False, [], ["Progressive Tools", "Progressive Tools"]], - ["Diamonds!", False, [], ["Progressive Resource Crafting"]], - ["Diamonds!", False, ["Progressive Tools", "Progressive Resource Crafting"]], - ["Diamonds!", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42071(self): - self.run_location_tests([ - ["A Terrible Fortress", False, []], - ["A Terrible Fortress", False, [], ['Progressive Resource Crafting']], - ["A Terrible Fortress", False, [], ['Flint and Steel']], - ["A Terrible Fortress", False, [], ['Progressive Tools']], - ["A Terrible Fortress", False, [], ['Progressive Weapons']], - ["A Terrible Fortress", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["A Terrible Fortress", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons']], - ["A Terrible Fortress", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - ]) - - def test_42072(self): - self.run_location_tests([ - ["A Throwaway Joke", False, []], - ["A Throwaway Joke", False, [], ['Progressive Weapons']], - ["A Throwaway Joke", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["A Throwaway Joke", True, ['Progressive Weapons', 'Campfire']], - ["A Throwaway Joke", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42073(self): - self.run_location_tests([ - ["Minecraft", True, []], - ]) - - def test_42074(self): - self.run_location_tests([ - ["Sticky Situation", False, []], - ["Sticky Situation", False, [], ['Bottles']], - ["Sticky Situation", False, [], ['Progressive Resource Crafting']], - ["Sticky Situation", False, [], ['Campfire']], - ["Sticky Situation", True, ['Bottles', 'Progressive Resource Crafting', 'Campfire']], - ]) - - def test_42075(self): - self.run_location_tests([ - ["Ol' Betsy", False, []], - ["Ol' Betsy", False, [], ['Archery']], - ["Ol' Betsy", False, [], ['Progressive Resource Crafting']], - ["Ol' Betsy", False, [], ['Progressive Tools']], - ["Ol' Betsy", True, ['Archery', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42076(self): - self.run_location_tests([ - ["Cover Me in Debris", False, []], - ["Cover Me in Debris", False, [], ['Progressive Resource Crafting']], - ["Cover Me in Debris", False, [], ['Flint and Steel']], - ["Cover Me in Debris", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Cover Me in Debris", False, [], ['Progressive Weapons']], - ["Cover Me in Debris", False, ['Progressive Armor'], ['Progressive Armor']], - ["Cover Me in Debris", False, [], ['Brewing']], - ["Cover Me in Debris", False, [], ['Bottles']], - ["Cover Me in Debris", False, [], ['Bed']], - ["Cover Me in Debris", False, ['8 Netherite Scrap'], ['8 Netherite Scrap']], - ["Cover Me in Debris", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Progressive Armor', - 'Brewing', 'Bottles', 'Bed', '8 Netherite Scrap', '8 Netherite Scrap']], - ]) - - def test_42077(self): - self.run_location_tests([ - ["The End?", False, []], - ["The End?", False, [], ['Progressive Resource Crafting']], - ["The End?", False, [], ['Flint and Steel']], - ["The End?", False, [], ['Progressive Tools']], - ["The End?", False, [], ['Progressive Weapons']], - ["The End?", False, [], ['Progressive Armor', 'Shield']], - ["The End?", False, [], ['Brewing']], - ["The End?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The End?", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42078(self): - self.run_location_tests([ - ["The Parrots and the Bats", True, []], - ]) - - def test_42079(self): - self.run_location_tests([ - ["A Complete Catalogue", False, []], - ["A Complete Catalogue", False, [], ['Progressive Weapons']], - ["A Complete Catalogue", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["A Complete Catalogue", True, ['Progressive Weapons', 'Campfire']], - ["A Complete Catalogue", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42080(self): - self.run_location_tests([ - ["Getting Wood", True, []], - ]) - - def test_42081(self): - self.run_location_tests([ - ["Time to Mine!", True, []], - ]) - - def test_42082(self): - self.run_location_tests([ - ["Hot Topic", False, []], - ["Hot Topic", True, ['Progressive Resource Crafting']], - ]) - - def test_42083(self): - self.run_location_tests([ - ["Bake Bread", True, []], - ]) - - def test_42084(self): - self.run_location_tests([ - ["The Lie", False, []], - ["The Lie", False, [], ['Progressive Resource Crafting']], - ["The Lie", False, [], ['Bucket']], - ["The Lie", False, [], ['Progressive Tools']], - ["The Lie", True, ['Bucket', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42085(self): - self.run_location_tests([ - ["On a Rail", False, []], - ["On a Rail", False, [], ['Progressive Resource Crafting']], - ["On a Rail", False, ['Progressive Tools'], ['Progressive Tools', 'Progressive Tools']], - ["On a Rail", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42086(self): - self.run_location_tests([ - ["Time to Strike!", True, []], - ]) - - def test_42087(self): - self.run_location_tests([ - ["Cow Tipper", True, []], - ]) - - def test_42088(self): - self.run_location_tests([ - ["When Pigs Fly", False, []], - ["When Pigs Fly", False, [], ['Progressive Resource Crafting']], - ["When Pigs Fly", False, [], ['Progressive Tools']], - ["When Pigs Fly", False, [], ['Progressive Weapons']], - ["When Pigs Fly", False, [], ['Progressive Armor', 'Shield']], - ["When Pigs Fly", False, [], ['Fishing Rod']], - ["When Pigs Fly", False, [], ['Saddle']], - ["When Pigs Fly", False, ['Progressive Weapons'], ['Flint and Steel', 'Progressive Weapons', 'Progressive Weapons']], - ["When Pigs Fly", False, ['Progressive Tools', 'Progressive Tools', 'Progressive Weapons'], ['Bucket', 'Progressive Tools', 'Progressive Weapons', 'Progressive Weapons']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Shield', 'Progressive Resource Crafting', 'Progressive Tools', 'Fishing Rod']], - ]) - - def test_42089(self): - self.run_location_tests([ - ["Overkill", False, []], - ["Overkill", False, [], ['Progressive Resource Crafting']], - ["Overkill", False, [], ['Flint and Steel']], - ["Overkill", False, [], ['Progressive Tools']], - ["Overkill", False, [], ['Progressive Weapons']], - ["Overkill", False, [], ['Progressive Armor', 'Shield']], - ["Overkill", False, [], ['Brewing']], - ["Overkill", False, [], ['Bottles']], - ["Overkill", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ]) - - def test_42090(self): - self.run_location_tests([ - ["Librarian", False, []], - ["Librarian", True, ['Enchanting']], - ]) - - def test_42091(self): - self.run_location_tests([ - ["Overpowered", False, []], - ["Overpowered", False, [], ['Progressive Resource Crafting']], - ["Overpowered", False, [], ['Flint and Steel']], - ["Overpowered", False, ['Progressive Tools', 'Progressive Tools', 'Bucket', 'Flint and Steel']], - ["Overpowered", False, [], ['Progressive Weapons']], - ["Overpowered", False, [], ['Progressive Armor', 'Shield']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ]) - - def test_42092(self): - self.run_location_tests([ - ["Wax On", False, []], - ["Wax On", False, [], ["Progressive Tools"]], - ["Wax On", False, [], ["Campfire"]], - ["Wax On", False, ["Progressive Resource Crafting"], ["Progressive Resource Crafting"]], - ["Wax On", True, ["Progressive Tools", "Progressive Resource Crafting", "Progressive Resource Crafting", "Campfire"]], - ]) - - def test_42093(self): - self.run_location_tests([ - ["Wax Off", False, []], - ["Wax Off", False, [], ["Progressive Tools"]], - ["Wax Off", False, [], ["Campfire"]], - ["Wax Off", False, ["Progressive Resource Crafting"], ["Progressive Resource Crafting"]], - ["Wax Off", True, ["Progressive Tools", "Progressive Resource Crafting", "Progressive Resource Crafting", "Campfire"]], - ]) - - def test_42094(self): - self.run_location_tests([ - ["The Cutest Predator", False, []], - ["The Cutest Predator", False, [], ["Progressive Tools"]], - ["The Cutest Predator", False, [], ["Progressive Resource Crafting"]], - ["The Cutest Predator", False, [], ["Bucket"]], - ["The Cutest Predator", True, ["Progressive Tools", "Progressive Resource Crafting", "Bucket"]], - ]) - - def test_42095(self): - self.run_location_tests([ - ["The Healing Power of Friendship", False, []], - ["The Healing Power of Friendship", False, [], ["Progressive Tools"]], - ["The Healing Power of Friendship", False, [], ["Progressive Resource Crafting"]], - ["The Healing Power of Friendship", False, [], ["Bucket"]], - ["The Healing Power of Friendship", True, ["Progressive Tools", "Progressive Resource Crafting", "Bucket"]], - ]) - - def test_42096(self): - self.run_location_tests([ - ["Is It a Bird?", False, []], - ["Is It a Bird?", False, [], ["Progressive Weapons"]], - ["Is It a Bird?", False, [], ["Progressive Tools"]], - ["Is It a Bird?", False, [], ["Progressive Resource Crafting"]], - ["Is It a Bird?", False, [], ["Spyglass"]], - ["Is It a Bird?", True, ["Progressive Weapons", "Progressive Tools", "Progressive Resource Crafting", "Spyglass"]], - ]) - - def test_42097(self): - self.run_location_tests([ - ["Is It a Balloon?", False, []], - ["Is It a Balloon?", False, [], ['Progressive Resource Crafting']], - ["Is It a Balloon?", False, [], ['Flint and Steel']], - ["Is It a Balloon?", False, [], ['Progressive Tools']], - ["Is It a Balloon?", False, [], ['Progressive Weapons']], - ["Is It a Balloon?", False, [], ['Spyglass']], - ["Is It a Balloon?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Is It a Balloon?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Spyglass']], - ["Is It a Balloon?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Spyglass']], - ]) - - def test_42098(self): - self.run_location_tests([ - ["Is It a Plane?", False, []], - ["Is It a Plane?", False, [], ['Progressive Resource Crafting']], - ["Is It a Plane?", False, [], ['Flint and Steel']], - ["Is It a Plane?", False, [], ['Progressive Tools']], - ["Is It a Plane?", False, [], ['Progressive Weapons']], - ["Is It a Plane?", False, [], ['Progressive Armor', 'Shield']], - ["Is It a Plane?", False, [], ['Brewing']], - ["Is It a Plane?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Is It a Plane?", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Is It a Plane?", False, [], ['Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ]) - - def test_42099(self): - self.run_location_tests([ - ["Surge Protector", False, []], - ["Surge Protector", False, [], ['Channeling Book']], - ["Surge Protector", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Surge Protector", False, [], ['Enchanting']], - ["Surge Protector", False, [], ['Progressive Tools']], - ["Surge Protector", False, [], ['Progressive Weapons']], - ["Surge Protector", True, ['Progressive Weapons', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Enchanting', 'Progressive Resource Crafting', 'Progressive Resource Crafting', 'Channeling Book']], - ]) - - def test_42100(self): - self.run_location_tests([ - ["Light as a Rabbit", False, []], - ["Light as a Rabbit", False, [], ["Progressive Weapons"]], - ["Light as a Rabbit", False, [], ["Progressive Tools"]], - ["Light as a Rabbit", False, [], ["Progressive Resource Crafting"]], - ["Light as a Rabbit", False, [], ["Bucket"]], - ["Light as a Rabbit", True, ["Progressive Weapons", "Progressive Tools", "Progressive Resource Crafting", "Bucket"]], - ]) - - def test_42101(self): - self.run_location_tests([ - ["Glow and Behold!", False, []], - ["Glow and Behold!", False, [], ["Progressive Weapons"]], - ["Glow and Behold!", False, [], ["Progressive Resource Crafting", "Campfire"]], - ["Glow and Behold!", True, ["Progressive Weapons", "Progressive Resource Crafting"]], - ["Glow and Behold!", True, ["Progressive Weapons", "Campfire"]], - ]) - - def test_42102(self): - self.run_location_tests([ - ["Whatever Floats Your Goat!", False, []], - ["Whatever Floats Your Goat!", False, [], ["Progressive Weapons"]], - ["Whatever Floats Your Goat!", False, [], ["Progressive Resource Crafting", "Campfire"]], - ["Whatever Floats Your Goat!", True, ["Progressive Weapons", "Progressive Resource Crafting"]], - ["Whatever Floats Your Goat!", True, ["Progressive Weapons", "Campfire"]], - ]) - - # bucket, iron pick - def test_42103(self): - self.run_location_tests([ - ["Caves & Cliffs", False, []], - ["Caves & Cliffs", False, [], ["Bucket"]], - ["Caves & Cliffs", False, [], ["Progressive Tools"]], - ["Caves & Cliffs", False, [], ["Progressive Resource Crafting"]], - ["Caves & Cliffs", True, ["Progressive Resource Crafting", "Progressive Tools", "Progressive Tools", "Bucket"]], - ]) - - # bucket, fishing rod, saddle, combat - def test_42104(self): - self.run_location_tests([ - ["Feels like home", False, []], - ["Feels like home", False, [], ['Progressive Resource Crafting']], - ["Feels like home", False, [], ['Progressive Tools']], - ["Feels like home", False, [], ['Progressive Weapons']], - ["Feels like home", False, [], ['Progressive Armor', 'Shield']], - ["Feels like home", False, [], ['Fishing Rod']], - ["Feels like home", False, [], ['Saddle']], - ["Feels like home", False, [], ['Bucket']], - ["Feels like home", False, [], ['Flint and Steel']], - ["Feels like home", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor', 'Fishing Rod']], - ["Feels like home", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield', 'Fishing Rod']], - ]) - - # iron pick, combat - def test_42105(self): - self.run_location_tests([ - ["Sound of Music", False, []], - ["Sound of Music", False, [], ["Progressive Tools"]], - ["Sound of Music", False, [], ["Progressive Resource Crafting"]], - ["Sound of Music", False, [], ["Progressive Weapons"]], - ["Sound of Music", False, [], ["Progressive Armor", "Shield"]], - ["Sound of Music", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting", "Progressive Weapons", "Progressive Armor"]], - ["Sound of Music", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting", "Progressive Weapons", "Shield"]], - ]) - - # bucket, nether, villager - def test_42106(self): - self.run_location_tests([ - ["Star Trader", False, []], - ["Star Trader", False, [], ["Bucket"]], - ["Star Trader", False, [], ["Flint and Steel"]], - ["Star Trader", False, [], ["Progressive Tools"]], - ["Star Trader", False, [], ["Progressive Resource Crafting"]], - ["Star Trader", False, [], ["Progressive Weapons"]], - ["Star Trader", True, ["Bucket", "Flint and Steel", "Progressive Tools", "Progressive Resource Crafting", "Progressive Weapons"]], - ]) - - # bucket, redstone -> iron pick, pillager outpost -> adventure - def test_42107(self): - self.run_location_tests([ - ["Birthday Song", False, []], - ["Birthday Song", False, [], ["Bucket"]], - ["Birthday Song", False, [], ["Progressive Tools"]], - ["Birthday Song", False, [], ["Progressive Weapons"]], - ["Birthday Song", False, [], ["Progressive Resource Crafting"]], - ["Birthday Song", True, ["Progressive Resource Crafting", "Progressive Tools", "Progressive Tools", "Progressive Weapons", "Bucket"]], - ]) - - # bucket, adventure - def test_42108(self): - self.run_location_tests([ - ["Bukkit Bukkit", False, []], - ["Bukkit Bukkit", False, [], ["Bucket"]], - ["Bukkit Bukkit", False, [], ["Progressive Tools"]], - ["Bukkit Bukkit", False, [], ["Progressive Weapons"]], - ["Bukkit Bukkit", False, [], ["Progressive Resource Crafting"]], - ["Bukkit Bukkit", True, ["Bucket", "Progressive Tools", "Progressive Weapons", "Progressive Resource Crafting"]], - ]) - - # iron pick, adventure - def test_42109(self): - self.run_location_tests([ - ["It Spreads", False, []], - ["It Spreads", False, [], ["Progressive Tools"]], - ["It Spreads", False, [], ["Progressive Weapons"]], - ["It Spreads", False, [], ["Progressive Resource Crafting"]], - ["It Spreads", True, ["Progressive Tools", "Progressive Tools", "Progressive Weapons", "Progressive Resource Crafting"]], - ]) - - # iron pick, adventure - def test_42110(self): - self.run_location_tests([ - ["Sneak 100", False, []], - ["Sneak 100", False, [], ["Progressive Tools"]], - ["Sneak 100", False, [], ["Progressive Weapons"]], - ["Sneak 100", False, [], ["Progressive Resource Crafting"]], - ["Sneak 100", True, ["Progressive Tools", "Progressive Tools", "Progressive Weapons", "Progressive Resource Crafting"]], - ]) - - # adventure, lead - def test_42111(self): - self.run_location_tests([ - ["When the Squad Hops into Town", False, []], - ["When the Squad Hops into Town", False, [], ["Progressive Weapons"]], - ["When the Squad Hops into Town", False, [], ["Campfire", "Progressive Resource Crafting"]], - ["When the Squad Hops into Town", False, [], ["Lead"]], - ["When the Squad Hops into Town", True, ["Progressive Weapons", "Lead", "Campfire"]], - ["When the Squad Hops into Town", True, ["Progressive Weapons", "Lead", "Progressive Resource Crafting"]], - ]) - - # adventure, lead, nether - def test_42112(self): - self.run_location_tests([ - ["With Our Powers Combined!", False, []], - ["With Our Powers Combined!", False, [], ["Lead"]], - ["With Our Powers Combined!", False, [], ["Bucket", "Progressive Tools"]], - ["With Our Powers Combined!", False, [], ["Flint and Steel"]], - ["With Our Powers Combined!", False, [], ["Progressive Weapons"]], - ["With Our Powers Combined!", False, [], ["Progressive Resource Crafting"]], - ["With Our Powers Combined!", True, ["Lead", "Progressive Weapons", "Progressive Resource Crafting", "Flint and Steel", "Progressive Tools", "Bucket"]], - ["With Our Powers Combined!", True, ["Lead", "Progressive Weapons", "Progressive Resource Crafting", "Flint and Steel", "Progressive Tools", "Progressive Tools", "Progressive Tools"]], - ]) - - # pillager outpost -> adventure - def test_42113(self): - self.run_location_tests([ - ["You've Got a Friend in Me", False, []], - ["You've Got a Friend in Me", False, [], ["Progressive Weapons"]], - ["You've Got a Friend in Me", False, [], ["Campfire", "Progressive Resource Crafting"]], - ["You've Got a Friend in Me", True, ["Progressive Weapons", "Campfire"]], - ["You've Got a Friend in Me", True, ["Progressive Weapons", "Progressive Resource Crafting"]], - ]) diff --git a/worlds/minecraft/test/TestDataLoad.py b/worlds/minecraft/test/TestDataLoad.py deleted file mode 100644 index c14eef071bfc..000000000000 --- a/worlds/minecraft/test/TestDataLoad.py +++ /dev/null @@ -1,60 +0,0 @@ -import unittest - -from .. import Constants - -class TestDataLoad(unittest.TestCase): - - def test_item_data(self): - item_info = Constants.item_info - - # All items in sub-tables are in all_items - all_items: set = set(item_info['all_items']) - assert set(item_info['progression_items']) <= all_items - assert set(item_info['useful_items']) <= all_items - assert set(item_info['trap_items']) <= all_items - assert set(item_info['required_pool'].keys()) <= all_items - assert set(item_info['junk_weights'].keys()) <= all_items - - # No overlapping ids (because of bee trap stuff) - all_ids: set = set(Constants.item_name_to_id.values()) - assert len(all_items) == len(all_ids) - - def test_location_data(self): - location_info = Constants.location_info - exclusion_info = Constants.exclusion_info - - # Every location has a region and every region's locations are in all_locations - all_locations: set = set(location_info['all_locations']) - all_locs_2: set = set() - for v in location_info['locations_by_region'].values(): - all_locs_2.update(v) - assert all_locations == all_locs_2 - - # All exclusions are locations - for v in exclusion_info.values(): - assert set(v) <= all_locations - - def test_region_data(self): - region_info = Constants.region_info - - # Every entrance and region in mandatory/default/illegal connections is a real entrance and region - all_regions = set() - all_entrances = set() - for v in region_info['regions']: - assert isinstance(v[0], str) - assert isinstance(v[1], list) - all_regions.add(v[0]) - all_entrances.update(v[1]) - - for v in region_info['mandatory_connections']: - assert v[0] in all_entrances - assert v[1] in all_regions - - for v in region_info['default_connections']: - assert v[0] in all_entrances - assert v[1] in all_regions - - for k, v in region_info['illegal_connections'].items(): - assert k in all_regions - assert set(v) <= all_entrances - diff --git a/worlds/minecraft/test/TestEntrances.py b/worlds/minecraft/test/TestEntrances.py deleted file mode 100644 index 946eb23d6308..000000000000 --- a/worlds/minecraft/test/TestEntrances.py +++ /dev/null @@ -1,97 +0,0 @@ -from . import MCTestBase - - -class TestEntrances(MCTestBase): - options = { - "shuffle_structures": False, - "structure_compasses": False - } - - def testPortals(self): - self.run_entrance_tests([ - ['Nether Portal', False, []], - ['Nether Portal', False, [], ['Flint and Steel']], - ['Nether Portal', False, [], ['Progressive Resource Crafting']], - ['Nether Portal', False, [], ['Progressive Tools']], - ['Nether Portal', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['Nether Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket']], - ['Nether Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools']], - - ['End Portal', False, []], - ['End Portal', False, [], ['Brewing']], - ['End Portal', False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ['End Portal', False, [], ['Flint and Steel']], - ['End Portal', False, [], ['Progressive Resource Crafting']], - ['End Portal', False, [], ['Progressive Tools']], - ['End Portal', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['End Portal', False, [], ['Progressive Weapons']], - ['End Portal', False, [], ['Progressive Armor', 'Shield']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def testStructures(self): - self.run_entrance_tests([ # Structures 1 and 2 should be logically equivalent - ['Overworld Structure 1', False, []], - ['Overworld Structure 1', False, [], ['Progressive Weapons']], - ['Overworld Structure 1', False, [], ['Progressive Resource Crafting', 'Campfire']], - ['Overworld Structure 1', True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ['Overworld Structure 1', True, ['Progressive Weapons', 'Campfire']], - - ['Overworld Structure 2', False, []], - ['Overworld Structure 2', False, [], ['Progressive Weapons']], - ['Overworld Structure 2', False, [], ['Progressive Resource Crafting', 'Campfire']], - ['Overworld Structure 2', True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ['Overworld Structure 2', True, ['Progressive Weapons', 'Campfire']], - - ['Nether Structure 1', False, []], - ['Nether Structure 1', False, [], ['Flint and Steel']], - ['Nether Structure 1', False, [], ['Progressive Resource Crafting']], - ['Nether Structure 1', False, [], ['Progressive Tools']], - ['Nether Structure 1', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['Nether Structure 1', False, [], ['Progressive Weapons']], - ['Nether Structure 1', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', 'Progressive Weapons']], - ['Nether Structure 1', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - - ['Nether Structure 2', False, []], - ['Nether Structure 2', False, [], ['Flint and Steel']], - ['Nether Structure 2', False, [], ['Progressive Resource Crafting']], - ['Nether Structure 2', False, [], ['Progressive Tools']], - ['Nether Structure 2', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['Nether Structure 2', False, [], ['Progressive Weapons']], - ['Nether Structure 2', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', 'Progressive Weapons']], - ['Nether Structure 2', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - - ['The End Structure', False, []], - ['The End Structure', False, [], ['Brewing']], - ['The End Structure', False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ['The End Structure', False, [], ['Flint and Steel']], - ['The End Structure', False, [], ['Progressive Resource Crafting']], - ['The End Structure', False, [], ['Progressive Tools']], - ['The End Structure', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['The End Structure', False, [], ['Progressive Weapons']], - ['The End Structure', False, [], ['Progressive Armor', 'Shield']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - - ]) \ No newline at end of file diff --git a/worlds/minecraft/test/TestOptions.py b/worlds/minecraft/test/TestOptions.py deleted file mode 100644 index c04a07054c9c..000000000000 --- a/worlds/minecraft/test/TestOptions.py +++ /dev/null @@ -1,49 +0,0 @@ -from . import MCTestBase -from ..Constants import region_info -from .. import Options - -from BaseClasses import ItemClassification - -class AdvancementTestBase(MCTestBase): - options = { - "advancement_goal": Options.AdvancementGoal.range_end - } - # beatability test implicit - -class ShardTestBase(MCTestBase): - options = { - "egg_shards_required": Options.EggShardsRequired.range_end, - "egg_shards_available": Options.EggShardsAvailable.range_end - } - - # check that itempool is not overfilled with shards - def test_itempool(self): - assert len(self.multiworld.get_unfilled_locations()) == len(self.multiworld.itempool) - -class CompassTestBase(MCTestBase): - def test_compasses_in_pool(self): - structures = [x[1] for x in region_info["default_connections"]] - itempool_str = {item.name for item in self.multiworld.itempool} - for struct in structures: - assert f"Structure Compass ({struct})" in itempool_str - -class NoBeeTestBase(MCTestBase): - options = { - "bee_traps": Options.BeeTraps.range_start - } - - # With no bees, there are no traps in the pool - def test_bees(self): - for item in self.multiworld.itempool: - assert item.classification != ItemClassification.trap - - -class AllBeeTestBase(MCTestBase): - options = { - "bee_traps": Options.BeeTraps.range_end - } - - # With max bees, there are no filler items, only bee traps - def test_bees(self): - for item in self.multiworld.itempool: - assert item.classification != ItemClassification.filler diff --git a/worlds/minecraft/test/__init__.py b/worlds/minecraft/test/__init__.py deleted file mode 100644 index 3d936fe9cb6b..000000000000 --- a/worlds/minecraft/test/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -from test.bases import TestBase, WorldTestBase -from .. import MinecraftWorld, MinecraftOptions - - -class MCTestBase(WorldTestBase, TestBase): - game = "Minecraft" - player: int = 1 - - def _create_items(self, items, player): - singleton = False - if isinstance(items, str): - items = [items] - singleton = True - ret = [self.multiworld.worlds[player].create_item(item) for item in items] - if singleton: - return ret[0] - return ret - - def _get_items(self, item_pool, all_except): - if all_except and len(all_except) > 0: - items = self.multiworld.itempool[:] - items = [item for item in items if item.name not in all_except] - items.extend(self._create_items(item_pool[0], 1)) - else: - items = self._create_items(item_pool[0], 1) - return self.get_state(items) - - def _get_items_partial(self, item_pool, missing_item): - new_items = item_pool[0].copy() - new_items.remove(missing_item) - items = self._create_items(new_items, 1) - return self.get_state(items) - From 377cdb84b4114de86ef370103641b3f00a8ababa Mon Sep 17 00:00:00 2001 From: digiholic Date: Mon, 16 Jun 2025 05:47:55 -0600 Subject: [PATCH 147/183] MMBN3: Fixes Generation Errors and General UX Smoothing (#5077) Co-authored-by: qwint --- MMBN3Client.py | 9 +- data/lua/connector_mmbn3.lua | 2 +- worlds/mmbn3/Rom.py | 9 +- worlds/mmbn3/__init__.py | 217 ++++++++++++++------------ worlds/mmbn3/data/bn3-ap-patch.bsdiff | Bin 61276 -> 61371 bytes 5 files changed, 128 insertions(+), 109 deletions(-) diff --git a/MMBN3Client.py b/MMBN3Client.py index 4945d49221c4..bdf1427475af 100644 --- a/MMBN3Client.py +++ b/MMBN3Client.py @@ -290,12 +290,9 @@ async def gba_sync_task(ctx: MMBN3Context): async def run_game(romfile): - options = Utils.get_options().get("mmbn3_options", None) - if options is None: - auto_start = True - else: - auto_start = options.get("rom_start", True) - if auto_start: + from worlds.mmbn3 import MMBN3World + auto_start = MMBN3World.settings.rom_start + if auto_start is True: import webbrowser webbrowser.open(romfile) elif os.path.isfile(auto_start): diff --git a/data/lua/connector_mmbn3.lua b/data/lua/connector_mmbn3.lua index fce38a4c1102..c89f428fe511 100644 --- a/data/lua/connector_mmbn3.lua +++ b/data/lua/connector_mmbn3.lua @@ -477,7 +477,7 @@ function main() elseif (curstate == STATE_UNINITIALIZED) then -- If we're uninitialized, attempt to make the connection. if (frame % 120 == 0) then - server:settimeout(2) + server:settimeout(120) local client, timeout = server:accept() if timeout == nil then print('Initial Connection Made') diff --git a/worlds/mmbn3/Rom.py b/worlds/mmbn3/Rom.py index 79da50e534b4..347375c50356 100644 --- a/worlds/mmbn3/Rom.py +++ b/worlds/mmbn3/Rom.py @@ -185,7 +185,7 @@ def add_progression_scripts(self): # As far as I know, this should literally not be possible. # Every script I've looked at has dozens of unused indices, so finding 9 (8 plus one "ending" script) # should be no problem. We re-use these so we don't have to worry about an area getting tons of these - raise AssertionError("Error in generation -- not enough room for progressive undernet in archive "+self.startOffset) + raise AssertionError(f"Error in generation -- not enough room for progressive undernet in archive {self.startOffset} ({hex(self.startOffset)})") for i in range(9): # There are 8 progressive undernet ranks new_script_index = self.unused_indices[i] new_script = ArchiveScript(new_script_index, generate_progressive_undernet(i, self.unused_indices[i+1])) @@ -319,15 +319,16 @@ def get_source_data(cls) -> bytes: def get_base_rom_path(file_name: str = "") -> str: - options = Utils.get_options() if not file_name: - bn3_options = options.get("mmbn3_options", None) + from worlds.mmbn3 import MMBN3World + bn3_options = MMBN3World.settings + if bn3_options is None: file_name = "Mega Man Battle Network 3 - Blue Version (USA).gba" else: file_name = bn3_options["rom_file"] if not os.path.exists(file_name): - file_name = Utils.local_path(file_name) + file_name = Utils.user_path(file_name) return file_name diff --git a/worlds/mmbn3/__init__.py b/worlds/mmbn3/__init__.py index 507ddbc21f7e..80716977d3dd 100644 --- a/worlds/mmbn3/__init__.py +++ b/worlds/mmbn3/__init__.py @@ -1,7 +1,6 @@ import os import settings import typing -import threading from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification, Region, Entrance, \ LocationProgressType @@ -16,7 +15,7 @@ from .Regions import regions, RegionName from .Names.ItemName import ItemName from .Names.LocationName import LocationName -from worlds.generic.Rules import add_item_rule, add_rule +from worlds.generic.Rules import add_item_rule, add_rule, forbid_item class MMBN3Settings(settings.Group): @@ -26,8 +25,15 @@ class RomFile(settings.UserFilePath): description = "MMBN3 ROM File" md5s = [MMBN3DeltaPatch.hash] + class RomStart(str): + """ + Set this to false to never autostart a rom (such as after patching), + true for operating system default program + Alternatively, a path to a program to open the .gba file with + """ + rom_file: RomFile = RomFile(RomFile.copy_to) - rom_start: bool = True + rom_start: RomStart | bool = True class MMBN3Web(WebWorld): @@ -203,134 +209,134 @@ def set_rules(self) -> None: # Set WWW ID requirements def has_www_id(state): return state.has(ItemName.WWW_ID, self.player) - add_rule(self.multiworld.get_location(LocationName.ACDC_1_PMD, self.player), has_www_id) - add_rule(self.multiworld.get_location(LocationName.SciLab_1_WWW_BMD, self.player), has_www_id) - add_rule(self.multiworld.get_location(LocationName.Yoka_1_WWW_BMD, self.player), has_www_id) - add_rule(self.multiworld.get_location(LocationName.Undernet_1_WWW_BMD, self.player), has_www_id) + add_rule(self.get_location(LocationName.ACDC_1_PMD), has_www_id) + add_rule(self.get_location(LocationName.SciLab_1_WWW_BMD), has_www_id) + add_rule(self.get_location(LocationName.Yoka_1_WWW_BMD), has_www_id) + add_rule(self.get_location(LocationName.Undernet_1_WWW_BMD), has_www_id) # Set Press Program requirements def has_press(state): return state.has(ItemName.Press, self.player) - add_rule(self.multiworld.get_location(LocationName.Yoka_1_PMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Yoka_2_Upper_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Beach_2_East_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Hades_South_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Secret_3_BugFrag_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Secret_3_Island_BMD, self.player), has_press) + add_rule(self.get_location(LocationName.Yoka_1_PMD), has_press) + add_rule(self.get_location(LocationName.Yoka_2_Upper_BMD), has_press) + add_rule(self.get_location(LocationName.Beach_2_East_BMD), has_press) + add_rule(self.get_location(LocationName.Hades_South_BMD), has_press) + add_rule(self.get_location(LocationName.Secret_3_BugFrag_BMD), has_press) + add_rule(self.get_location(LocationName.Secret_3_Island_BMD), has_press) # Set Purple Mystery Data Unlocker access def can_unlock(state): return state.can_reach_region(RegionName.SciLab_Overworld, self.player) or \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) or \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) or \ state.has(ItemName.Unlocker, self.player, 8) # There are 8 PMDs that aren't in one of the above areas - add_rule(self.multiworld.get_location(LocationName.ACDC_1_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Yoka_1_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Beach_1_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Undernet_7_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Mayls_HP_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.SciLab_Dads_Computer_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Zoo_Panda_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Beach_DNN_Security_Panel_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Beach_DNN_Main_Console_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Tamakos_HP_PMD, self.player), can_unlock) + add_rule(self.get_location(LocationName.ACDC_1_PMD), can_unlock) + add_rule(self.get_location(LocationName.Yoka_1_PMD), can_unlock) + add_rule(self.get_location(LocationName.Beach_1_PMD), can_unlock) + add_rule(self.get_location(LocationName.Undernet_7_PMD), can_unlock) + add_rule(self.get_location(LocationName.Mayls_HP_PMD), can_unlock) + add_rule(self.get_location(LocationName.SciLab_Dads_Computer_PMD), can_unlock) + add_rule(self.get_location(LocationName.Zoo_Panda_PMD), can_unlock) + add_rule(self.get_location(LocationName.Beach_DNN_Security_Panel_PMD), can_unlock) + add_rule(self.get_location(LocationName.Beach_DNN_Main_Console_PMD), can_unlock) + add_rule(self.get_location(LocationName.Tamakos_HP_PMD), can_unlock) # Set Job additional area access - self.multiworld.get_location(LocationName.Please_deliver_this, self.player).access_rule = \ + self.get_location(LocationName.Please_deliver_this).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) - self.multiworld.get_location(LocationName.My_Navi_is_sick, self.player).access_rule =\ + self.get_location(LocationName.My_Navi_is_sick).access_rule =\ lambda state: \ state.has(ItemName.Recov30_star, self.player) - self.multiworld.get_location(LocationName.Help_me_with_my_son, self.player).access_rule =\ + self.get_location(LocationName.Help_me_with_my_son).access_rule =\ lambda state:\ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Transmission_error, self.player).access_rule = \ + self.get_location(LocationName.Transmission_error).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Chip_Prices, self.player).access_rule = \ + self.get_location(LocationName.Chip_Prices).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) and \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Im_broke, self.player).access_rule = \ + self.get_location(LocationName.Im_broke).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Rare_chips_for_cheap, self.player).access_rule = \ + self.get_location(LocationName.Rare_chips_for_cheap).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) - self.multiworld.get_location(LocationName.Be_my_boyfriend, self.player).access_rule =\ + self.get_location(LocationName.Be_my_boyfriend).access_rule =\ lambda state: \ state.can_reach_region(RegionName.Beach_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Will_you_deliver, self.player).access_rule=\ + self.get_location(LocationName.Will_you_deliver).access_rule=\ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Somebody_please_help, self.player).access_rule = \ + self.get_location(LocationName.Somebody_please_help).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) - self.multiworld.get_location(LocationName.Looking_for_condor, self.player).access_rule = \ + self.get_location(LocationName.Looking_for_condor).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) - self.multiworld.get_location(LocationName.Help_with_rehab, self.player).access_rule = \ + self.get_location(LocationName.Help_with_rehab).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Help_with_rehab_bonus, self.player).access_rule = \ + self.get_location(LocationName.Help_with_rehab_bonus).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Old_Master, self.player).access_rule = \ + self.get_location(LocationName.Old_Master).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Catching_gang_members, self.player).access_rule = \ + self.get_location(LocationName.Catching_gang_members).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) and \ state.has(ItemName.Press, self.player) - self.multiworld.get_location(LocationName.Please_adopt_a_virus, self.player).access_rule = \ + self.get_location(LocationName.Please_adopt_a_virus).access_rule = \ lambda state: \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Legendary_Tomes, self.player).access_rule = \ + self.get_location(LocationName.Legendary_Tomes).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.Undernet, self.player) and \ state.can_reach_region(RegionName.Deep_Undernet, self.player) and \ state.has_all({ItemName.Press, ItemName.Magnum1_A}, self.player) - self.multiworld.get_location(LocationName.Legendary_Tomes_Treasure, self.player).access_rule = \ + self.get_location(LocationName.Legendary_Tomes_Treasure).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_location(LocationName.Legendary_Tomes, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_First_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_First_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Second_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Second_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Third_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Third_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Fourth_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Fourth_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Completion, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Completion).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Finding_the_blue_Navi, self.player).access_rule = \ + self.get_location(LocationName.Finding_the_blue_Navi).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Undernet, self.player) - self.multiworld.get_location(LocationName.Give_your_support, self.player).access_rule = \ + self.get_location(LocationName.Give_your_support).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Stamp_collecting, self.player).access_rule = \ + self.get_location(LocationName.Stamp_collecting).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) and \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) and \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) and \ state.can_reach_region(RegionName.Beach_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Help_with_a_will, self.player).access_rule = \ + self.get_location(LocationName.Help_with_a_will).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) and \ @@ -340,100 +346,115 @@ def can_unlock(state): return state.can_reach_region(RegionName.SciLab_Overworld state.can_reach_region(RegionName.Undernet, self.player) # Set Trade quests - self.multiworld.get_location(LocationName.ACDC_SonicWav_W_Trade, self.player).access_rule =\ + self.get_location(LocationName.ACDC_SonicWav_W_Trade).access_rule =\ lambda state: state.has(ItemName.SonicWav_W, self.player) - self.multiworld.get_location(LocationName.ACDC_Bubbler_C_Trade, self.player).access_rule =\ + self.get_location(LocationName.ACDC_Bubbler_C_Trade).access_rule =\ lambda state: state.has(ItemName.Bubbler_C, self.player) - self.multiworld.get_location(LocationName.ACDC_Recov120_S_Trade, self.player).access_rule =\ + self.get_location(LocationName.ACDC_Recov120_S_Trade).access_rule =\ lambda state: state.has(ItemName.Recov120_S, self.player) - self.multiworld.get_location(LocationName.SciLab_Shake1_S_Trade, self.player).access_rule =\ + self.get_location(LocationName.SciLab_Shake1_S_Trade).access_rule =\ lambda state: state.has(ItemName.Shake1_S, self.player) - self.multiworld.get_location(LocationName.Yoka_FireSwrd_P_Trade, self.player).access_rule =\ + self.get_location(LocationName.Yoka_FireSwrd_P_Trade).access_rule =\ lambda state: state.has(ItemName.FireSwrd_P, self.player) - self.multiworld.get_location(LocationName.Hospital_DynaWav_V_Trade, self.player).access_rule =\ + self.get_location(LocationName.Hospital_DynaWav_V_Trade).access_rule =\ lambda state: state.has(ItemName.DynaWave_V, self.player) - self.multiworld.get_location(LocationName.Beach_DNN_WideSwrd_C_Trade, self.player).access_rule =\ + self.get_location(LocationName.Beach_DNN_WideSwrd_C_Trade).access_rule =\ lambda state: state.has(ItemName.WideSwrd_C, self.player) - self.multiworld.get_location(LocationName.Beach_DNN_HoleMetr_H_Trade, self.player).access_rule =\ + self.get_location(LocationName.Beach_DNN_HoleMetr_H_Trade).access_rule =\ lambda state: state.has(ItemName.HoleMetr_H, self.player) - self.multiworld.get_location(LocationName.Beach_DNN_Shadow_J_Trade, self.player).access_rule =\ + self.get_location(LocationName.Beach_DNN_Shadow_J_Trade).access_rule =\ lambda state: state.has(ItemName.Shadow_J, self.player) - self.multiworld.get_location(LocationName.Hades_GrabBack_K_Trade, self.player).access_rule =\ + self.get_location(LocationName.Hades_GrabBack_K_Trade).access_rule =\ lambda state: state.has(ItemName.GrabBack_K, self.player) # Set Number Traders # The first 8 are considered cheap enough to grind for in ACDC. Protip: Try grinding in the tank - self.multiworld.get_location(LocationName.Numberman_Code_09, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_09).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_10, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_10).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_11, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_11).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_12, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_12).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_13, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_13).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_14, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_14).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_15, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_15).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_16, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_16).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_17, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_17).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_18, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_18).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_19, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_19).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_20, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_20).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_21, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_21).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_22, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_22).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_23, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_23).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_24, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_24).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_25, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_25).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_26, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_26).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_27, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_27).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_28, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_28).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_29, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_29).access_rule =\ lambda state: self.explore_score(state) > 10 - self.multiworld.get_location(LocationName.Numberman_Code_30, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_30).access_rule =\ lambda state: self.explore_score(state) > 10 - self.multiworld.get_location(LocationName.Numberman_Code_31, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_31).access_rule =\ lambda state: self.explore_score(state) > 10 #miscellaneous locations with extra requirements - add_rule(self.multiworld.get_location(LocationName.Comedian, self.player), + add_rule(self.get_location(LocationName.Comedian), lambda state: state.has(ItemName.Humor, self.player)) - add_rule(self.multiworld.get_location(LocationName.Villain, self.player), + add_rule(self.get_location(LocationName.Villain), lambda state: state.has(ItemName.BlckMnd, self.player)) - def not_undernet(item): return item.code != item_table[ItemName.Progressive_Undernet_Rank].code or item.player != self.player - self.multiworld.get_location(LocationName.WWW_1_Central_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_1_East_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_2_East_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_2_Northwest_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_3_East_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_3_North_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_4_Northwest_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_4_Central_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_Wall_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_Control_Room_1_Screen, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_Wilys_Desk, self.player).item_rule = not_undernet + forbid_item(self.get_location(LocationName.WWW_1_Central_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_1_East_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_2_East_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_2_Northwest_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_3_East_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_3_North_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_4_Northwest_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_4_Central_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_Wall_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_Control_Room_1_Screen), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_Wilys_Desk), + ItemName.Progressive_Undernet_Rank, self.player) + + # I have no fuckin clue why this specific location shits the bed on a progressive undernet rank. + # If you ever figure it out I will buy you a pizza. + forbid_item(self.get_location(LocationName.Chocolate_Shop_07), + ItemName.Progressive_Undernet_Rank, self.player) # place "Victory" at "Final Boss" and set collection as win condition - self.multiworld.get_location(LocationName.Alpha_Defeated, self.player) \ + self.get_location(LocationName.Alpha_Defeated) \ .place_locked_item(self.create_event(ItemName.Victory)) self.multiworld.completion_condition[self.player] = \ lambda state: state.has(ItemName.Victory, self.player) diff --git a/worlds/mmbn3/data/bn3-ap-patch.bsdiff b/worlds/mmbn3/data/bn3-ap-patch.bsdiff index d55fecad80641b372bc7752600f335d6961f9185..43ace91bcd02b4d90be9cbcf1f4bba079bbbde52 100644 GIT binary patch literal 61371 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 literal 61276 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�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 From 92466595897a95c5ec984e4c530d0833fb8c8a72 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Mon, 16 Jun 2025 13:49:30 +0200 Subject: [PATCH 148/183] Make sure ladx removes the same copy of the starting item from the itempool that it's placing (#5110) --- worlds/ladx/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/worlds/ladx/__init__.py b/worlds/ladx/__init__.py index 78ae1ce8ad20..b1b033e01d23 100644 --- a/worlds/ladx/__init__.py +++ b/worlds/ladx/__init__.py @@ -335,7 +335,9 @@ def opens_new_regions(item): start_item = next((item for item in start_items if opens_new_regions(item)), None) if start_item: - itempool.remove(start_item) + # Make sure we're removing the same copy of the item that we're placing + # (.remove checks __eq__, which could be a different copy, so we find the first index and use .pop) + start_item = itempool.pop(itempool.index(start_item)) start_loc.place_locked_item(start_item) else: logging.getLogger("Link's Awakening Logger").warning(f"No {self.options.tarins_gift.current_option_name} available for Tarin's Gift.") From e0a63e0290270f117d1575896c0e9ab61eb05cae Mon Sep 17 00:00:00 2001 From: Natalie Weizenbaum Date: Mon, 16 Jun 2025 05:02:06 -0700 Subject: [PATCH 149/183] DS3: Link to the Appropriate .NET Runtime for Proton (#5093) --- worlds/dark_souls_3/docs/setup_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/dark_souls_3/docs/setup_en.md b/worlds/dark_souls_3/docs/setup_en.md index 4c3a6b2a7d60..4b11c8a498d9 100644 --- a/worlds/dark_souls_3/docs/setup_en.md +++ b/worlds/dark_souls_3/docs/setup_en.md @@ -73,7 +73,7 @@ things to keep in mind: * To run the game itself, just run `launchmod_darksouls3.bat` under Proton. -[.NET Runtime]: https://dotnet.microsoft.com/en-us/download/dotnet/8.0 +[.NET Runtime]: https://dotnet.microsoft.com/en-us/download/dotnet/6.0 [WINE]: https://www.winehq.org/ ## Troubleshooting From dda5a05cbb37fec368f811242c137817f85525a0 Mon Sep 17 00:00:00 2001 From: BlastSlimey <89539656+BlastSlimey@users.noreply.github.com> Date: Mon, 16 Jun 2025 14:07:27 +0200 Subject: [PATCH 150/183] shapez: Change Links to Shapesanity Cheat Sheet (#5047) --- worlds/shapez/docs/de_shapez.md | 2 +- worlds/shapez/docs/en_shapez.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/shapez/docs/de_shapez.md b/worlds/shapez/docs/de_shapez.md index 5ef8f13f7963..4a26ea821ce0 100644 --- a/worlds/shapez/docs/de_shapez.md +++ b/worlds/shapez/docs/de_shapez.md @@ -57,7 +57,7 @@ Ein Pop-Up erscheint, das das/die erhaltene(n) Item(s) und eventuell weitere Inf Hier ist ein Spicker für die Englischarbeit (bloß nicht dem Lehrer zeigen): -![image](https://raw.githubusercontent.com/BlastSlimey/Archipelago/refs/heads/main/worlds/shapez/docs/shapesanity_full.png) +![image](/static/generated/docs/shapez/shapesanity_full.png) ## Kann ich auch weitere Mods neben dem AP Client installieren? diff --git a/worlds/shapez/docs/en_shapez.md b/worlds/shapez/docs/en_shapez.md index 4af398c5f17e..dc41d73d7e13 100644 --- a/worlds/shapez/docs/en_shapez.md +++ b/worlds/shapez/docs/en_shapez.md @@ -56,7 +56,7 @@ A pop-up will show, which item(s) were received, with additional information on Here's a cheat sheet: -![image](https://raw.githubusercontent.com/BlastSlimey/Archipelago/refs/heads/main/worlds/shapez/docs/shapesanity_full.png) +![image](/static/generated/docs/shapez/shapesanity_full.png) ## Can I use other mods alongside the AP client? From 5c710ad032eedb6bd79ea2436490423c5a41aee0 Mon Sep 17 00:00:00 2001 From: Ixrec Date: Mon, 16 Jun 2025 13:36:12 +0100 Subject: [PATCH 151/183] Docs: Rework the "Events" Section of `world api.md` (#5012) Co-authored-by: Scipio Wright Co-authored-by: qwint Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- docs/world api.md | 86 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 27 deletions(-) diff --git a/docs/world api.md b/docs/world api.md index 013b02cc2076..833d379bb238 100644 --- a/docs/world api.md +++ b/docs/world api.md @@ -258,31 +258,6 @@ another flag like "progression", it means "an especially useful progression item * `progression_skip_balancing`: the combination of `progression` and `skip_balancing`, i.e., a progression item that will not be moved around by progression balancing; used, e.g., for currency or tokens, to not flood early spheres -### Events - -An Event is a special combination of a Location and an Item, with both having an `id` of `None`. These can be used to -track certain logic interactions, with the Event Item being required for access in other locations or regions, but not -being "real". Since the item and location have no ID, they get dropped at the end of generation and so the server is -never made aware of them and these locations can never be checked, nor can the items be received during play. -They may also be used for making the spoiler log look nicer, i.e. by having a `"Victory"` Event Item, that -is required to finish the game. This makes it very clear when the player finishes, rather than only seeing their last -relevant Item. Events function just like any other Location, and can still have their own access rules, etc. -By convention, the Event "pair" of Location and Item typically have the same name, though this is not a requirement. -They must not exist in the `name_to_id` lookups, as they have no ID. - -The most common way to create an Event pair is to create and place the Item on the Location as soon as it's created: - -```python -from worlds.AutoWorld import World -from BaseClasses import ItemClassification -from .subclasses import MyGameLocation, MyGameItem - - -class MyGameWorld(World): - victory_loc = MyGameLocation(self.player, "Victory", None) - victory_loc.place_locked_item(MyGameItem("Victory", ItemClassification.progression, None, self.player)) -``` - ### Regions Regions are logical containers that typically hold locations that share some common access rules. If location logic is @@ -339,6 +314,63 @@ avoiding the need for indirect conditions at the expense of performance. An item rule is a function that returns `True` or `False` for a `Location` based on a single item. It can be used to reject the placement of an item there. +### Events (or "generation-only items/locations") + +An event item or location is one that only exists during multiworld generation; the server is never made aware of them. +Event locations can never be checked by the player, and event items cannot be received during play. + +Events are used to represent in-game actions (that aren't regular Archipelago locations) when either: + +* We want to show in the spoiler log when the player is expected to perform the in-game action. +* It's the cleanest way to represent how that in-game action impacts logic. + +Typical examples include completing the goal, defeating a boss, or flipping a switch that affects multiple areas. + +To be precise: the term "event" on its own refers to the special combination of an "event item" placed on an "event +location". Event items and locations are created the same way as normal items and locations, except that they have an +`id` of `None`, and an event item must be placed on an event location +(and vice versa). Finally, although events are often described as "fake" items and locations, it's important to +understand that they are perfectly real during generation. + +The most common way to create an event is to create the event item and the event location, then immediately call +`Location.place_locked_item()`: + +```python +victory_loc = MyGameLocation(self.player, "Defeat the Final Boss", None, final_boss_arena_region) +victory_loc.place_locked_item(MyGameItem("Victory", ItemClassification.progression, None, self.player)) +self.multiworld.completion_condition[self.player] = lambda state: state.has("Victory", self.player) +set_rule(victory_loc, lambda state: state.has("Boss Defeating Sword", self.player)) +``` + +Requiring an event to finish the game will make the spoiler log display an additional +`Defeat the Final Boss: Victory` line when the player is expected to finish, rather than only showing their last +relevant item. But events aren't just about the spoiler log; a more substantial example of using events to structure +your logic might be: + +```python +water_loc = MyGameLocation(self.player, "Water Level Switch", None, pump_station_region) +water_loc.place_locked_item(MyGameItem("Lowered Water Level", ItemClassification.progression, None, self.player)) +pump_station_region.locations.append(water_loc) +set_rule(water_loc, lambda state: state.has("Double Jump", self.player)) # the switch is really high up +... +basement_loc = MyGameLocation(self.player, "Flooded House - Basement Chest", None, flooded_house_region) +flooded_house_region.locations += [upstairs_loc, ground_floor_loc, basement_loc] +... +set_rule(basement_loc, lambda state: state.has("Lowered Water Level", self.player)) +``` + +This creates a "Lowered Water Level" event and a regular location whose access rule depends on that +event being reachable. If you made several more locations the same way, this would ensure all of those locations can +only become reachable when the event location is reachable (i.e. when the water level can be lowered), without +copy-pasting the event location's access rule and then repeatedly re-evaluating it. Also, the spoiler log will show +`Water Level Switch: Lowered Water Level` when the player is expected to do this. + +To be clear, this example could also be modeled with a second Region (perhaps "Un-Flooded House"). Or you could modify +the game so flipping that switch checks a regular AP location in addition to lowering the water level. +Events are never required, but it may be cleaner to use an event if e.g. flipping that switch affects the logic in +dozens of half-flooded areas that would all otherwise need additional Regions, and you don't want it to be a regular +location. It depends on the game. + ## Implementation ### Your World @@ -488,8 +520,8 @@ In addition, the following methods can be implemented and are called in this ord If it's hard to separate, this can be done during `generate_early` or `create_items` as well. * `create_items(self)` called to place player's items into the MultiWorld's itempool. By the end of this step all regions, locations and - items have to be in the MultiWorld's regions and itempool. You cannot add or remove items, locations, or regions - after this step. Locations cannot be moved to different regions after this step. + items have to be in the MultiWorld's regions and itempool. You cannot add or remove items, locations, or regions after + this step. Locations cannot be moved to different regions after this step. This includes event items and locations. * `set_rules(self)` called to set access and item rules on locations and entrances. * `connect_entrances(self)` From 47bf6d724b20bb8455f360cc2ddecf82bfcf445c Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Mon, 16 Jun 2025 10:56:47 -0400 Subject: [PATCH 152/183] Minecraft Removal Cleanup (#5118) --- WebHostLib/static/assets/minecraftTracker.js | 49 -------------------- worlds/ladx/LADXR/patches/marin.txt | 2 - 2 files changed, 51 deletions(-) delete mode 100644 WebHostLib/static/assets/minecraftTracker.js diff --git a/WebHostLib/static/assets/minecraftTracker.js b/WebHostLib/static/assets/minecraftTracker.js deleted file mode 100644 index a698214b8dd6..000000000000 --- a/WebHostLib/static/assets/minecraftTracker.js +++ /dev/null @@ -1,49 +0,0 @@ -window.addEventListener('load', () => { - // Reload tracker every 15 seconds - const url = window.location; - setInterval(() => { - const ajax = new XMLHttpRequest(); - ajax.onreadystatechange = () => { - if (ajax.readyState !== 4) { return; } - - // Create a fake DOM using the returned HTML - const domParser = new DOMParser(); - const fakeDOM = domParser.parseFromString(ajax.responseText, 'text/html'); - - // Update item tracker - document.getElementById('inventory-table').innerHTML = fakeDOM.getElementById('inventory-table').innerHTML; - // Update only counters in the location-table - let counters = document.getElementsByClassName('counter'); - const fakeCounters = fakeDOM.getElementsByClassName('counter'); - for (let i = 0; i < counters.length; i++) { - counters[i].innerHTML = fakeCounters[i].innerHTML; - } - }; - ajax.open('GET', url); - ajax.send(); - }, 15000) - - // Collapsible advancement sections - const categories = document.getElementsByClassName("location-category"); - for (let i = 0; i < categories.length; i++) { - let hide_id = categories[i].id.split('-')[0]; - if (hide_id == 'Total') { - continue; - } - categories[i].addEventListener('click', function() { - // Toggle the advancement list - document.getElementById(hide_id).classList.toggle("hide"); - // Change text of the header - const tab_header = document.getElementById(hide_id+'-header').children[0]; - const orig_text = tab_header.innerHTML; - let new_text; - if (orig_text.includes("▼")) { - new_text = orig_text.replace("▼", "▲"); - } - else { - new_text = orig_text.replace("▲", "▼"); - } - tab_header.innerHTML = new_text; - }); - } -}); diff --git a/worlds/ladx/LADXR/patches/marin.txt b/worlds/ladx/LADXR/patches/marin.txt index 3634014afe23..a179e35fc6fb 100644 --- a/worlds/ladx/LADXR/patches/marin.txt +++ b/worlds/ladx/LADXR/patches/marin.txt @@ -220,7 +220,6 @@ To this day I still don't know if we inconvenienced the Mad Batter or not. Oh, hi ##### People forgot I was playable in Hyrule Warriors Join our Discord. Or else. -Also try Minecraft! I see you're finally awake... OwO This is Todd Howard, and today I'm pleased to announce... The Elder Scrolls V: Skyrim for the Nintendo Game Boy Color! @@ -281,7 +280,6 @@ Try Mario & Luigi Superstar Saga! Try MegaMan Battle Network 3! Try Meritous! Try The Messenger! -Try Minecraft! Try Muse Dash! Try Noita! Try Ocarina of Time! From 6f244c4661a7aee59f452f61a51e61adb3f856d5 Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Mon, 16 Jun 2025 12:54:08 -0400 Subject: [PATCH 153/183] Docs: Update Plando Guide and Make it More User Friendly (#4858) * Make plando guide more user friendly. * Apply suggestions from code review Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Further updates for review. * Clear search box when filtering by type. * Forget previous commit name - more code review updates to doc. * Move link to yaml tutorial. * Replace STS example with Pokemon RB. * Use non-key item examples in RB. * Rooby's code review updates. * Update worlds/generic/docs/plando_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/generic/docs/plando_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Address some more feedback. * Make Factorio example more accurate. * Exempt's code review updates (round 4) * Exempt's code review updates (round 4 + 1) * Update worlds/generic/docs/plando_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/generic/docs/plando_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/generic/docs/plando_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/generic/docs/plando_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/generic/docs/plando_en.md | 250 +++++++++++++++++++------------ 1 file changed, 158 insertions(+), 92 deletions(-) diff --git a/worlds/generic/docs/plando_en.md b/worlds/generic/docs/plando_en.md index b383239d8d11..69f59c739eda 100644 --- a/worlds/generic/docs/plando_en.md +++ b/worlds/generic/docs/plando_en.md @@ -27,73 +27,176 @@ requires: plando: bosses, items, texts, connections ``` +For a basic understanding of YAML files, refer to +[YAML Formatting](/tutorial/Archipelago/advanced_settings/en#yaml-formatting) +in Advanced Settings. + ## Item Plando -Item plando allows a player to place an item in a specific location or specific locations, or place multiple items into a -list of specific locations both in their own game or in another player's game. - -* The options for item plando are `from_pool`, `world`, `percentage`, `force`, `count`, and either `item` and - `location`, or `items` and `locations`. - * `from_pool` determines if the item should be taken *from* the item pool or *added* to it. This can be true or - false and defaults to true if omitted. - * `world` is the target world to place the item in. - * It gets ignored if only one world is generated. - * Can be a number, name, true, false, null, or a list. False is the default. - * If a number is used, it targets that slot or player number in the multiworld. - * If a name is used, it will target the world with that player name. - * If set to true, it will be any player's world besides your own. - * If set to false, it will target your own world. - * If set to null, it will target a random world in the multiworld. - * If a list of names is used, it will target the games with the player names specified. - * `force` determines whether the generator will fail if the item can't be placed in the location. Can be true, false, - or silent. Silent is the default. - * If set to true, the item must be placed and the generator will throw an error if it is unable to do so. - * If set to false, the generator will log a warning if the placement can't be done but will still generate. - * If set to silent and the placement fails, it will be ignored entirely. - * `percentage` is the percentage chance for the relevant block to trigger. This can be any value from 0 to 100 and - if omitted will default to 100. - * Single Placement is when you use a plando block to place a single item at a single location. - * `item` is the item you would like to place and `location` is the location to place it. - * Multi Placement uses a plando block to place multiple items in multiple locations until either list is exhausted. - * `items` defines the items to use, each with a number for the amount. Using `true` instead of a number uses however many of that item are in your item pool. - * `locations` is a list of possible locations those items can be placed in. - * Some special location group names can be specified: - * `early_locations` will add all sphere 1 locations (locations logically reachable only with your starting inventory) - * `non_early_locations` will add all locations beyond sphere 1 (locations that require finding at least one item before they become logically reachable) - * Using the multi placement method, placements are picked randomly. - - * `count` can be used to set the maximum number of items placed from the block. The default is 1 if using `item` and False if using `items` - * If a number is used, it will try to place this number of items. - * If set to false, it will try to place as many items from the block as it can. - * If `min` and `max` are defined, it will try to place a number of items between these two numbers at random. +Item Plando allows a player to place an item in a specific location or locations, or place multiple items into a list +of specific locations in their own game and/or in another player's game. + +To add item plando to your player yaml, you add them under the `plando_items` block. You should start with `item` if you +want to do Single Placement, or `items` if you want to do Multi Placement. A list of items can still be defined under +`item` but only one of them will be chosen at random to be used. + +After you define `item/items`, you would define `location` or `locations`, depending on if you want to fill one +location or many. Note that both `location` and `locations` are optional. A list of locations can still be defined under +`location` but only one of them will be chosen at random to be used. + +You may do any combination of `item/items` and `location/locations` in a plando block, but the block only places items +in locations **until the shorter of the two lists is used up.** + +Once you are satisfied with your first block, you may continue to define ones under the same `plando_items` parent. +Each block can have several different options to tailor it the way you like. + +* The `items` section defines the items to use. Each item name can be followed by a colon and a value. + * A numerical value indicates the amount of that item. + * A `true` value uses all copies of that item that are in your item pool. + +* The `item` section defines a list of items to use, from which one will be chosen at random. Each item name can be + followed by a colon and a value. The value indicates the weight of that item being chosen. + +* The `locations` section defines possible locations those items can be placed in. Two special location groups exist: + * `early_locations` will add all sphere 1 locations (locations logically reachable only with your starting + inventory). + * `non_early_locations` will add all locations beyond sphere 1 (locations that require finding at least one item + before they become logically reachable). + +* `from_pool` determines if the item should be taken *from* the item pool or *created* from scratch. + * `false`: Create a new item with the same name (the world will determine its properties e.g. classification). + * `true`: Take the existing item, if it exists, from the item pool. If it does not exist, one will be created from + scratch. **(Default)** + +* `world` is the target world to place the item in. It gets ignored if only one world is generated. + * **A number:** Use this slot or player number in the multiworld. + * **A name:** Use the world with that player name. + * **A list of names:** Use the worlds with the player names specified. + * `true`: Locations will be in any player's world besides your own. + * `false`: Locations will be in your own world. **(Default)** + * `null`: Locations will be in a random world in the multiworld. + +* `force` determines whether the generator will fail if the plando block cannot be fulfilled. + * `true`: The generator will throw an error if it is unable to place an item. + * `false`: The generator will log a warning if it is unable to place an item, but it will still generate. + * `silent`: If the placement fails, it will be ignored entirely. **(Default)** + +* `percentage` is the percentage chance for the block to trigger. This can be any integer from 0 to 100. + **(Default: 100)** + +* `count` sets the number of items placed from the list. + * **Default: 1 if using `item` or `location`, and `false` otherwise.** + * **A number:** It will place this number of items. + * `false`: It will place as many items from the list as it can. + * **If `min` is defined,** it will place at least `min` many items (can be combined with `max`). + * **If `max` is defined,** it will place at most `max` many items (can be combined with `min`). ### Available Items and Locations -A list of all available items and locations can be found in the [website's datapackage](/datapackage). The items and locations will be in the `"item_name_to_id"` and `"location_name_to_id"` sections of the relevant game. You do not need the quotes but the name must be entered in the same as it appears on that page and is case-sensitive. +A list of all available items and locations can be found in the [website's datapackage](/datapackage). The items and +locations will be in the `"item_name_to_id"` and `"location_name_to_id"` sections of the relevant game. Names are +case-sensitive. You can also use item groups and location groups that are defined in the datapackage. -### Examples +## Item Plando Examples +```yaml + plando_items: + # Example block - Pokémon Red and Blue + - items: + Potion: 3 + locations: + - "Route 1 - Free Sample Man" + - "Mt Moon 1F - West Item" + - "Mt Moon 1F - South Item" +``` +This block will lock 3 Potion items on the Route 1 Pokémart employee and 2 Mt Moon items. Note these are all +Potions in the vanilla game. The world value has not been specified, so these locations must be in this player's own +world by default. + +```yaml + plando_items: + # Example block - A Link to the Past + - items: + Progressive Sword: 4 + world: + - BobsWitness + - BobsRogueLegacy + count: + min: 1 + max: 4 +``` +This block will attempt to place a random number, between 1 and 4, of Progressive Swords into any locations within the +game slots named "BobsWitness" and "BobsRogueLegacy." ```yaml plando_items: - # example block 1 - Timespinner + # Example block - Secret of Evermore + - items: + Levitate: 1 + Revealer: 1 + Energize: 1 + locations: + - Master Sword Pedestal + - Desert Discard + world: true + count: 2 +``` +This block will choose 2 from the Levitate, Revealer, and Energize items at random and attempt to put them into the +locations named "Master Sword Pedestal" and "Desert Discard". Because the world value is `true`, these locations +must be in other players' worlds. + +```yaml + plando_items: + # Example block - Timespinner - item: Empire Orb: 1 - Radiant Orb: 1 + Radiant Orb: 3 location: Starter Chest 1 - from_pool: true + from_pool: false world: true percentage: 50 - - # example block 2 - Ocarina of Time +``` +This block will place a single item, either the Empire Orb or Radiant Orb, on the location "Starter Chest 1". There is +a 25% chance it is Empire Orb, and 75% chance it is Radiant Orb (1 to 3 odds). The world value is `true`, so this +location must be in another player's world. Because the from_pool value is `false`, a copy of these items is added to +these locations, while the originals remain in the item pool to be shuffled. Unlike the previous examples, which will +always trigger, this block only has a 50% chance to trigger. + +```yaml + plando_items: + # Example block - Factorio + - items: + progressive-electric-energy-distribution: 2 + electric-energy-accumulators: 1 + progressive-turret: 2 + locations: + - AP-1-001 + - AP-1-002 + - AP-1-003 + - AP-1-004 + percentage: 80 + force: true + from_pool: true + world: false +``` +This block lists 5 items but only 4 locations, so it will place all but 1 of the items randomly among the locations +chosen here. This block has an 80% chance of occurring. Because force is `true`, the Generator will fail if it cannot +place one of the selected items (not including the fifth item). From_pool and World have been set to their default +values here, but they can be omitted and have the same result: items will be removed from the pool, and the locations +are in this player's own world. + +**NOTE:** Factorio's locations are dynamically generated, so the locations listed above may not exist in your game, +they are here for demonstration only. + +```yaml + plando_items: + # Example block - Ocarina of Time - items: - Kokiri Sword: 1 Biggoron Sword: 1 Bow: 1 Magic Meter: 1 Progressive Strength Upgrade: 3 Progressive Hookshot: 2 locations: - - Deku Tree Slingshot Chest - Dodongos Cavern Bomb Bag Chest - Jabu Jabus Belly Boomerang Chest - Bottom of the Well Lens of Truth Chest @@ -102,53 +205,16 @@ A list of all available items and locations can be found in the [website's datap - Water Temple Longshot Chest - Shadow Temple Hover Boots Chest - Spirit Temple Silver Gauntlets Chest - world: false - - # example block 3 - Factorio - - items: - progressive-electric-energy-distribution: 2 - electric-energy-accumulators: 1 - progressive-turret: 2 - locations: - - military - - gun-turret - - logistic-science-pack - - steel-processing - percentage: 80 - force: true - - # example block 4 - Secret of Evermore - - items: - Levitate: 1 - Revealer: 1 - Energize: 1 - locations: - - Master Sword Pedestal - - Boss Relic 1 - world: true - count: 2 - - # example block 5 - A Link to the Past - - items: - Progressive Sword: 4 - world: - - BobsSlaytheSpire - - BobsRogueLegacy - count: - min: 1 - max: 4 + from_pool: false + + - item: Kokiri Sword + location: Deku Tree Slingshot Chest + from_pool: false ``` -1. This block has a 50% chance to occur, and if it does, it will place either the Empire Orb or Radiant Orb on another -player's Starter Chest 1 and removes the chosen item from the item pool. -2. This block will always trigger and will place the player's swords, bow, magic meter, strength upgrades, and hookshots -in their own dungeon major item chests. -3. This block has an 80% chance of occurring, and when it does, it will place all but 1 of the items randomly among the -four locations chosen here. -4. This block will always trigger and will attempt to place a random 2 of Levitate, Revealer and Energize into -other players' Master Sword Pedestals or Boss Relic 1 locations. -5. This block will always trigger and will attempt to place a random number, between 1 and 4, of progressive swords -into any locations within the game slots named BobsSlaytheSpire and BobsRogueLegacy. - +The first block will place the player's Biggoron Sword, Bow, Magic Meter, strength upgrades, and hookshots in the +dungeon major item chests. Because the from_pool value is `false`, a copy of these items is added to these locations, +while the originals remain in the item pool to be shuffled. The second block will place the Kokiri Sword in the Deku +Tree Slingshot Chest, again not from the pool. ## Boss Plando From 211456242e0e018bd3356ecca5325862fb654f2d Mon Sep 17 00:00:00 2001 From: Silvris <58583688+Silvris@users.noreply.github.com> Date: Mon, 16 Jun 2025 12:00:47 -0500 Subject: [PATCH 154/183] KDL3: update to gifting protocol 3 and update settings usage (#4814) * gift version 3 * update settings usage * that really has just been broken this entire time * remove unnecessary print * Update client.py * fix random flavor handling * fix incorrect sender/receiver --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/kdl3/client.py | 45 +++---- worlds/kdl3/gifting.py | 275 +++++++++++++++++++++-------------------- worlds/kdl3/options.py | 8 +- worlds/kdl3/rom.py | 8 +- 4 files changed, 168 insertions(+), 168 deletions(-) diff --git a/worlds/kdl3/client.py b/worlds/kdl3/client.py index 97bf68cbd99a..78a43239b4d6 100644 --- a/worlds/kdl3/client.py +++ b/worlds/kdl3/client.py @@ -90,7 +90,7 @@ def cmd_gift(self: "SNIClientCommandProcessor") -> None: async_start(update_object(self.ctx, f"Giftboxes;{self.ctx.team}", { f"{self.ctx.slot}": { - "IsOpen": handler.gifting, + "is_open": handler.gifting, **kdl3_gifting_options } })) @@ -175,11 +175,11 @@ async def pop_gift(self, ctx: "SNIContext") -> None: key, gift = ctx.stored_data[self.giftbox_key].popitem() await pop_object(ctx, self.giftbox_key, key) # first, special cases - traits = [trait["Trait"] for trait in gift["Traits"]] + traits = [trait["trait"] for trait in gift["traits"]] if "Candy" in traits or "Invincible" in traits: # apply invincibility candy self.item_queue.append(0x43) - elif "Tomato" in traits or "tomato" in gift["ItemName"].lower(): + elif "Tomato" in traits or "tomato" in gift["item_name"].lower(): # apply maxim tomato # only want tomatos here, no other vegetable is that good self.item_queue.append(0x42) @@ -187,7 +187,7 @@ async def pop_gift(self, ctx: "SNIContext") -> None: # Apply 1-Up self.item_queue.append(0x41) elif "Currency" in traits or "Star" in traits: - value = gift["ItemValue"] + value = gift.get("item_value", 1) if value >= 50000: self.item_queue.append(0x46) elif value >= 30000: @@ -210,8 +210,8 @@ async def pop_gift(self, ctx: "SNIContext") -> None: # check if it's tasty if any(x in traits for x in ["Consumable", "Food", "Drink", "Heal", "Health"]): # it's tasty!, use quality to decide how much to heal - quality = max((trait["Quality"] for trait in gift["Traits"] - if trait["Trait"] in ["Consumable", "Food", "Drink", "Heal", "Health"])) + quality = max((trait.get("quality", 1.0) for trait in gift["traits"] + if trait["trait"] in ["Consumable", "Food", "Drink", "Heal", "Health"])) quality = min(10, quality * 2) else: # it's not really edible, but he'll eat it anyway @@ -236,23 +236,23 @@ async def pick_gift_recipient(self, ctx: "SNIContext", gift: int) -> None: for slot, info in ctx.stored_data[self.motherbox_key].items(): if int(slot) == ctx.slot and len(ctx.stored_data[self.motherbox_key]) > 1: continue - desire = len(set(info["DesiredTraits"]).intersection([trait["Trait"] for trait in gift_base["Traits"]])) + desire = len(set(info["desired_traits"]).intersection([trait["trait"] for trait in gift_base["traits"]])) if desire > most_applicable: most_applicable = desire most_applicable_slot = int(slot) - elif most_applicable_slot != ctx.slot and most_applicable == -1 and info["AcceptsAnyGift"]: + elif most_applicable_slot == ctx.slot and most_applicable == -1 and info["accepts_any_gift"]: # only send to ourselves if no one else will take it most_applicable_slot = int(slot) # print(most_applicable, most_applicable_slot) item_uuid = uuid.uuid4().hex item = { **gift_base, - "ID": item_uuid, - "Sender": ctx.player_names[ctx.slot], - "Receiver": ctx.player_names[most_applicable_slot], - "SenderTeam": ctx.team, - "ReceiverTeam": ctx.team, # for the moment - "IsRefund": False + "id": item_uuid, + "sender_slot": ctx.slot, + "receiver_slot": most_applicable_slot, + "sender_team": ctx.team, + "receiver_team": ctx.team, # for the moment + "is_refund": False } # print(item) await update_object(ctx, f"Giftbox;{ctx.team};{most_applicable_slot}", { @@ -276,8 +276,9 @@ async def game_watcher(self, ctx: "SNIContext") -> None: if not self.initialize_gifting: self.giftbox_key = f"Giftbox;{ctx.team};{ctx.slot}" self.motherbox_key = f"Giftboxes;{ctx.team}" - enable_gifting = await snes_read(ctx, KDL3_GIFTING_FLAG, 0x01) - await initialize_giftboxes(ctx, self.giftbox_key, self.motherbox_key, bool(enable_gifting[0])) + enable_gifting = await snes_read(ctx, KDL3_GIFTING_FLAG, 0x02) + await initialize_giftboxes(ctx, self.giftbox_key, self.motherbox_key, + bool(int.from_bytes(enable_gifting, "little"))) self.initialize_gifting = True # can't check debug anymore, without going and copying the value. might be important later. if not self.levels: @@ -350,19 +351,19 @@ async def game_watcher(self, ctx: "SNIContext") -> None: self.item_queue.append(item_idx | 0x80) # handle gifts here - gifting_status = await snes_read(ctx, KDL3_GIFTING_FLAG, 0x01) - if hasattr(ctx, "gifting") and ctx.gifting: - if gifting_status[0]: + gifting_status = int.from_bytes(await snes_read(ctx, KDL3_GIFTING_FLAG, 0x02), "little") + if hasattr(self, "gifting") and self.gifting: + if gifting_status: gift = await snes_read(ctx, KDL3_GIFTING_SEND, 0x01) if gift[0]: # we have a gift to send await self.pick_gift_recipient(ctx, gift[0]) snes_buffered_write(ctx, KDL3_GIFTING_SEND, bytes([0x00])) else: - snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x01])) + snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x01, 0x00])) else: - if gifting_status[0]: - snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x00])) + if gifting_status: + snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x00, 0x00])) await snes_flush_writes(ctx) diff --git a/worlds/kdl3/gifting.py b/worlds/kdl3/gifting.py index e1626091000e..de1551487404 100644 --- a/worlds/kdl3/gifting.py +++ b/worlds/kdl3/gifting.py @@ -37,157 +37,158 @@ async def initialize_giftboxes(ctx: "SNIContext", giftbox_key: str, motherbox_ke ctx.set_notify(motherbox_key, giftbox_key) await update_object(ctx, f"Giftboxes;{ctx.team}", {f"{ctx.slot}": { - "IsOpen": is_open, + "is_open": is_open, **kdl3_gifting_options }}) + await update_object(ctx, f"Giftbox;{ctx.team};{ctx.slot}", {}) ctx.client_handler.gifting = is_open kdl3_gifting_options = { - "AcceptsAnyGift": True, - "DesiredTraits": [ + "accepts_any_gift": True, + "desired_traits": [ "Consumable", "Food", "Drink", "Candy", "Tomato", "Invincible", "Life", "Heal", "Health", "Trap", "Goo", "Gel", "Slow", "Slowness", "Eject", "Removal" ], - "MinimumGiftVersion": 2, + "minimum_gift_version": 3, } kdl3_gifts = { 1: { - "ItemName": "1-Up", - "Amount": 1, - "ItemValue": 400000, - "Traits": [ + "item_name": "1-Up", + "amount": 1, + "item_value": 400000, + "traits": [ { - "Trait": "Consumable", - "Quality": 1, - "Duration": 1, + "trait": "Consumable", + "quality": 1, + "duration": 1, }, { - "Trait": "Life", - "Quality": 1, - "Duration": 1 + "trait": "Life", + "quality": 1, + "duration": 1 } ] }, 2: { - "ItemName": "Maxim Tomato", - "Amount": 1, - "ItemValue": 500000, - "Traits": [ + "item_name": "Maxim Tomato", + "amount": 1, + "item_value": 500000, + "traits": [ { - "Trait": "Consumable", - "Quality": 5, - "Duration": 1, + "trait": "Consumable", + "quality": 5, + "duration": 1, }, { - "Trait": "Heal", - "Quality": 5, - "Duration": 1, + "trait": "Heal", + "quality": 5, + "duration": 1, }, { - "Trait": "Food", - "Quality": 5, - "Duration": 1, + "trait": "Food", + "quality": 5, + "duration": 1, }, { - "Trait": "Tomato", - "Quality": 5, - "Duration": 1, + "trait": "Tomato", + "quality": 5, + "duration": 1, }, { - "Trait": "Vegetable", - "Quality": 5, - "Duration": 1, + "trait": "Vegetable", + "quality": 5, + "duration": 1, } ] }, 3: { - "ItemName": "Energy Drink", - "Amount": 1, - "ItemValue": 100000, - "Traits": [ + "item_name": "Energy Drink", + "amount": 1, + "item_value": 100000, + "traits": [ { - "Trait": "Consumable", - "Quality": 1, - "Duration": 1, + "trait": "Consumable", + "quality": 1, + "duration": 1, }, { - "Trait": "Heal", - "Quality": 1, - "Duration": 1, + "trait": "Heal", + "quality": 1, + "duration": 1, }, { - "Trait": "Drink", - "Quality": 1, - "Duration": 1, + "trait": "Drink", + "quality": 1, + "duration": 1, }, ] }, 5: { - "ItemName": "Small Star Piece", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Small Star Piece", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Currency", - "Quality": 1, - "Duration": 1, + "trait": "Currency", + "quality": 1, + "duration": 1, }, { - "Trait": "Money", - "Quality": 1, - "Duration": 1, + "trait": "Money", + "quality": 1, + "duration": 1, }, { - "Trait": "Star", - "Quality": 1, - "Duration": 1 + "trait": "Star", + "quality": 1, + "duration": 1 } ] }, 6: { - "ItemName": "Medium Star Piece", - "Amount": 1, - "ItemValue": 30000, - "Traits": [ + "item_name": "Medium Star Piece", + "amount": 1, + "item_value": 30000, + "traits": [ { - "Trait": "Currency", - "Quality": 3, - "Duration": 1, + "trait": "Currency", + "quality": 3, + "duration": 1, }, { - "Trait": "Money", - "Quality": 3, - "Duration": 1, + "trait": "Money", + "quality": 3, + "duration": 1, }, { - "Trait": "Star", - "Quality": 3, - "Duration": 1 + "trait": "Star", + "quality": 3, + "duration": 1 } ] }, 7: { - "ItemName": "Large Star Piece", - "Amount": 1, - "ItemValue": 50000, - "Traits": [ + "item_name": "Large Star Piece", + "amount": 1, + "item_value": 50000, + "traits": [ { - "Trait": "Currency", - "Quality": 5, - "Duration": 1, + "trait": "Currency", + "quality": 5, + "duration": 1, }, { - "Trait": "Money", - "Quality": 5, - "Duration": 1, + "trait": "Money", + "quality": 5, + "duration": 1, }, { - "Trait": "Star", - "Quality": 5, - "Duration": 1 + "trait": "Star", + "quality": 5, + "duration": 1 } ] }, @@ -195,90 +196,90 @@ async def initialize_giftboxes(ctx: "SNIContext", giftbox_key: str, motherbox_ke kdl3_trap_gifts = { 0: { - "ItemName": "Gooey Bag", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Gooey Bag", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Goo", - "Quality": 1, - "Duration": 1, + "trait": "Goo", + "quality": 1, + "duration": 1, }, { - "Trait": "Gel", - "Quality": 1, - "Duration": 1 + "trait": "Gel", + "quality": 1, + "duration": 1 } ] }, 1: { - "ItemName": "Slowness", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Slowness", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Slow", - "Quality": 1, - "Duration": 1, + "trait": "Slow", + "quality": 1, + "duration": 1, }, { - "Trait": "Slowness", - "Quality": 1, - "Duration": 1 + "trait": "Slowness", + "quality": 1, + "duration": 1 } ] }, 2: { - "ItemName": "Eject Ability", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Eject Ability", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Eject", - "Quality": 1, - "Duration": 1, + "trait": "Eject", + "quality": 1, + "duration": 1, }, { - "Trait": "Removal", - "Quality": 1, - "Duration": 1 + "trait": "Removal", + "quality": 1, + "duration": 1 } ] }, 3: { - "ItemName": "Bad Meal", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Bad Meal", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Damage", - "Quality": 1, - "Duration": 1, + "trait": "Damage", + "quality": 1, + "duration": 1, }, { - "Trait": "Food", - "Quality": 1, - "Duration": 1 + "trait": "Food", + "quality": 1, + "duration": 1 } ] }, diff --git a/worlds/kdl3/options.py b/worlds/kdl3/options.py index b9163794ad19..77095bfec68b 100644 --- a/worlds/kdl3/options.py +++ b/worlds/kdl3/options.py @@ -289,7 +289,7 @@ class KirbyFlavorPreset(Choice): option_lime = 12 option_lavender = 13 option_miku = 14 - option_custom = 15 + option_custom = -1 default = 0 @classmethod @@ -297,7 +297,7 @@ def from_text(cls, text: str) -> Choice: text = text.lower() if text == "random": choice_list = list(cls.name_lookup) - choice_list.remove(14) + choice_list.remove(-1) return cls(random.choice(choice_list)) return super().from_text(text) @@ -347,7 +347,7 @@ class GooeyFlavorPreset(Choice): option_orange = 11 option_lime = 12 option_lavender = 13 - option_custom = 14 + option_custom = -1 default = 0 @classmethod @@ -355,7 +355,7 @@ def from_text(cls, text: str) -> Choice: text = text.lower() if text == "random": choice_list = list(cls.name_lookup) - choice_list.remove(14) + choice_list.remove(-1) return cls(random.choice(choice_list)) return super().from_text(text) diff --git a/worlds/kdl3/rom.py b/worlds/kdl3/rom.py index 741ea0083027..5f986bc4be0c 100644 --- a/worlds/kdl3/rom.py +++ b/worlds/kdl3/rom.py @@ -7,7 +7,6 @@ import os import struct -import settings from worlds.Files import APProcedurePatch, APTokenMixin, APTokenTypes, APPatchExtension from .aesthetics import get_palette_bytes, kirby_target_palettes, get_kirby_palette, gooey_target_palettes, \ get_gooey_palette @@ -475,8 +474,7 @@ def patch_rom(world: "KDL3World", patch: KDL3ProcedurePatch) -> None: patch.write_token(APTokenTypes.WRITE, 0x3D016, world.options.ow_boss_requirement.value.to_bytes(2, "little")) patch.write_token(APTokenTypes.WRITE, 0x3D018, world.options.consumables.value.to_bytes(2, "little")) patch.write_token(APTokenTypes.WRITE, 0x3D01A, world.options.starsanity.value.to_bytes(2, "little")) - patch.write_token(APTokenTypes.WRITE, 0x3D01C, world.options.gifting.value.to_bytes(2, "little") - if world.multiworld.players > 1 else bytes([0, 0])) + patch.write_token(APTokenTypes.WRITE, 0x3D01C, world.options.gifting.value.to_bytes(2, "little")) patch.write_token(APTokenTypes.WRITE, 0x3D01E, world.options.strict_bosses.value.to_bytes(2, "little")) # don't write gifting for solo game, since there's no one to send anything to @@ -594,9 +592,9 @@ def get_base_rom_bytes() -> bytes: def get_base_rom_path(file_name: str = "") -> str: - options: settings.Settings = settings.get_settings() + from . import KDL3World if not file_name: - file_name = options["kdl3_options"]["rom_file"] + file_name = KDL3World.settings.rom_file if not os.path.exists(file_name): file_name = Utils.user_path(file_name) return file_name From 4eefd9c3ceff76d35091895308f3097c16c0c6ca Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 19 Jun 2025 06:39:26 -0500 Subject: [PATCH 155/183] Kivy: swap from the tab carousel to navigation bar (#4930) * implement tabs as NavigationBar * update the underline bar with the screen manager * remove some unneeded kv * remove the underline in favor of a full tab highlight * fix insert transitions * use on_release instead of on_press * minor cleanup * add remove_client_tab and add a caller to the NavigationBar for back compat * unused imports * Update kvui.py --------- Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> --- data/client.kv | 17 ++++- kvui.py | 176 +++++++++++++++++++++++++++---------------------- 2 files changed, 113 insertions(+), 80 deletions(-) diff --git a/data/client.kv b/data/client.kv index 53000dfe41f2..ed63df135d24 100644 --- a/data/client.kv +++ b/data/client.kv @@ -24,9 +24,20 @@ : ripple_color: app.theme_cls.primaryColor ripple_duration_in_fast: 0.2 -: - ripple_color: app.theme_cls.primaryColor - ripple_duration_in_fast: 0.2 +: + on_release: app.screens.switch_screens(self) + + MDNavigationItemLabel: + text: root.text + theme_text_color: "Custom" + text_color_active: self.theme_cls.primaryColor + text_color_normal: 1, 1, 1, 1 + # indicator is on icon only for some reason + canvas.before: + Color: + rgba: self.theme_cls.secondaryContainerColor if root.active else self.theme_cls.transparentColor + Rectangle: + size: root.size : adaptive_height: True theme_font_size: "Custom" diff --git a/kvui.py b/kvui.py index 172b7e554394..2f45831200bc 100644 --- a/kvui.py +++ b/kvui.py @@ -60,7 +60,10 @@ from kivymd.uix.gridlayout import MDGridLayout from kivymd.uix.floatlayout import MDFloatLayout from kivymd.uix.boxlayout import MDBoxLayout -from kivymd.uix.tab.tab import MDTabsSecondary, MDTabsItem, MDTabsItemText, MDTabsCarousel +from kivymd.uix.navigationbar import MDNavigationBar, MDNavigationItem +from kivymd.uix.screen import MDScreen +from kivymd.uix.screenmanager import MDScreenManager + from kivymd.uix.menu import MDDropdownMenu from kivymd.uix.menu.menu import MDDropdownTextItem from kivymd.uix.dropdownitem import MDDropDownItem, MDDropDownItemText @@ -726,6 +729,10 @@ def __init__(self, title, text, error=False, **kwargs): self.height += max(0, label.height - 18) +class MDNavigationItemBase(MDNavigationItem): + text = StringProperty(None) + + class ButtonsPrompt(MDDialog): def __init__(self, title: str, text: str, response: typing.Callable[[str], None], *prompts: str, **kwargs) -> None: @@ -766,58 +773,34 @@ def on_release(button: MDButton, *args) -> None: ) -class ClientTabs(MDTabsSecondary): - carousel: MDTabsCarousel - lock_swiping = True - - def __init__(self, *args, **kwargs): - self.carousel = MDTabsCarousel(lock_swiping=True, anim_move_duration=0.2) - super().__init__(*args, MDDivider(size_hint_y=None, height=dp(1)), self.carousel, **kwargs) - self.size_hint_y = 1 - - def _check_panel_height(self, *args): - self.ids.tab_scroll.height = dp(38) - - def update_indicator( - self, x: float = 0.0, w: float = 0.0, instance: MDTabsItem = None - ) -> None: - def update_indicator(*args): - indicator_pos = (0, 0) - indicator_size = (0, 0) - - item_text_object = self._get_tab_item_text_icon_object() - - if item_text_object: - indicator_pos = ( - instance.x + dp(12), - self.indicator.pos[1] - if not self._tabs_carousel - else self._tabs_carousel.height, - ) - indicator_size = ( - instance.width - dp(24), - self.indicator_height, - ) +class MDScreenManagerBase(MDScreenManager): + current_tab: MDNavigationItemBase + local_screen_names: list[str] - Animation( - pos=indicator_pos, - size=indicator_size, - d=0 if not self.indicator_anim else self.indicator_duration, - t=self.indicator_transition, - ).start(self.indicator) + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.local_screen_names = [] - if not instance: - self.indicator.pos = (x, self.indicator.pos[1]) - self.indicator.size = (w, self.indicator_height) + def add_widget(self, widget: Widget, *args, **kwargs) -> None: + super().add_widget(widget, *args, **kwargs) + if "index" in kwargs: + self.local_screen_names.insert(kwargs["index"], widget.name) else: - Clock.schedule_once(update_indicator) + self.local_screen_names.append(widget.name) + + def switch_screens(self, new_tab: MDNavigationItemBase) -> None: + """ + Called whenever the user clicks a tab to switch to a different screen. - def remove_tab(self, tab, content=None): - if content is None: - content = tab.content - self.ids.container.remove_widget(tab) - self.carousel.remove_widget(content) - self.on_size(self, self.size) + :param new_tab: The new screen to switch to's tab. + """ + name = new_tab.text + if self.local_screen_names.index(name) > self.local_screen_names.index(self.current_screen.name): + self.transition.direction = "left" + else: + self.transition.direction = "right" + self.current = name + self.current_tab = new_tab class CommandButton(MDButton, MDTooltip): @@ -845,6 +828,9 @@ class GameManager(ThemedApp): main_area_container: MDGridLayout """ subclasses can add more columns beside the tabs """ + tabs: MDNavigationBar + screens: MDScreenManagerBase + def __init__(self, ctx: context_type): self.title = self.base_title self.ctx = ctx @@ -874,7 +860,7 @@ def intercept_say(text): @property def tab_count(self): if hasattr(self, "tabs"): - return max(1, len(self.tabs.tab_list)) + return max(1, len(self.tabs.children)) return 1 def on_start(self): @@ -914,30 +900,30 @@ def connect_bar_validate(sender): self.grid.add_widget(self.progressbar) # middle part - self.tabs = ClientTabs(pos_hint={"center_x": 0.5, "center_y": 0.5}) - self.tabs.add_widget(MDTabsItem(MDTabsItemText(text="All" if len(self.logging_pairs) > 1 else "Archipelago"))) - self.log_panels["All"] = self.tabs.default_tab_content = UILog(*(logging.getLogger(logger_name) - for logger_name, name in - self.logging_pairs)) - self.tabs.carousel.add_widget(self.tabs.default_tab_content) + self.screens = MDScreenManagerBase(pos_hint={"center_x": 0.5}) + self.tabs = MDNavigationBar(orientation="horizontal", size_hint_y=None, height=dp(40), set_bars_color=True) + # bind the method to the bar for back compatibility + self.tabs.remove_tab = self.remove_client_tab + self.screens.current_tab = self.add_client_tab( + "All" if len(self.logging_pairs) > 1 else "Archipelago", + UILog(*(logging.getLogger(logger_name) for logger_name, name in self.logging_pairs)), + ) + self.log_panels["All"] = self.screens.current_tab.content + self.screens.current_tab.active = True for logger_name, display_name in self.logging_pairs: bridge_logger = logging.getLogger(logger_name) self.log_panels[display_name] = UILog(bridge_logger) if len(self.logging_pairs) > 1: - panel = MDTabsItem(MDTabsItemText(text=display_name)) - panel.content = self.log_panels[display_name] - # show Archipelago tab if other logging is present - self.tabs.carousel.add_widget(panel.content) - self.tabs.add_widget(panel) + self.add_client_tab(display_name, self.log_panels[display_name]) - hint_panel = self.add_client_tab("Hints", HintLayout()) self.hint_log = HintLog(self.json_to_kivy_parser) + hint_panel = self.add_client_tab("Hints", HintLayout(self.hint_log)) self.log_panels["Hints"] = hint_panel.content - hint_panel.content.add_widget(self.hint_log) - self.main_area_container = MDGridLayout(size_hint_y=1, rows=1) + self.main_area_container = MDGridLayout(size_hint_y=1, cols=1) self.main_area_container.add_widget(self.tabs) + self.main_area_container.add_widget(self.screens) self.grid.add_widget(self.main_area_container) @@ -974,25 +960,61 @@ def connect_bar_validate(sender): return self.container - def add_client_tab(self, title: str, content: Widget, index: int = -1) -> Widget: - """Adds a new tab to the client window with a given title, and provides a given Widget as its content. - Returns the new tab widget, with the provided content being placed on the tab as content.""" - new_tab = MDTabsItem(MDTabsItemText(text=title)) + def add_client_tab(self, title: str, content: Widget, index: int = -1) -> MDNavigationItemBase: + """ + Adds a new tab to the client window with a given title, and provides a given Widget as its content. + Returns the new tab widget, with the provided content being placed on the tab as content. + + :param title: The title of the tab. + :param content: The Widget to be added as content for this tab's new MDScreen. Will also be added to the + returned tab as tab.content. + :param index: The index to insert the tab at. Defaults to -1, meaning the tab will be appended to the end. + + :return: The new tab. + """ + if self.tabs.children: + self.tabs.add_widget(MDDivider(orientation="vertical")) + new_tab = MDNavigationItemBase(text=title) new_tab.content = content - if -1 < index <= len(self.tabs.carousel.slides): - new_tab.bind(on_release=self.tabs.set_active_item) - new_tab._tabs = self.tabs - self.tabs.ids.container.add_widget(new_tab, index=index) - self.tabs.carousel.add_widget(new_tab.content, index=len(self.tabs.carousel.slides) - index) + new_screen = MDScreen(name=title) + new_screen.add_widget(content) + if -1 < index <= len(self.tabs.children): + remapped_index = len(self.tabs.children) - index + self.tabs.add_widget(new_tab, index=remapped_index) + self.screens.add_widget(new_screen, index=index) else: self.tabs.add_widget(new_tab) - self.tabs.carousel.add_widget(new_tab.content) + self.screens.add_widget(new_screen) return new_tab + def remove_client_tab(self, tab: MDNavigationItemBase) -> None: + """ + Called to remove a tab and its screen. + + :param tab: The tab to remove. + """ + tab_index = self.tabs.children.index(tab) + # if the tab is currently active we need to swap before removing it + if tab == self.screens.current_tab: + if not tab_index: + # account for the divider + swap_index = tab_index + 2 + else: + swap_index = tab_index - 2 + self.tabs.children[swap_index].on_release() + # self.screens.switch_screens(self.tabs.children[swap_index]) + # get the divider to the left if we can + if not tab_index: + divider_index = tab_index + 1 + else: + divider_index = tab_index - 1 + self.tabs.remove_widget(self.tabs.children[divider_index]) + self.tabs.remove_widget(tab) + self.screens.remove_widget(self.screens.get_screen(tab.text)) + def update_texts(self, dt): - for slide in self.tabs.carousel.slides: - if hasattr(slide, "fix_heights"): - slide.fix_heights() # TODO: remove this when Kivy fixes this upstream + if hasattr(self.screens.current_tab.content, "fix_heights"): + getattr(self.screens.current_tab.content, "fix_heights")() if self.ctx.server: self.title = self.base_title + " " + Utils.__version__ + \ f" | Connected to: {self.ctx.server_address} " \ From c2666bacd791e70a555e7d7fe1a35818b54c0905 Mon Sep 17 00:00:00 2001 From: Katelyn Gigante Date: Fri, 20 Jun 2025 02:05:52 +1000 Subject: [PATCH 156/183] core: Don't attempt to write to the inside of an OSX App Bundle (#4380) * core: Frozen OSX should also use Home Directory * Use Application Support instead of homedir * Suggested changes --- Utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Utils.py b/Utils.py index f20389055008..84d3a33dc76f 100644 --- a/Utils.py +++ b/Utils.py @@ -166,6 +166,10 @@ def home_path(*path: str) -> str: os.symlink(home_path.cached_path, legacy_home_path) else: os.makedirs(home_path.cached_path, 0o700, exist_ok=True) + elif sys.platform == 'darwin': + import platformdirs + home_path.cached_path = platformdirs.user_data_dir("Archipelago", False) + os.makedirs(home_path.cached_path, 0o700, exist_ok=True) else: # not implemented home_path.cached_path = local_path() # this will generate the same exceptions we got previously @@ -177,7 +181,7 @@ def user_path(*path: str) -> str: """Returns either local_path or home_path based on write permissions.""" if hasattr(user_path, "cached_path"): pass - elif os.access(local_path(), os.W_OK): + elif os.access(local_path(), os.W_OK) and not (is_macos and is_frozen()): user_path.cached_path = local_path() else: user_path.cached_path = home_path() From e0ae3359f130e85f8c3a0d22dcdd315635d7cb5c Mon Sep 17 00:00:00 2001 From: palex00 <32203971+palex00@users.noreply.github.com> Date: Fri, 20 Jun 2025 20:55:49 +0200 Subject: [PATCH 157/183] =?UTF-8?q?Pok=C3=A9mon=20RB:=20Use=20new=20link?= =?UTF-8?q?=20for=20a=20new=20tracker=20(#5122)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update setup_en.md * Update setup_es.md --- worlds/pokemon_rb/docs/setup_en.md | 4 ++-- worlds/pokemon_rb/docs/setup_es.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/worlds/pokemon_rb/docs/setup_en.md b/worlds/pokemon_rb/docs/setup_en.md index 773fb14da9e7..7e05c8c782d0 100644 --- a/worlds/pokemon_rb/docs/setup_en.md +++ b/worlds/pokemon_rb/docs/setup_en.md @@ -15,7 +15,7 @@ As we are using BizHawk, this guide is only applicable to Windows and Linux syst ## Optional Software -- [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/coveleski/rb_tracker/releases/latest), for use with [PopTracker](https://github.com/black-sliver/PopTracker/releases) +- [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/palex00/rb_tracker/releases/latest), for use with [PopTracker](https://github.com/black-sliver/PopTracker/releases) ## Configuring BizHawk @@ -109,7 +109,7 @@ server uses password, type in the bottom textfield `/connect
    : [p Pokémon Red and Blue has a fully functional map tracker that supports auto-tracking. -1. Download [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/coveleski/rb_tracker/releases/latest) and [PopTracker](https://github.com/black-sliver/PopTracker/releases). +1. Download [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/palex00/rb_tracker/releases/latest) and [PopTracker](https://github.com/black-sliver/PopTracker/releases). 2. Open PopTracker, and load the Pokémon Red and Blue pack. 3. Click on the "AP" symbol at the top. 4. Enter the AP address, slot name and password. diff --git a/worlds/pokemon_rb/docs/setup_es.md b/worlds/pokemon_rb/docs/setup_es.md index 67024c5b52ec..5c735bfe992a 100644 --- a/worlds/pokemon_rb/docs/setup_es.md +++ b/worlds/pokemon_rb/docs/setup_es.md @@ -16,7 +16,7 @@ Al usar BizHawk, esta guía solo es aplicable en los sistemas de Windows y Linux ## Software Opcional -- [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/coveleski/rb_tracker/releases/latest), para usar con [PopTracker](https://github.com/black-sliver/PopTracker/releases) +- [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/palex00/rb_tracker/releases/latest), para usar con [PopTracker](https://github.com/black-sliver/PopTracker/releases) ## Configurando BizHawk @@ -114,7 +114,7 @@ presiona enter (si el servidor usa contraseña, escribe en el campo de texto inf Pokémon Red and Blue tiene un mapa completamente funcional que soporta seguimiento automático. -1. Descarga el [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/coveleski/rb_tracker/releases/latest) y [PopTracker](https://github.com/black-sliver/PopTracker/releases). +1. Descarga el [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/palex00/rb_tracker/releases/latest) y [PopTracker](https://github.com/black-sliver/PopTracker/releases). 2. Abre PopTracker, y carga el pack de Pokémon Red and Blue. 3. Haz clic en el símbolo "AP" en la parte superior. 4. Ingresa la dirección de AP, nombre del slot y contraseña (si es que hay). From c34e29c7124a1b66d9e68f0a747780cd8254d61a Mon Sep 17 00:00:00 2001 From: James White Date: Fri, 20 Jun 2025 21:52:54 +0100 Subject: [PATCH 158/183] Pokemon RB: Client: Send bounce messages with current map ID (#5121) --- worlds/pokemon_rb/client.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/worlds/pokemon_rb/client.py b/worlds/pokemon_rb/client.py index 97ca126476fd..2eb56f539840 100644 --- a/worlds/pokemon_rb/client.py +++ b/worlds/pokemon_rb/client.py @@ -23,6 +23,7 @@ "DexSanityFlag": (0x1A71, 19), "GameStatus": (0x1A84, 0x01), "Money": (0x141F, 3), + "CurrentMap": (0x1436, 1), "ResetCheck": (0x0100, 4), # First and second Vermilion Gym trash can selection. Second is not used, so should always be 0. # First should never be above 0x0F. This is just before Event Flags. @@ -65,6 +66,7 @@ def __init__(self): self.banking_command = None self.game_state = False self.last_death_link = 0 + self.current_map = 0 async def validate_rom(self, ctx): game_name = await read(ctx.bizhawk_ctx, [(0x134, 12, "ROM")]) @@ -230,6 +232,10 @@ async def game_watcher(self, ctx): }]) self.banking_command = None + if data["CurrentMap"][0] != self.current_map: + await ctx.send_msgs([{"cmd": "Bounce", "slots": [ctx.slot], "data": {"currentMap": data["CurrentMap"][0]}}]) + self.current_map = data["CurrentMap"][0] + # VICTORY if data["EventFlag"][280] & 1 and not ctx.finished_game: From 00f862528083fec98af71a1c8b94120c99469ff1 Mon Sep 17 00:00:00 2001 From: DJ-lennart Date: Sat, 21 Jun 2025 16:31:12 +0200 Subject: [PATCH 159/183] Civilization VI: Updated setup and info pages (#5123) * Update setup_en.md Updated setup instructions for Civilization VI in Archipelago * Update en_Civilization VI.md Updated info page for Civilization VI in Archipelago * Update setup_en.md --- worlds/civ_6/docs/en_Civilization VI.md | 13 ++++----- worlds/civ_6/docs/setup_en.md | 35 +++++++++++++++---------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/worlds/civ_6/docs/en_Civilization VI.md b/worlds/civ_6/docs/en_Civilization VI.md index 215da00aa4fb..2a5f5fbd7399 100644 --- a/worlds/civ_6/docs/en_Civilization VI.md +++ b/worlds/civ_6/docs/en_Civilization VI.md @@ -20,16 +20,17 @@ A short period after receiving an item, you will get a notification indicating y ## FAQs - Do I need the DLC to play this? - - Yes, you need both Rise & Fall and Gathering Storm. + - You need both expansions, Rise & Fall and Gathering Storm. You do not need the other DLCs but they fully work with this. - Does this work with Multiplayer? - It does not and, despite my best efforts, probably won't until there's a new way for external programs to be able to interact with the game. -- Does my mod that reskins Barbarians as various Pro Wrestlers work with this? - - Only one way to find out! Any mods that modify techs/civics will most likely cause issues, though. +- Does this work with other mods? + - A lot of mods seem to work without issues combined with this, but you should avoid any mods that change things in the tech or civic tree, as even if they would work it could cause issues with the logic. - "Help! I can't see any of the items that have been sent to me!" - Both trees by default will show you the researchable Archipelago locations. To view the normal tree, you can click "Toggle Archipelago Tree" in the top-left corner of the tree view. - "Oh no! I received the Machinery tech and now instead of getting an Archer next turn, I have to wait an additional 10 turns to get a Crossbowman!" - Vanilla prevents you from building units of the same class from an earlier tech level after you have researched a later variant. For example, this could be problematic if someone unlocks Crossbowmen for you right out the gate since you won't be able to make Archers (which have a much lower production cost). -Solution: You can now go in to the tech tree, click "Toggle Archipelago Tree" to view your unlocked techs, and then can click any tech you have unlocked to toggle whether it is currently active or not. + - Solution: You can now go in to the tech tree, click "Toggle Archipelago Tree" to view your unlocked techs, and then can click any tech you have unlocked to toggle whether it is currently active or not. + - If you think you should be able to make Field Cannons but seemingly can't try disabling `Telecommunications` - "How does DeathLink work? Am I going to have to start a new game every time one of my friends dies?" - Heavens no, my fellow Archipelago appreciator. When configuring your Archipelago options for Civilization on the options page, there are several choices available for you to fine tune the way you'd like to be punished for the follies of your friends. These include: Having a random unit destroyed, losing a percentage of gold or faith, or even losing a point on your era score. If you can't make up your mind, you can elect to have any of them be selected every time a death link is sent your way. In the event you lose one of your units in combat (this means captured units don't count), then you will send a death link event to the rest of your friends. @@ -39,7 +40,8 @@ Solution: You can now go in to the tech tree, click "Toggle Archipelago Tree" to 1. `TECH_WRITING` 2. `TECH_EDUCATION` 3. `TECH_CHEMISTRY` - - If you want to see the details around each item, you can review [this file](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/civ_6/data/progressive_districts.json). + - An important thing to note is that the seaport is part of progressive industrial zones, due to electricity having both an industrial zone building and the seaport. + - If you want to see the details around each item, you can review [this file](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/civ_6/data/progressive_districts.py). ## Boostsanity Boostsanity takes all of the Eureka & Inspiration events and makes them location checks. This feature is the one to change up the way Civilization is played in an AP multiworld/randomizer. What normally are mundane tasks that are passively collected now become a novel and interesting bucket list that you need to pay attention to in order to unlock items for yourself and others! @@ -56,4 +58,3 @@ Boosts have logic associated with them in order to verify you can always reach t - The unpredictable timing of boosts and unlocking them can occasionally lead to scenarios where you'll have to first encounter a locked era defeat and then load a previous save. To help reduce the frequency of this, local `PROGRESSIVE_ERA` items will never be located at a boost check. - There's too many boosts, how will I know which one's I should focus on?! - In order to give a little more focus to all the boosts rather than just arbitrarily picking them at random, items in both of the vanilla trees will now have an advisor icon on them if its associated boost contains a progression item. - diff --git a/worlds/civ_6/docs/setup_en.md b/worlds/civ_6/docs/setup_en.md index 9cf4744b6596..fb8404190ff1 100644 --- a/worlds/civ_6/docs/setup_en.md +++ b/worlds/civ_6/docs/setup_en.md @@ -6,12 +6,14 @@ This guide is meant to help you get up and running with Civilization VI in Archi The following are required in order to play Civ VI in Archipelago: -- Windows OS (Firaxis does not support the necessary tooling for Mac, or Linux) +- Windows OS (Firaxis does not support the necessary tooling for Mac, or Linux). -- Installed [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases) v0.4.5 or higher. +- Installed [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases). - The latest version of the [Civ VI AP Mod](https://github.com/hesto2/civilization_archipelago_mod/releases/latest). +- A copy of the game `Civilization VI` including the two expansions `Rise & Fall` and `Gathering Storm` (both the Steam and Epic version should work). + ## Enabling the tuner In the main menu, navigate to the "Game Options" page. On the "Game" menu, make sure that "Tuner (disables achievements)" is enabled. @@ -20,27 +22,32 @@ In the main menu, navigate to the "Game Options" page. On the "Game" menu, make 1. Download and unzip the latest release of the mod from [GitHub](https://github.com/hesto2/civilization_archipelago_mod/releases/latest). -2. Copy the folder containing the mod files to your Civ VI mods folder. On Windows, this is usually located at `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods`. If you use OneDrive, check if the folder is instead located in your OneDrive file structure. +2. Copy the folder containing the mod files to your Civ VI mods folder. On Windows, this is usually located at `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods`. If you use OneDrive, check if the folder is instead located in your OneDrive file structure, and use that path when relevant in future steps. 3. After the Archipelago host generates a game, you should be given a `.apcivvi` file. Associate the file with the Archipelago Launcher and double click it. -4. Copy the contents of the new folder it generates (it will have the same name as the `.apcivvi` file) into your Civilization VI Archipelago Mod folder. If double clicking the `.apcivvi` file doesn't generate a folder, you can just rename it to a file ending with `.zip` and extract its contents to a new folder. To do this, right click the `.apcivvi` file and click "Rename", make sure it ends in `.zip`, then right click it again and select "Extract All". - -5. Your finished mod folder should look something like this: +4. Copy the contents of the new folder it generates (it will have the same name as the `.apcivvi` file) into your Civilization VI Archipelago Mod folder. If double clicking the `.apcivvi` file doesn't generate a folder, you can instead open it as a zip file. You can do this by either right clicking it and opening it with a program that handles zip files, or by right clicking and renaming the file extension from `apcivvi` to `zip`. -- Civ VI Mods Directory - - civilization_archipelago_mod - - NewItems.xml - - InitOptions.lua - - Archipelago.modinfo - - All the other mod files, etc. +5. Place the files generated from the `.apcivvi` in your archipelago mod folder (there should be five files placed there from the apcivvi file, overwrite if asked). Your mod path should look something like `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods\civilization_archipelago_mod`. ## Configuring your game -When configuring your game, make sure to start the game in the Ancient Era and leave all settings related to starting technologies and civics as the defaults. Other than that, configure difficulty, AI, etc. as you normally would. +Make sure you enable the mod in the main title under Additional Content > Mods. When configuring your game, make sure to start the game in the Ancient Era and leave all settings related to starting technologies and civics as the defaults. Other than that, configure difficulty, AI, etc. as you normally would. ## Troubleshooting +- If you have troubles with file extension related stuff, make sure Windows shows file extensions as they are turned off by default. If you don't know how to turn them on it is just a quick google search away. + - If you are getting an error: "The remote computer refused the network connection", or something else related to the client (or tuner) not being able to connect, it likely indicates the tuner is not actually enabled. One simple way to verify that it is enabled is, after completing the setup steps, go to Main Menu → Options → Look for an option named "Tuner" and verify it is set to "Enabled" -- If your game gets in a state where someone has sent you items or you have sent locations but these are not correctly sent to the multiworld, you can run `/resync` from the Civ 6 client. This may take up to a minute depending on how many items there are. +- If your game gets in a state where someone has sent you items or you have sent locations but these are not correctly sent to the multiworld, you can run `/resync` from the Civ 6 client. This may take up to a minute depending on how many items there are. This can resend certain items to you, like one time bonuses. + +- If the archipelago mod does not appear in the mod selector in the game, make sure the mod is correctly placed as a folder in the `Sid Meier's Civilization VI\Mods` folder, there should not be any loose files in there only folders. As in the path should look something like `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods\civilization_archipelago_mod`. + +- If it still does not appear make sure you have the right folder, one way to verify you are in the right place is to find the general folder area where your Civ VI save files are located. + +- If you get an error when trying to start a game saying `Error - One or more Mods failed to load content`, make sure the files from the `.apcivvi` are placed into the `civilization_archipelago_mod` as loose files and not as a folder. + +- If you still have any errors make sure the two expansions Rise & Fall and Gathering Storm are active in the mod selector (all the official DLC works without issues but Rise & Fall and Gathering Storm are required for the mod). + +- If boostsanity is enabled and those items are not being sent out but regular techs are, make sure you placed the files from your new room in the mod folder. From 21864f6f950d752b3fb8c0411517f5b442708ac4 Mon Sep 17 00:00:00 2001 From: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com> Date: Fri, 27 Jun 2025 16:25:45 -0600 Subject: [PATCH 160/183] CVCotM: Fix Advance Collection ROM (#5132) --- worlds/cvcotm/aesthetics.py | 4 ++-- worlds/cvcotm/data/patches.py | 24 ++++++++++++------------ worlds/cvcotm/rom.py | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/worlds/cvcotm/aesthetics.py b/worlds/cvcotm/aesthetics.py index d52165d076a1..86134f8e0954 100644 --- a/worlds/cvcotm/aesthetics.py +++ b/worlds/cvcotm/aesthetics.py @@ -734,8 +734,8 @@ def get_start_inventory_data(world: "CVCotMWorld") -> Tuple[Dict[int, bytes], bo magic_items_array[array_offset] += 1 # Add the start inventory arrays to the offset data in bytes form. - start_inventory_data[0x680080] = bytes(magic_items_array) - start_inventory_data[0x6800A0] = bytes(cards_array) + start_inventory_data[0x690080] = bytes(magic_items_array) + start_inventory_data[0x6900A0] = bytes(cards_array) # Add the extra max HP/MP/Hearts to all classes' base stats. Doing it this way makes us less likely to hit the max # possible Max Ups. diff --git a/worlds/cvcotm/data/patches.py b/worlds/cvcotm/data/patches.py index c2a9aa791f91..37fba3bd40e3 100644 --- a/worlds/cvcotm/data/patches.py +++ b/worlds/cvcotm/data/patches.py @@ -132,40 +132,40 @@ # Magic Items 0x13, 0x48, # ldr r0, =0x202572F - 0x14, 0x49, # ldr r1, =0x8680080 + 0x14, 0x49, # ldr r1, =0x8690080 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x08, 0x2A, # cmp r2, #8 - 0xFA, 0xDB, # blt 0x8680006 + 0xFA, 0xDB, # blt 0x8690006 # Max Ups 0x11, 0x48, # ldr r0, =0x202572C - 0x12, 0x49, # ldr r1, =0x8680090 + 0x12, 0x49, # ldr r1, =0x8690090 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x03, 0x2A, # cmp r2, #3 - 0xFA, 0xDB, # blt 0x8680016 + 0xFA, 0xDB, # blt 0x8690016 # Cards 0x0F, 0x48, # ldr r0, =0x2025674 - 0x10, 0x49, # ldr r1, =0x86800A0 + 0x10, 0x49, # ldr r1, =0x86900A0 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x14, 0x2A, # cmp r2, #0x14 - 0xFA, 0xDB, # blt 0x8680026 + 0xFA, 0xDB, # blt 0x8690026 # Inventory Items (not currently supported) 0x0D, 0x48, # ldr r0, =0x20256ED - 0x0E, 0x49, # ldr r1, =0x86800C0 + 0x0E, 0x49, # ldr r1, =0x86900C0 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x36, 0x2A, # cmp r2, #36 - 0xFA, 0xDB, # blt 0x8680036 + 0xFA, 0xDB, # blt 0x8690036 # Return to the function that checks for Magician Mode. 0xBA, 0x21, # movs r1, #0xBA 0x89, 0x00, # lsls r1, r1, #2 @@ -176,13 +176,13 @@ # LDR number pool 0x78, 0x7F, 0x00, 0x08, 0x2F, 0x57, 0x02, 0x02, - 0x80, 0x00, 0x68, 0x08, + 0x80, 0x00, 0x69, 0x08, 0x2C, 0x57, 0x02, 0x02, - 0x90, 0x00, 0x68, 0x08, + 0x90, 0x00, 0x69, 0x08, 0x74, 0x56, 0x02, 0x02, - 0xA0, 0x00, 0x68, 0x08, + 0xA0, 0x00, 0x69, 0x08, 0xED, 0x56, 0x02, 0x02, - 0xC0, 0x00, 0x68, 0x08, + 0xC0, 0x00, 0x69, 0x08, ] max_max_up_checker = [ diff --git a/worlds/cvcotm/rom.py b/worlds/cvcotm/rom.py index 6ae0b6e43863..350829292b34 100644 --- a/worlds/cvcotm/rom.py +++ b/worlds/cvcotm/rom.py @@ -335,8 +335,8 @@ def apply_patches(caller: APProcedurePatch, rom: bytes, options_file: str) -> by rom_data.write_bytes(0x679A60, patches.kickless_roc_height_shortener) # Give the player their Start Inventory upon entering their name on a new file. - rom_data.write_bytes(0x7F70, [0x00, 0x48, 0x87, 0x46, 0x00, 0x00, 0x68, 0x08]) - rom_data.write_bytes(0x680000, patches.start_inventory_giver) + rom_data.write_bytes(0x7F70, [0x00, 0x48, 0x87, 0x46, 0x00, 0x00, 0x69, 0x08]) + rom_data.write_bytes(0x690000, patches.start_inventory_giver) # Prevent Max Ups from exceeding 255. rom_data.write_bytes(0x5E170, [0x00, 0x4A, 0x97, 0x46, 0x00, 0x00, 0x6A, 0x08]) From 52389731ebef8e0b516059c2597657690d99eeee Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Fri, 27 Jun 2025 18:46:00 -0400 Subject: [PATCH 161/183] TWW: Update Preset S7 to S8 (#5138) --- worlds/tww/Presets.py | 89 +++++++++++++++++++++++----- worlds/tww/docs/en_The Wind Waker.md | 9 +-- 2 files changed, 80 insertions(+), 18 deletions(-) diff --git a/worlds/tww/Presets.py b/worlds/tww/Presets.py index 286494262fdf..bc1477cb5384 100644 --- a/worlds/tww/Presets.py +++ b/worlds/tww/Presets.py @@ -1,61 +1,122 @@ from typing import Any tww_options_presets: dict[str, dict[str, Any]] = { - "Tournament S7": { + "Tournament S8": { "progression_dungeon_secrets": True, "progression_combat_secret_caves": True, "progression_short_sidequests": True, + "progression_long_sidequests": True, "progression_spoils_trading": True, "progression_big_octos_gunboats": True, "progression_mail": True, + "progression_platforms_rafts": True, + "progression_submarines": True, + "progression_big_octos_gunboats": True, + "progression_expensive_purchases": True, "progression_island_puzzles": True, "progression_misc": True, "randomize_mapcompass": "startwith", + "randomize_bigkeys": "startwith", "required_bosses": True, - "num_required_bosses": 3, + "num_required_bosses": 4, + "included_dungeons": ["Forsaken Fortress"], "chest_type_matches_contents": True, "logic_obscurity": "hard", + "randomize_dungeon_entrances": True, "randomize_starting_island": True, "add_shortcut_warps_between_dungeons": True, "start_inventory_from_pool": { "Telescope": 1, "Wind Waker": 1, - "Goddess Tingle Statue": 1, - "Earth Tingle Statue": 1, - "Wind Tingle Statue": 1, "Wind's Requiem": 1, "Ballad of Gales": 1, + "Command Melody": 1, "Earth God's Lyric": 1, "Wind God's Aria": 1, "Song of Passing": 1, - "Progressive Magic Meter": 2, + "Triforce Shard 1": 1, + "Triforce Shard 2": 1, + "Triforce Shard 3": 1, + "Skull Necklace": 20, + "Golden Feather": 20, + "Knight's Crest": 10, + "Green Chu Jelly": 15, + "Nayru's Pearl": 1, + "Din's Pearl": 1, }, - "start_location_hints": ["Ganon's Tower - Maze Chest"], + "start_location_hints": [ + "Windfall Island - Chu Jelly Juice Shop - Give 15 Blue Chu Jelly", + "Ganon's Tower - Maze Chest", + ], "exclude_locations": [ - "Outset Island - Orca - Give 10 Knight's Crests", "Outset Island - Great Fairy", - "Windfall Island - Chu Jelly Juice Shop - Give 15 Green Chu Jelly", + "Windfall Island - Mrs. Marie - Give 1 Joy Pendant", "Windfall Island - Mrs. Marie - Give 21 Joy Pendants", "Windfall Island - Mrs. Marie - Give 40 Joy Pendants", - "Windfall Island - Maggie's Father - Give 20 Skull Necklaces", - "Dragon Roost Island - Rito Aerie - Give Hoskit 20 Golden Feathers", + "Windfall Island - Lenzo's House - Become Lenzo's Assistant", + "Windfall Island - Lenzo's House - Bring Forest Firefly", + "Windfall Island - Sam - Decorate the Town", + "Windfall Island - Kamo - Full Moon Photo", + "Windfall Island - Linda and Anton", + "Dragon Roost Island - Secret Cave", + "Greatfish Isle - Hidden Chest", + "Mother and Child Isles - Inside Mother Isle", + "Fire Mountain - Cave - Chest", + "Fire Mountain - Lookout Platform Chest", + "Fire Mountain - Lookout Platform - Destroy the Cannons", "Fire Mountain - Big Octo", - "Mailbox - Letter from Hoskit's Girlfriend", + "Headstone Island - Top of the Island", + "Headstone Island - Submarine", + "Earth Temple - Behind Curtain Next to Hammer Button", + "The Great Sea - Goron Trading Reward", + "The Great Sea - Withered Trees", "Private Oasis - Big Octo", + "Boating Course - Raft", + "Boating Course - Cave", "Stone Watcher Island - Cave", + "Stone Watcher Island - Lookout Platform Chest", + "Stone Watcher Island - Lookout Platform - Destroy the Cannons", "Overlook Island - Cave", + "Bird's Peak Rock - Cave", + "Pawprint Isle - Wizzrobe Cave", "Thorned Fairy Island - Great Fairy", + "Thorned Fairy Island - Northeastern Lookout Platform - Destroy the Cannons", + "Thorned Fairy Island - Southwestern Lookout Platform - Defeat the Enemies", "Eastern Fairy Island - Great Fairy", + "Eastern Fairy Island - Lookout Platform - Defeat the Cannons and Enemies", "Western Fairy Island - Great Fairy", - "Southern Fairy Island - Great Fairy", - "Northern Fairy Island - Great Fairy", + "Western Fairy Island - Lookout Platform", + "Tingle Island - Ankle - Reward for All Tingle Statues", "Tingle Island - Big Octo", "Diamond Steppe Island - Big Octo", + "Rock Spire Isle - Cave", "Rock Spire Isle - Beedle's Special Shop Ship - 500 Rupee Item", "Rock Spire Isle - Beedle's Special Shop Ship - 950 Rupee Item", "Rock Spire Isle - Beedle's Special Shop Ship - 900 Rupee Item", + "Rock Spire Isle - Western Lookout Platform - Destroy the Cannons", + "Rock Spire Isle - Eastern Lookout Platform - Destroy the Cannons", + "Rock Spire Isle - Center Lookout Platform", + "Rock Spire Isle - Southeast Gunboat", "Shark Island - Cave", + "Horseshoe Island - Northwestern Lookout Platform", + "Horseshoe Island - Southeastern Lookout Platform", + "Flight Control Platform - Submarine", + "Star Island - Cave", + "Star Island - Lookout Platform", + "Star Belt Archipelago - Lookout Platform", + "Five-Star Isles - Lookout Platform - Destroy the Cannons", + "Five-Star Isles - Raft", + "Five-Star Isles - Submarine", + "Seven-Star Isles - Center Lookout Platform", + "Seven-Star Isles - Northern Lookout Platform", + "Seven-Star Isles - Southern Lookout Platform", "Seven-Star Isles - Big Octo", + "Cyclops Reef - Lookout Platform - Defeat the Enemies", + "Two-Eye Reef - Lookout Platform", + "Two-Eye Reef - Big Octo Great Fairy", + "Five-Eye Reef - Lookout Platform", + "Six-Eye Reef - Lookout Platform - Destroy the Cannons", + "Six-Eye Reef - Submarine", ], }, "Miniblins 2025": { diff --git a/worlds/tww/docs/en_The Wind Waker.md b/worlds/tww/docs/en_The Wind Waker.md index 0158366b3f08..a49c8d6697ae 100644 --- a/worlds/tww/docs/en_The Wind Waker.md +++ b/worlds/tww/docs/en_The Wind Waker.md @@ -76,10 +76,11 @@ at least normal. A few presets are available on the [player options page](../player-options) for your convenience. -- **Tournament S7**: These are (as close to as possible) the settings used in the WWR Racing Server's - [Season 7 Tournament](https://docs.google.com/document/d/1mJj7an-DvpYilwNt-DdlFOy1fz5_NMZaPZvHeIekplc). - The preset features 3 required bosses and hard obscurity difficulty, and while the list of enabled progression options - may seem intimidating, the preset also excludes several locations. +- **Tournament S8**: These are (as close to as possible) the settings used in the WWR Racing Server's + [Season 8 Tournament](https://docs.google.com/document/d/1b8F5DL3P5fgsQC_URiwhpMfqTpsGh2M-KmtTdXVigh4). + The preset features 4 required bosses (with Helmaroc King guaranteed required), dungeon entrance rando, hard obscurity + difficulty, and a variety of overworld checks. While the list of enabled progression options may seem intimidating, + the preset also excludes several locations and starts you with a handful of items. - **Miniblins 2025**: These are (as close to as possible) the settings used in the WWR Racing Server's [2025 Season of Miniblins](https://docs.google.com/document/d/19vT68eU6PepD2BD2ZjR9ikElfqs8pXfqQucZ-TcscV8). This preset is great if you're new to Wind Waker! There aren't too many locations in the world, and you only need to From da52598c0843922d02912a933aeb6aa23833587c Mon Sep 17 00:00:00 2001 From: Fly Hyping Date: Fri, 27 Jun 2025 19:42:35 -0400 Subject: [PATCH 162/183] Wargroove: Fix Communication Thread (#5125) --- worlds/wargroove/Client.py | 130 +++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 63 deletions(-) diff --git a/worlds/wargroove/Client.py b/worlds/wargroove/Client.py index 3dc5d6eb0ca9..0627c7e9f2df 100644 --- a/worlds/wargroove/Client.py +++ b/worlds/wargroove/Client.py @@ -496,70 +496,74 @@ def get_commanders(self) -> List[Tuple[CommanderData, bool]]: async def game_watcher(ctx: WargrooveContext): while not ctx.exit_event.is_set(): - if ctx.syncing == True: - sync_msg = [{'cmd': 'Sync'}] - if ctx.locations_checked: - sync_msg.append({"cmd": "LocationChecks", "locations": list(ctx.locations_checked)}) - await ctx.send_msgs(sync_msg) - ctx.syncing = False - sending = [] - victory = False - for root, dirs, files in os.walk(ctx.game_communication_path): - for file in files: - if file == "deathLinkSend" and ctx.has_death_link: - with open(os.path.join(ctx.game_communication_path, file), 'r') as f: - failed_mission = f.read() - if ctx.slot is not None: - await ctx.send_death(f"{ctx.player_names[ctx.slot]} failed {failed_mission}") - os.remove(os.path.join(ctx.game_communication_path, file)) - if file.find("send") > -1: - st = file.split("send", -1)[1] - sending = sending+[(int(st))] - os.remove(os.path.join(ctx.game_communication_path, file)) - if file.find("victory") > -1: - victory = True - os.remove(os.path.join(ctx.game_communication_path, file)) - if file == "unitSacrifice" or file == "unitSacrificeAI": - if ctx.has_sacrifice_summon: - stored_units_key = ctx.player_stored_units_key - if file == "unitSacrificeAI": - stored_units_key = ctx.ai_stored_units_key + try: + if ctx.syncing == True: + sync_msg = [{'cmd': 'Sync'}] + if ctx.locations_checked: + sync_msg.append({"cmd": "LocationChecks", "locations": list(ctx.locations_checked)}) + await ctx.send_msgs(sync_msg) + ctx.syncing = False + sending = [] + victory = False + for root, dirs, files in os.walk(ctx.game_communication_path): + for file in files: + if file == "deathLinkSend" and ctx.has_death_link: with open(os.path.join(ctx.game_communication_path, file), 'r') as f: - unit_class = f.read() - message = [{"cmd": 'Set', "key": stored_units_key, - "default": [], - "want_reply": True, - "operations": [{"operation": "add", "value": [unit_class[:64]]}]}] - await ctx.send_msgs(message) - os.remove(os.path.join(ctx.game_communication_path, file)) - if file == "unitSummonRequestAI" or file == "unitSummonRequest": - if ctx.has_sacrifice_summon: - stored_units_key = ctx.player_stored_units_key - if file == "unitSummonRequestAI": - stored_units_key = ctx.ai_stored_units_key - with open(os.path.join(ctx.game_communication_path, "unitSummonResponse"), 'w') as f: - if stored_units_key in ctx.stored_data: - stored_units = ctx.stored_data[stored_units_key] - if stored_units is None: - stored_units = [] - wg1_stored_units = [unit for unit in stored_units if unit in ctx.unit_classes] - if len(wg1_stored_units) != 0: - summoned_unit = random.choice(wg1_stored_units) - message = [{"cmd": 'Set', "key": stored_units_key, - "default": [], - "want_reply": True, - "operations": [{"operation": "remove", "value": summoned_unit[:64]}]}] - await ctx.send_msgs(message) - f.write(summoned_unit) - os.remove(os.path.join(ctx.game_communication_path, file)) - - ctx.locations_checked = sending - message = [{"cmd": 'LocationChecks', "locations": sending}] - await ctx.send_msgs(message) - if not ctx.finished_game and victory: - await ctx.send_msgs([{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}]) - ctx.finished_game = True - await asyncio.sleep(0.1) + failed_mission = f.read() + if ctx.slot is not None: + await ctx.send_death(f"{ctx.player_names[ctx.slot]} failed {failed_mission}") + os.remove(os.path.join(ctx.game_communication_path, file)) + if file.find("send") > -1: + st = file.split("send", -1)[1] + sending = sending+[(int(st))] + os.remove(os.path.join(ctx.game_communication_path, file)) + if file.find("victory") > -1: + victory = True + os.remove(os.path.join(ctx.game_communication_path, file)) + if file == "unitSacrifice" or file == "unitSacrificeAI": + if ctx.has_sacrifice_summon: + stored_units_key = ctx.player_stored_units_key + if file == "unitSacrificeAI": + stored_units_key = ctx.ai_stored_units_key + with open(os.path.join(ctx.game_communication_path, file), 'r') as f: + unit_class = f.read() + message = [{"cmd": 'Set', "key": stored_units_key, + "default": [], + "want_reply": True, + "operations": [{"operation": "add", "value": [unit_class[:64]]}]}] + await ctx.send_msgs(message) + os.remove(os.path.join(ctx.game_communication_path, file)) + if file == "unitSummonRequestAI" or file == "unitSummonRequest": + if ctx.has_sacrifice_summon: + stored_units_key = ctx.player_stored_units_key + if file == "unitSummonRequestAI": + stored_units_key = ctx.ai_stored_units_key + with open(os.path.join(ctx.game_communication_path, "unitSummonResponse"), 'w') as f: + if stored_units_key in ctx.stored_data: + stored_units = ctx.stored_data[stored_units_key] + if stored_units is None: + stored_units = [] + wg1_stored_units = [unit for unit in stored_units if unit in ctx.unit_classes] + if len(wg1_stored_units) != 0: + summoned_unit = random.choice(wg1_stored_units) + message = [{"cmd": 'Set', "key": stored_units_key, + "default": [], + "want_reply": True, + "operations": [{"operation": "remove", "value": summoned_unit[:64]}]}] + await ctx.send_msgs(message) + f.write(summoned_unit) + os.remove(os.path.join(ctx.game_communication_path, file)) + + ctx.locations_checked = sending + message = [{"cmd": 'LocationChecks', "locations": sending}] + await ctx.send_msgs(message) + if not ctx.finished_game and victory: + await ctx.send_msgs([{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}]) + ctx.finished_game = True + await asyncio.sleep(0.1) + + except Exception as err: + logger.warn("Exception in communication thread, a check may not have been sent: " + str(err)) def print_error_and_close(msg): From 03e5fd3dae5a27cddd9fd4d3134d2d19f8d7562b Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Sat, 28 Jun 2025 10:46:37 -0400 Subject: [PATCH 163/183] TWW: Fix Swords in Swordless Mode (#5137) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/tww/randomizers/ItemPool.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/worlds/tww/randomizers/ItemPool.py b/worlds/tww/randomizers/ItemPool.py index 679d1939dffe..e3d62fa97390 100644 --- a/worlds/tww/randomizers/ItemPool.py +++ b/worlds/tww/randomizers/ItemPool.py @@ -110,6 +110,14 @@ def get_pool_core(world: "TWWWorld") -> tuple[list[str], list[str]]: else: filler_pool.extend([item] * data.quantity) + # If the player starts with a sword, add one to the precollected items list and remove one from the item pool. + if world.options.sword_mode == "start_with_sword": + precollected_items.append("Progressive Sword") + progression_pool.remove("Progressive Sword") + # Or, if it's swordless mode, remove all swords from the item pool. + elif world.options.sword_mode == "swordless": + useful_pool = [item for item in useful_pool if item != "Progressive Sword"] + # Assign useful and filler items to item pools in the world. world.random.shuffle(useful_pool) world.random.shuffle(filler_pool) @@ -141,17 +149,6 @@ def get_pool_core(world: "TWWWorld") -> tuple[list[str], list[str]]: pool.extend(progression_pool) num_items_left_to_place -= len(progression_pool) - # If the player starts with a sword, add one to the precollected items list and remove one from the item pool. - if world.options.sword_mode == "start_with_sword": - precollected_items.append("Progressive Sword") - num_items_left_to_place += 1 - pool.remove("Progressive Sword") - # Or, if it's swordless mode, remove all swords from the item pool. - elif world.options.sword_mode == "swordless": - while "Progressive Sword" in pool: - num_items_left_to_place += 1 - pool.remove("Progressive Sword") - # Place useful items, then filler items to fill out the remaining locations. pool.extend([world.get_filler_item_name(strict=False) for _ in range(num_items_left_to_place)]) From 8aacc23882c25a276dc03d766c9c3d6d11d65c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Sat, 28 Jun 2025 11:36:09 -0400 Subject: [PATCH 164/183] SDV: Add "Desert Transportation" and "Island Transportation" Item Groups (#5143) --- worlds/stardew_valley/data/items.csv | 8 ++++---- worlds/stardew_valley/items/item_data.py | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/worlds/stardew_valley/data/items.csv b/worlds/stardew_valley/data/items.csv index 11a22e952d07..f7dac9c5794e 100644 --- a/worlds/stardew_valley/data/items.csv +++ b/worlds/stardew_valley/data/items.csv @@ -6,7 +6,7 @@ id,name,classification,groups,mod_name 18,Greenhouse,progression,COMMUNITY_REWARD, 19,Glittering Boulder Removed,progression,COMMUNITY_REWARD, 20,Minecarts Repair,useful,COMMUNITY_REWARD, -21,Bus Repair,progression,COMMUNITY_REWARD, +21,Bus Repair,progression,"COMMUNITY_REWARD,DESERT_TRANSPORTATION", 22,Progressive Movie Theater,"progression,trap",COMMUNITY_REWARD, 23,Stardrop,progression,, 24,Progressive Backpack,progression,, @@ -63,8 +63,8 @@ id,name,classification,groups,mod_name 77,Combat Level,progression,SKILL_LEVEL_UP, 78,Earth Obelisk,progression,WIZARD_BUILDING, 79,Water Obelisk,progression,WIZARD_BUILDING, -80,Desert Obelisk,progression,WIZARD_BUILDING, -81,Island Obelisk,progression,"WIZARD_BUILDING,GINGER_ISLAND", +80,Desert Obelisk,progression,"WIZARD_BUILDING,DESERT_TRANSPORTATION", +81,Island Obelisk,progression,"WIZARD_BUILDING,GINGER_ISLAND,ISLAND_TRANSPORTATION", 82,Junimo Hut,useful,WIZARD_BUILDING, 83,Gold Clock,progression,WIZARD_BUILDING, 84,Progressive Coop,progression,BUILDING, @@ -242,7 +242,7 @@ id,name,classification,groups,mod_name 257,Peach Sapling,progression,"RESOURCE_PACK,RESOURCE_PACK_USEFUL,CROPSANITY", 258,Banana Sapling,progression,"GINGER_ISLAND,RESOURCE_PACK,RESOURCE_PACK_USEFUL,CROPSANITY", 259,Mango Sapling,progression,"GINGER_ISLAND,RESOURCE_PACK,RESOURCE_PACK_USEFUL,CROPSANITY", -260,Boat Repair,progression,GINGER_ISLAND, +260,Boat Repair,progression,"GINGER_ISLAND,ISLAND_TRANSPORTATION", 261,Open Professor Snail Cave,progression,GINGER_ISLAND, 262,Island North Turtle,progression,"GINGER_ISLAND,WALNUT_PURCHASE", 263,Island West Turtle,progression,"GINGER_ISLAND,WALNUT_PURCHASE", diff --git a/worlds/stardew_valley/items/item_data.py b/worlds/stardew_valley/items/item_data.py index e7c3779e275d..6abc96f4e626 100644 --- a/worlds/stardew_valley/items/item_data.py +++ b/worlds/stardew_valley/items/item_data.py @@ -33,6 +33,8 @@ class Group(enum.Enum): SKILL_MASTERY = enum.auto() BUILDING = enum.auto() WIZARD_BUILDING = enum.auto() + DESERT_TRANSPORTATION = enum.auto() + ISLAND_TRANSPORTATION = enum.auto() ARCADE_MACHINE_BUFFS = enum.auto() BASE_RESOURCE = enum.auto() WARP_TOTEM = enum.auto() From ba66ef14ccdac88b486d357f9e5dbefb0aced610 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Wed, 2 Jul 2025 08:14:35 -0400 Subject: [PATCH 165/183] Update world api.md (#5149) --- docs/world api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/world api.md b/docs/world api.md index 833d379bb238..2f3dd0e429f8 100644 --- a/docs/world api.md +++ b/docs/world api.md @@ -266,7 +266,7 @@ like entrance randomization in logic. Regions have a list called `exits`, containing `Entrance` objects representing transitions to other regions. -There must be one special region (Called "Menu" by default, but configurable using [origin_region_name](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/AutoWorld.py#L298-L299)), +There must be one special region (Called "Menu" by default, but configurable using [origin_region_name](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/AutoWorld.py#L310-L311)), from which the logic unfolds. AP assumes that a player will always be able to return to this starting region by resetting the game ("Save and quit"). ### Entrances From 11130037fe9a88d8be70a1624c35aea17daab680 Mon Sep 17 00:00:00 2001 From: agilbert1412 Date: Thu, 3 Jul 2025 15:08:36 -0400 Subject: [PATCH 166/183] Stardew Valley: Fixed luck level requirements for slot machines #5160 # Conflicts: # worlds/stardew_valley/data/craftable_data.py --- worlds/stardew_valley/data/craftable_data.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/stardew_valley/data/craftable_data.py b/worlds/stardew_valley/data/craftable_data.py index 66466d89b189..3dae67c2602c 100644 --- a/worlds/stardew_valley/data/craftable_data.py +++ b/worlds/stardew_valley/data/craftable_data.py @@ -386,7 +386,7 @@ def create_recipe(name: str, ingredients: Dict[str, int], source: RecipeSource, Forageable.salmonberry: 1, Material.clay: 1, Trash.joja_cola: 1}, ModNames.luck_skill) gold_slot_machine = skill_recipe(ModMachine.gold_slot_machine, ModSkill.luck, 4, {MetalBar.gold: 15, ModMachine.copper_slot_machine: 1}, ModNames.luck_skill) -iridium_slot_machine = skill_recipe(ModMachine.iridium_slot_machine, ModSkill.luck, 4, {MetalBar.iridium: 15, ModMachine.gold_slot_machine: 1}, ModNames.luck_skill) -radioactive_slot_machine = skill_recipe(ModMachine.radioactive_slot_machine, ModSkill.luck, 4, {MetalBar.radioactive: 15, ModMachine.iridium_slot_machine: 1}, ModNames.luck_skill) +iridium_slot_machine = skill_recipe(ModMachine.iridium_slot_machine, ModSkill.luck, 6, {MetalBar.iridium: 15, ModMachine.gold_slot_machine: 1}, ModNames.luck_skill) +radioactive_slot_machine = skill_recipe(ModMachine.radioactive_slot_machine, ModSkill.luck, 8, {MetalBar.radioactive: 15, ModMachine.iridium_slot_machine: 1}, ModNames.luck_skill) all_crafting_recipes_by_name = {recipe.item: recipe for recipe in all_crafting_recipes} From 072e2ece15429a49dda18898d266c9fa63905205 Mon Sep 17 00:00:00 2001 From: Ixrec Date: Sat, 5 Jul 2025 22:01:08 +0100 Subject: [PATCH 167/183] Docs: 'get_prefill_items' -> 'get_pre_fill_items' (#5167) --- docs/world api.md | 2 +- worlds/AutoWorld.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/world api.md b/docs/world api.md index 2f3dd0e429f8..677b1636e6be 100644 --- a/docs/world api.md +++ b/docs/world api.md @@ -533,7 +533,7 @@ In addition, the following methods can be implemented and are called in this ord called to modify item placement before, during, and after the regular fill process; all finishing before `generate_output`. Any items that need to be placed during `pre_fill` should not exist in the itempool, and if there are any items that need to be filled this way, but need to be in state while you fill other items, they can be - returned from `get_prefill_items`. + returned from `get_pre_fill_items`. * `generate_output(self, output_directory: str)` creates the output files if there is output to be generated. When this is called, `self.multiworld.get_locations(self.player)` has all locations for the player, with attribute `item` pointing to the diff --git a/worlds/AutoWorld.py b/worlds/AutoWorld.py index 6ea6c237d970..6c1683e3d55e 100644 --- a/worlds/AutoWorld.py +++ b/worlds/AutoWorld.py @@ -382,7 +382,7 @@ def create_regions(self) -> None: def create_items(self) -> None: """ Method for creating and submitting items to the itempool. Items and Regions must *not* be created and submitted - to the MultiWorld after this step. If items need to be placed during pre_fill use `get_prefill_items`. + to the MultiWorld after this step. If items need to be placed during pre_fill use `get_pre_fill_items`. """ pass From e68b1ad42896ce5ec4c0ef0e46a21f0a21ab5cbb Mon Sep 17 00:00:00 2001 From: Doug Hoskisson Date: Sun, 6 Jul 2025 10:22:02 -0700 Subject: [PATCH 168/183] CommonClient: fix extra panels added to `main_area_container` (#5151) --- kvui.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kvui.py b/kvui.py index 2f45831200bc..e11e366d72d8 100644 --- a/kvui.py +++ b/kvui.py @@ -921,9 +921,11 @@ def connect_bar_validate(sender): hint_panel = self.add_client_tab("Hints", HintLayout(self.hint_log)) self.log_panels["Hints"] = hint_panel.content - self.main_area_container = MDGridLayout(size_hint_y=1, cols=1) - self.main_area_container.add_widget(self.tabs) - self.main_area_container.add_widget(self.screens) + self.main_area_container = MDGridLayout(size_hint_y=1, rows=1) + tab_container = MDGridLayout(size_hint_y=1, cols=1) + tab_container.add_widget(self.tabs) + tab_container.add_widget(self.screens) + self.main_area_container.add_widget(tab_container) self.grid.add_widget(self.main_area_container) From 4623d59206e88132432b6db74945a717057b2f8a Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Mon, 7 Jul 2025 15:51:39 +0200 Subject: [PATCH 169/183] Core: ensure slot_data and er_hint_info are only base data types (#5144) --------- Co-authored-by: Doug Hoskisson --- Main.py | 4 ++++ NetUtils.py | 21 +++++++++++++++++++++ test/general/test_implemented.py | 4 ++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Main.py b/Main.py index 442c2ff40441..456820a461f7 100644 --- a/Main.py +++ b/Main.py @@ -12,6 +12,7 @@ from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld from Fill import FillError, balance_multiworld_progression, distribute_items_restrictive, flood_items, \ parse_planned_blocks, distribute_planned_blocks, resolve_early_locations_for_planned +from NetUtils import convert_to_base_types from Options import StartInventoryPool from Utils import __version__, output_path, version_tuple from settings import get_settings @@ -334,6 +335,9 @@ def precollect_hint(location: Location, auto_status: HintStatus): } AutoWorld.call_all(multiworld, "modify_multidata", multidata) + for key in ("slot_data", "er_hint_data"): + multidata[key] = convert_to_base_types(multidata[key]) + multidata = zlib.compress(pickle.dumps(multidata), 9) with open(os.path.join(temp_dir, f'{outfilebase}.archipelago'), 'wb') as f: diff --git a/NetUtils.py b/NetUtils.py index f2ae2a63a056..cc6e917c8800 100644 --- a/NetUtils.py +++ b/NetUtils.py @@ -106,6 +106,27 @@ def _scan_for_TypedTuples(obj: typing.Any) -> typing.Any: return obj +_base_types = str | int | bool | float | None | tuple["_base_types", ...] | dict["_base_types", "base_types"] + + +def convert_to_base_types(obj: typing.Any) -> _base_types: + if isinstance(obj, (tuple, list, set, frozenset)): + return tuple(convert_to_base_types(o) for o in obj) + elif isinstance(obj, dict): + return {convert_to_base_types(key): convert_to_base_types(value) for key, value in obj.items()} + elif obj is None or type(obj) in (str, int, float, bool): + return obj + # unwrap simple types to their base, such as StrEnum + elif isinstance(obj, str): + return str(obj) + elif isinstance(obj, int): + return int(obj) + elif isinstance(obj, float): + return float(obj) + else: + raise Exception(f"Cannot handle {type(obj)}") + + _encode = JSONEncoder( ensure_ascii=False, check_circular=False, diff --git a/test/general/test_implemented.py b/test/general/test_implemented.py index b74f82b738b5..cf0624a28837 100644 --- a/test/general/test_implemented.py +++ b/test/general/test_implemented.py @@ -1,7 +1,7 @@ import unittest from Fill import distribute_items_restrictive -from NetUtils import encode +from NetUtils import convert_to_base_types from worlds.AutoWorld import AutoWorldRegister, call_all from worlds import failed_world_loads from . import setup_solo_multiworld @@ -47,7 +47,7 @@ def test_slot_data(self): call_all(multiworld, "post_fill") for key, data in multiworld.worlds[1].fill_slot_data().items(): self.assertIsInstance(key, str, "keys in slot data must be a string") - self.assertIsInstance(encode(data), str, f"object {type(data).__name__} not serializable.") + convert_to_base_types(data) # only put base data types into slot data def test_no_failed_world_loads(self): if failed_world_loads: From 95e09c8e2a681ecd5666822b04fe7fed3ed9dec1 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:24:35 +0200 Subject: [PATCH 170/183] Core: Take Counter back out of RestrictedUnpickler #5169 --- Utils.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/Utils.py b/Utils.py index 84d3a33dc76f..6212b9328830 100644 --- a/Utils.py +++ b/Utils.py @@ -441,9 +441,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: def find_class(self, module: str, name: str) -> type: if module == "builtins" and name in safe_builtins: return getattr(builtins, name) - # used by OptionCounter - if module == "collections" and name == "Counter": - return collections.Counter # used by MultiServer -> savegame/multidata if module == "NetUtils" and name in {"NetworkItem", "ClientStatus", "Hint", "SlotType", "NetworkSlot", "HintStatus"}: From d4ebace99f17299c0fa861a1ccad42bdf4e332fe Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Mon, 7 Jul 2025 13:15:37 -0400 Subject: [PATCH 171/183] =?UTF-8?q?[Jak=20and=20Daxter]=20Auto=20Detect=20?= =?UTF-8?q?Install=20Path=20after=20Game=20Launcher=20Update=C2=A0#5152?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worlds/jakanddaxter/client.py | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/worlds/jakanddaxter/client.py b/worlds/jakanddaxter/client.py index 2b669d384714..90e6a42aa7e3 100644 --- a/worlds/jakanddaxter/client.py +++ b/worlds/jakanddaxter/client.py @@ -367,7 +367,7 @@ def find_root_directory(ctx: JakAndDaxterContext): f" Close all launchers, games, clients, and console windows, then restart Archipelago.") if not os.path.exists(settings_path): - msg = (f"{err_title}: the OpenGOAL settings file does not exist.\n" + msg = (f"{err_title}: The OpenGOAL settings file does not exist.\n" f"{alt_instructions}") ctx.on_log_error(logger, msg) return @@ -375,14 +375,44 @@ def find_root_directory(ctx: JakAndDaxterContext): with open(settings_path, "r") as f: load = json.load(f) - jak1_installed = load["games"]["Jak 1"]["isInstalled"] + # This settings file has changed format once before, and may do so again in the future. + # Guard against future incompatibilities by checking the file version first, and use that to determine + # what JSON keys to look for next. + try: + settings_version = load["version"] + logger.debug(f"OpenGOAL settings file version: {settings_version}") + except KeyError: + msg = (f"{err_title}: The OpenGOAL settings file has no version number!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + try: + if settings_version == "2.0": + jak1_installed = load["games"]["Jak 1"]["isInstalled"] + mod_sources = load["games"]["Jak 1"]["modsInstalledVersion"] + + elif settings_version == "3.0": + jak1_installed = load["games"]["jak1"]["isInstalled"] + mod_sources = load["games"]["jak1"]["mods"] + + else: + msg = (f"{err_title}: The OpenGOAL settings file has an unknown version number ({settings_version}).\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + except KeyError as e: + msg = (f"{err_title}: The OpenGOAL settings file does not contain key entry {e}!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + if not jak1_installed: msg = (f"{err_title}: The OpenGOAL Launcher is missing a normal install of Jak 1!\n" f"{alt_instructions}") ctx.on_log_error(logger, msg) return - mod_sources = load["games"]["Jak 1"]["modsInstalledVersion"] if mod_sources is None: msg = (f"{err_title}: No mod sources have been configured in the OpenGOAL Launcher!\n" f"{alt_instructions}") From f4b5422f66c0f5332cb05998ad0f7731d4a436f3 Mon Sep 17 00:00:00 2001 From: Remy Jette Date: Mon, 7 Jul 2025 13:57:55 -0700 Subject: [PATCH 172/183] Factorio: Fix link to world_gen documentation (#5171) --- worlds/factorio/Options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/factorio/Options.py b/worlds/factorio/Options.py index 12fc90c1fd15..0a789669d5d6 100644 --- a/worlds/factorio/Options.py +++ b/worlds/factorio/Options.py @@ -321,7 +321,7 @@ class InventorySpillTrapCount(TrapCount): class FactorioWorldGen(OptionDict): """World Generation settings. Overview of options at https://wiki.factorio.com/Map_generator, - with in-depth documentation at https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings""" + with in-depth documentation at https://lua-api.factorio.com/latest/concepts/MapGenSettings.html""" display_name = "World Generation" # FIXME: do we want default be a rando-optimized default or in-game DS? value: dict[str, dict[str, typing.Any]] From b1ff55dd061af9158c1747a57472d157e42ded92 Mon Sep 17 00:00:00 2001 From: axe-y <58866768+axe-y@users.noreply.github.com> Date: Thu, 10 Jul 2025 08:33:52 -0400 Subject: [PATCH 173/183] DLCQ: Fix/Refactor LFoD Start Inventory (#5176) --- worlds/dlcquest/Items.py | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/worlds/dlcquest/Items.py b/worlds/dlcquest/Items.py index 550d92419ba9..5496885a74f7 100644 --- a/worlds/dlcquest/Items.py +++ b/worlds/dlcquest/Items.py @@ -30,7 +30,6 @@ class Group(enum.Enum): Deprecated = enum.auto() - @dataclass(frozen=True) class ItemData: code_without_offset: offset @@ -98,14 +97,15 @@ def create_trap_items(world, world_options: Options.DLCQuestOptions, trap_needed return traps -def create_items(world, world_options: Options.DLCQuestOptions, locations_count: int, excluded_items: list[str], random: Random): +def create_items(world, world_options: Options.DLCQuestOptions, locations_count: int, excluded_items: list[str], + random: Random): created_items = [] if world_options.campaign == Options.Campaign.option_basic or world_options.campaign == Options.Campaign.option_both: - create_items_basic(world_options, created_items, world, excluded_items) + create_items_campaign(world_options, created_items, world, excluded_items, Group.DLCQuest, 825, 250) if (world_options.campaign == Options.Campaign.option_live_freemium_or_die or world_options.campaign == Options.Campaign.option_both): - create_items_lfod(world_options, created_items, world, excluded_items) + create_items_campaign(world_options, created_items, world, excluded_items, Group.Freemium, 889, 200) trap_items = create_trap_items(world, world_options, locations_count - len(created_items), random) created_items += trap_items @@ -113,27 +113,8 @@ def create_items(world, world_options: Options.DLCQuestOptions, locations_count: return created_items -def create_items_lfod(world_options, created_items, world, excluded_items): - for item in items_by_group[Group.Freemium]: - if item.name in excluded_items: - excluded_items.remove(item) - continue - - if item.has_any_group(Group.DLC): - created_items.append(world.create_item(item)) - if item.has_any_group(Group.Item) and world_options.item_shuffle == Options.ItemShuffle.option_shuffled: - created_items.append(world.create_item(item)) - if item.has_any_group(Group.Twice): - created_items.append(world.create_item(item)) - if world_options.coinsanity == Options.CoinSanity.option_coin: - if world_options.coinbundlequantity == -1: - create_coin_piece(created_items, world, 889, 200, Group.Freemium) - return - create_coin(world_options, created_items, world, 889, 200, Group.Freemium) - - -def create_items_basic(world_options, created_items, world, excluded_items): - for item in items_by_group[Group.DLCQuest]: +def create_items_campaign(world_options: Options.DLCQuestOptions, created_items: list[DLCQuestItem], world, excluded_items: list[str], group: Group, total_coins: int, required_coins: int): + for item in items_by_group[group]: if item.name in excluded_items: excluded_items.remove(item.name) continue @@ -146,14 +127,15 @@ def create_items_basic(world_options, created_items, world, excluded_items): created_items.append(world.create_item(item)) if world_options.coinsanity == Options.CoinSanity.option_coin: if world_options.coinbundlequantity == -1: - create_coin_piece(created_items, world, 825, 250, Group.DLCQuest) + create_coin_piece(created_items, world, total_coins, required_coins, group) return - create_coin(world_options, created_items, world, 825, 250, Group.DLCQuest) + create_coin(world_options, created_items, world, total_coins, required_coins, group) def create_coin(world_options, created_items, world, total_coins, required_coins, group): coin_bundle_required = math.ceil(required_coins / world_options.coinbundlequantity) - coin_bundle_useful = math.ceil((total_coins - coin_bundle_required * world_options.coinbundlequantity) / world_options.coinbundlequantity) + coin_bundle_useful = math.ceil( + (total_coins - coin_bundle_required * world_options.coinbundlequantity) / world_options.coinbundlequantity) for item in items_by_group[group]: if item.has_any_group(Group.Coin): for i in range(coin_bundle_required): @@ -165,7 +147,7 @@ def create_coin(world_options, created_items, world, total_coins, required_coins def create_coin_piece(created_items, world, total_coins, required_coins, group): for item in items_by_group[group]: if item.has_any_group(Group.Piece): - for i in range(required_coins*10): + for i in range(required_coins * 10): created_items.append(world.create_item(item)) for i in range((total_coins - required_coins) * 10): created_items.append(world.create_item(item, ItemClassification.useful)) From edc0c89753b6e5283d7289d6e60c5e050e5d8303 Mon Sep 17 00:00:00 2001 From: Carter Hesterman Date: Thu, 10 Jul 2025 07:10:56 -0600 Subject: [PATCH 174/183] CIV 6: Remove Erroneous Boost Prereqs for Computers Boost (#5134) --- worlds/civ_6/data/boosts.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/worlds/civ_6/data/boosts.py b/worlds/civ_6/data/boosts.py index a3977208154e..49cedfdfd991 100644 --- a/worlds/civ_6/data/boosts.py +++ b/worlds/civ_6/data/boosts.py @@ -78,8 +78,8 @@ CivVIBoostData( "BOOST_TECH_IRON_WORKING", "ERA_CLASSICAL", - ["TECH_MINING"], - 1, + ["TECH_MINING", "TECH_BRONZE_WORKING"], + 2, "DEFAULT", ), CivVIBoostData( @@ -165,15 +165,9 @@ "BOOST_TECH_CASTLES", "ERA_MEDIEVAL", [ - "CIVIC_DIVINE_RIGHT", - "CIVIC_EXPLORATION", - "CIVIC_REFORMED_CHURCH", "CIVIC_SUFFRAGE", "CIVIC_TOTALITARIANISM", "CIVIC_CLASS_STRUGGLE", - "CIVIC_DIGITAL_DEMOCRACY", - "CIVIC_CORPORATE_LIBERTARIANISM", - "CIVIC_SYNTHETIC_TECHNOCRACY", ], 1, "DEFAULT", @@ -393,9 +387,6 @@ "CIVIC_SUFFRAGE", "CIVIC_TOTALITARIANISM", "CIVIC_CLASS_STRUGGLE", - "CIVIC_DIGITAL_DEMOCRACY", - "CIVIC_CORPORATE_LIBERTARIANISM", - "CIVIC_SYNTHETIC_TECHNOCRACY", ], 1, "DEFAULT", From 2974f7d11f57e97da00a568b1c03a670fd8938d0 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Fri, 11 Jul 2025 19:27:28 +0200 Subject: [PATCH 175/183] Core: Replace Clique with V6 in unit tests (#5181) * replace Clique with V6 in unit tests * no hard mode in V6 * modify regex in copy_world to allow : str * oops * I see now * work around all typing * there actually needs to be something --- .github/workflows/build.yml | 4 ++-- test/hosting/__main__.py | 8 ++++---- test/hosting/generate.py | 2 +- test/hosting/world.py | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6b80965f0ac..07ae1136fc01 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: shell: bash run: | cd build/exe* - cp Players/Templates/Clique.yaml Players/ + cp Players/Templates/VVVVVV.yaml Players/ timeout 30 ./ArchipelagoGenerate - name: Store 7z uses: actions/upload-artifact@v4 @@ -189,7 +189,7 @@ jobs: shell: bash run: | cd build/exe* - cp Players/Templates/Clique.yaml Players/ + cp Players/Templates/VVVVVV.yaml Players/ timeout 30 ./ArchipelagoGenerate - name: Store AppImage uses: actions/upload-artifact@v4 diff --git a/test/hosting/__main__.py b/test/hosting/__main__.py index 6640c637b5bd..e235d7bb7218 100644 --- a/test/hosting/__main__.py +++ b/test/hosting/__main__.py @@ -63,12 +63,12 @@ def expect_equal(first: Any, second: Any, msg: str = "") -> None: spacer = '=' * 80 with TemporaryDirectory() as tempdir: - multis = [["Clique"], ["Temp World"], ["Clique", "Temp World"]] + multis = [["VVVVVV"], ["Temp World"], ["VVVVVV", "Temp World"]] p1_games = [] data_paths = [] rooms = [] - copy_world("Clique", "Temp World") + copy_world("VVVVVV", "Temp World") try: for n, games in enumerate(multis, 1): print(f"Generating [{n}] {', '.join(games)}") @@ -101,7 +101,7 @@ def expect_equal(first: Any, second: Any, msg: str = "") -> None: with Client(host.address, game, "Player1") as client: local_data_packages = client.games_packages local_collected_items = len(client.checked_locations) - if collected_items < 2: # Clique only has 2 Locations + if collected_items < 2: # Don't collect anything on the last iteration client.collect_any() # TODO: Ctrl+C test here as well @@ -125,7 +125,7 @@ def expect_equal(first: Any, second: Any, msg: str = "") -> None: with Client(host.address, game, "Player1") as client: web_data_packages = client.games_packages web_collected_items = len(client.checked_locations) - if collected_items < 2: # Clique only has 2 Locations + if collected_items < 2: # Don't collect anything on the last iteration client.collect_any() if collected_items == 1: sleep(1) # wait for the server to collect the item diff --git a/test/hosting/generate.py b/test/hosting/generate.py index d5d39dc95ee0..e90868eb6f9f 100644 --- a/test/hosting/generate.py +++ b/test/hosting/generate.py @@ -34,7 +34,7 @@ def _generate_local_inner(games: Iterable[str], f.write(json.dumps({ "name": f"Player{n}", "game": game, - game: {"hard_mode": "true"}, + game: {}, "description": f"generate_local slot {n} ('Player{n}'): {game}", })) diff --git a/test/hosting/world.py b/test/hosting/world.py index 74126412017e..cd53453c10c2 100644 --- a/test/hosting/world.py +++ b/test/hosting/world.py @@ -30,7 +30,7 @@ def copy(src: str, dst: str) -> None: _new_worlds[dst] = str(dst_folder) with open(dst_folder / "__init__.py", "r", encoding="utf-8-sig") as f: contents = f.read() - contents = re.sub(r'game\s*=\s*[\'"]' + re.escape(src) + r'[\'"]', f'game = "{dst}"', contents) + contents = re.sub(r'game\s*(:\s*[a-zA-Z\[\]]+)?\s*=\s*[\'"]' + re.escape(src) + r'[\'"]', f'game = "{dst}"', contents) with open(dst_folder / "__init__.py", "w", encoding="utf-8") as f: f.write(contents) From 6af34b66fb166af42f73879152c1a030ff2423f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zach=20=E2=80=9CPhar=E2=80=9D=20Parks?= <11338376+ThePhar@users.noreply.github.com> Date: Fri, 11 Jul 2025 12:34:46 -0500 Subject: [PATCH 176/183] Various: Remove Rogue Legacy and Clique (#5177) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Various: Remove Rogue Legacy and Clique * Remove Clique from setup.py and revert network diagram.md change. * Try again. * Update network diagram.md --------- Co-authored-by: Zach “Phar” Parks Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- README.md | 2 - docs/CODEOWNERS | 6 - docs/network diagram/network diagram.md | 4 +- setup.py | 1 - worlds/clique/Items.py | 38 -- worlds/clique/Locations.py | 37 -- worlds/clique/Options.py | 34 -- worlds/clique/Regions.py | 11 - worlds/clique/Rules.py | 13 - worlds/clique/__init__.py | 102 ------ worlds/clique/docs/de_Clique.md | 18 - worlds/clique/docs/en_Clique.md | 16 - worlds/clique/docs/guide_de.md | 25 -- worlds/clique/docs/guide_en.md | 22 -- worlds/rogue_legacy/Items.py | 111 ------ worlds/rogue_legacy/Locations.py | 94 ----- worlds/rogue_legacy/Options.py | 387 -------------------- worlds/rogue_legacy/Presets.py | 61 --- worlds/rogue_legacy/Regions.py | 114 ------ worlds/rogue_legacy/Rules.py | 117 ------ worlds/rogue_legacy/__init__.py | 243 ------------ worlds/rogue_legacy/docs/en_Rogue Legacy.md | 34 -- worlds/rogue_legacy/docs/rogue-legacy_en.md | 35 -- worlds/rogue_legacy/test/TestUnique.py | 23 -- worlds/rogue_legacy/test/__init__.py | 5 - 25 files changed, 1 insertion(+), 1552 deletions(-) delete mode 100644 worlds/clique/Items.py delete mode 100644 worlds/clique/Locations.py delete mode 100644 worlds/clique/Options.py delete mode 100644 worlds/clique/Regions.py delete mode 100644 worlds/clique/Rules.py delete mode 100644 worlds/clique/__init__.py delete mode 100644 worlds/clique/docs/de_Clique.md delete mode 100644 worlds/clique/docs/en_Clique.md delete mode 100644 worlds/clique/docs/guide_de.md delete mode 100644 worlds/clique/docs/guide_en.md delete mode 100644 worlds/rogue_legacy/Items.py delete mode 100644 worlds/rogue_legacy/Locations.py delete mode 100644 worlds/rogue_legacy/Options.py delete mode 100644 worlds/rogue_legacy/Presets.py delete mode 100644 worlds/rogue_legacy/Regions.py delete mode 100644 worlds/rogue_legacy/Rules.py delete mode 100644 worlds/rogue_legacy/__init__.py delete mode 100644 worlds/rogue_legacy/docs/en_Rogue Legacy.md delete mode 100644 worlds/rogue_legacy/docs/rogue-legacy_en.md delete mode 100644 worlds/rogue_legacy/test/TestUnique.py delete mode 100644 worlds/rogue_legacy/test/__init__.py diff --git a/README.md b/README.md index afad4b15f0b7..29b6206a00d8 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ Currently, the following games are supported: * Super Metroid * Secret of Evermore * Final Fantasy -* Rogue Legacy * VVVVVV * Raft * Super Mario 64 @@ -41,7 +40,6 @@ Currently, the following games are supported: * The Messenger * Kingdom Hearts 2 * The Legend of Zelda: Link's Awakening DX -* Clique * Adventure * DLC Quest * Noita diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index 4bdd49b62958..3104200a6c9d 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -48,9 +48,6 @@ # Civilization VI /worlds/civ6/ @hesto2 -# Clique -/worlds/clique/ @ThePhar - # Dark Souls III /worlds/dark_souls_3/ @Marechal-L @nex3 @@ -148,9 +145,6 @@ # Raft /worlds/raft/ @SunnyBat -# Rogue Legacy -/worlds/rogue_legacy/ @ThePhar - # Risk of Rain 2 /worlds/ror2/ @kindasneaki diff --git a/docs/network diagram/network diagram.md b/docs/network diagram/network diagram.md index 0e31eaa3e4ca..2d0a1174f545 100644 --- a/docs/network diagram/network diagram.md +++ b/docs/network diagram/network diagram.md @@ -125,10 +125,8 @@ flowchart LR NM[Mod with Archipelago.MultiClient.Net] subgraph FNA/XNA TS[Timespinner] - RL[Rogue Legacy] end NM <-- TsRandomizer --> TS - NM <-- RogueLegacyRandomizer --> RL subgraph Unity ROR[Risk of Rain 2] SN[Subnautica] @@ -177,4 +175,4 @@ flowchart LR FMOD <--> FMAPI end CC <-- Integrated --> FC -``` \ No newline at end of file +``` diff --git a/setup.py b/setup.py index 959746717a17..cd1b1e87107d 100644 --- a/setup.py +++ b/setup.py @@ -63,7 +63,6 @@ "Adventure", "ArchipIDLE", "Archipelago", - "Clique", "Lufia II Ancient Cave", "Meritous", "Ocarina of Time", diff --git a/worlds/clique/Items.py b/worlds/clique/Items.py deleted file mode 100644 index 81e2540bacc0..000000000000 --- a/worlds/clique/Items.py +++ /dev/null @@ -1,38 +0,0 @@ -from typing import Callable, Dict, NamedTuple, Optional, TYPE_CHECKING - -from BaseClasses import Item, ItemClassification - -if TYPE_CHECKING: - from . import CliqueWorld - - -class CliqueItem(Item): - game = "Clique" - - -class CliqueItemData(NamedTuple): - code: Optional[int] = None - type: ItemClassification = ItemClassification.filler - can_create: Callable[["CliqueWorld"], bool] = lambda world: True - - -item_data_table: Dict[str, CliqueItemData] = { - "Feeling of Satisfaction": CliqueItemData( - code=69696969, - type=ItemClassification.progression, - ), - "Button Activation": CliqueItemData( - code=69696968, - type=ItemClassification.progression, - can_create=lambda world: world.options.hard_mode, - ), - "A Cool Filler Item (No Satisfaction Guaranteed)": CliqueItemData( - code=69696967, - can_create=lambda world: False # Only created from `get_filler_item_name`. - ), - "The Urge to Push": CliqueItemData( - type=ItemClassification.progression, - ), -} - -item_table = {name: data.code for name, data in item_data_table.items() if data.code is not None} diff --git a/worlds/clique/Locations.py b/worlds/clique/Locations.py deleted file mode 100644 index 900b497eb4eb..000000000000 --- a/worlds/clique/Locations.py +++ /dev/null @@ -1,37 +0,0 @@ -from typing import Callable, Dict, NamedTuple, Optional, TYPE_CHECKING - -from BaseClasses import Location - -if TYPE_CHECKING: - from . import CliqueWorld - - -class CliqueLocation(Location): - game = "Clique" - - -class CliqueLocationData(NamedTuple): - region: str - address: Optional[int] = None - can_create: Callable[["CliqueWorld"], bool] = lambda world: True - locked_item: Optional[str] = None - - -location_data_table: Dict[str, CliqueLocationData] = { - "The Big Red Button": CliqueLocationData( - region="The Button Realm", - address=69696969, - ), - "The Item on the Desk": CliqueLocationData( - region="The Button Realm", - address=69696968, - can_create=lambda world: world.options.hard_mode, - ), - "In the Player's Mind": CliqueLocationData( - region="The Button Realm", - locked_item="The Urge to Push", - ), -} - -location_table = {name: data.address for name, data in location_data_table.items() if data.address is not None} -locked_locations = {name: data for name, data in location_data_table.items() if data.locked_item} diff --git a/worlds/clique/Options.py b/worlds/clique/Options.py deleted file mode 100644 index d88a1289903c..000000000000 --- a/worlds/clique/Options.py +++ /dev/null @@ -1,34 +0,0 @@ -from dataclasses import dataclass -from Options import Choice, Toggle, PerGameCommonOptions, StartInventoryPool - - -class HardMode(Toggle): - """Only for the most masochistically inclined... Requires button activation!""" - display_name = "Hard Mode" - - -class ButtonColor(Choice): - """Customize your button! Now available in 12 unique colors.""" - display_name = "Button Color" - option_red = 0 - option_orange = 1 - option_yellow = 2 - option_green = 3 - option_cyan = 4 - option_blue = 5 - option_magenta = 6 - option_purple = 7 - option_pink = 8 - option_brown = 9 - option_white = 10 - option_black = 11 - - -@dataclass -class CliqueOptions(PerGameCommonOptions): - color: ButtonColor - hard_mode: HardMode - start_inventory_from_pool: StartInventoryPool - - # DeathLink is always on. Always. - # death_link: DeathLink diff --git a/worlds/clique/Regions.py b/worlds/clique/Regions.py deleted file mode 100644 index 04e317067fa1..000000000000 --- a/worlds/clique/Regions.py +++ /dev/null @@ -1,11 +0,0 @@ -from typing import Dict, List, NamedTuple - - -class CliqueRegionData(NamedTuple): - connecting_regions: List[str] = [] - - -region_data_table: Dict[str, CliqueRegionData] = { - "Menu": CliqueRegionData(["The Button Realm"]), - "The Button Realm": CliqueRegionData(), -} diff --git a/worlds/clique/Rules.py b/worlds/clique/Rules.py deleted file mode 100644 index 63ecd4e9e17c..000000000000 --- a/worlds/clique/Rules.py +++ /dev/null @@ -1,13 +0,0 @@ -from typing import Callable, TYPE_CHECKING - -from BaseClasses import CollectionState - -if TYPE_CHECKING: - from . import CliqueWorld - - -def get_button_rule(world: "CliqueWorld") -> Callable[[CollectionState], bool]: - if world.options.hard_mode: - return lambda state: state.has("Button Activation", world.player) - - return lambda state: True diff --git a/worlds/clique/__init__.py b/worlds/clique/__init__.py deleted file mode 100644 index 70777c51b00c..000000000000 --- a/worlds/clique/__init__.py +++ /dev/null @@ -1,102 +0,0 @@ -from typing import List, Dict, Any - -from BaseClasses import Region, Tutorial -from worlds.AutoWorld import WebWorld, World -from .Items import CliqueItem, item_data_table, item_table -from .Locations import CliqueLocation, location_data_table, location_table, locked_locations -from .Options import CliqueOptions -from .Regions import region_data_table -from .Rules import get_button_rule - - -class CliqueWebWorld(WebWorld): - theme = "partyTime" - - setup_en = Tutorial( - tutorial_name="Start Guide", - description="A guide to playing Clique.", - language="English", - file_name="guide_en.md", - link="guide/en", - authors=["Phar"] - ) - - setup_de = Tutorial( - tutorial_name="Anleitung zum Anfangen", - description="Eine Anleitung um Clique zu spielen.", - language="Deutsch", - file_name="guide_de.md", - link="guide/de", - authors=["Held_der_Zeit"] - ) - - tutorials = [setup_en, setup_de] - game_info_languages = ["en", "de"] - - -class CliqueWorld(World): - """The greatest game of all time.""" - - game = "Clique" - web = CliqueWebWorld() - options: CliqueOptions - options_dataclass = CliqueOptions - location_name_to_id = location_table - item_name_to_id = item_table - - def create_item(self, name: str) -> CliqueItem: - return CliqueItem(name, item_data_table[name].type, item_data_table[name].code, self.player) - - def create_items(self) -> None: - item_pool: List[CliqueItem] = [] - for name, item in item_data_table.items(): - if item.code and item.can_create(self): - item_pool.append(self.create_item(name)) - - self.multiworld.itempool += item_pool - - def create_regions(self) -> None: - # Create regions. - for region_name in region_data_table.keys(): - region = Region(region_name, self.player, self.multiworld) - self.multiworld.regions.append(region) - - # Create locations. - for region_name, region_data in region_data_table.items(): - region = self.get_region(region_name) - region.add_locations({ - location_name: location_data.address for location_name, location_data in location_data_table.items() - if location_data.region == region_name and location_data.can_create(self) - }, CliqueLocation) - region.add_exits(region_data_table[region_name].connecting_regions) - - # Place locked locations. - for location_name, location_data in locked_locations.items(): - # Ignore locations we never created. - if not location_data.can_create(self): - continue - - locked_item = self.create_item(location_data_table[location_name].locked_item) - self.get_location(location_name).place_locked_item(locked_item) - - # Set priority location for the Big Red Button! - self.options.priority_locations.value.add("The Big Red Button") - - def get_filler_item_name(self) -> str: - return "A Cool Filler Item (No Satisfaction Guaranteed)" - - def set_rules(self) -> None: - button_rule = get_button_rule(self) - self.get_location("The Big Red Button").access_rule = button_rule - self.get_location("In the Player's Mind").access_rule = button_rule - - # Do not allow button activations on buttons. - self.get_location("The Big Red Button").item_rule = lambda item: item.name != "Button Activation" - - # Completion condition. - self.multiworld.completion_condition[self.player] = lambda state: state.has("The Urge to Push", self.player) - - def fill_slot_data(self) -> Dict[str, Any]: - return { - "color": self.options.color.current_key - } diff --git a/worlds/clique/docs/de_Clique.md b/worlds/clique/docs/de_Clique.md deleted file mode 100644 index cde0a23cf6fe..000000000000 --- a/worlds/clique/docs/de_Clique.md +++ /dev/null @@ -1,18 +0,0 @@ -# Clique - -## Was ist das für ein Spiel? - -~~Clique ist ein psychologisches Überlebens-Horror Spiel, in dem der Spieler der Versuchung wiederstehen muss große~~ -~~(rote) Knöpfe zu drücken.~~ - -Clique ist ein scherzhaftes Spiel, welches für Archipelago im März 2023 entwickelt wurde, um zu zeigen, wie einfach -es sein kann eine Welt für Archipelago zu entwicklen. Das Ziel des Spiels ist es den großen (standardmäßig) roten -Knopf zu drücken. Wenn ein Spieler auf dem `hard_mode` (schwieriger Modus) spielt, muss dieser warten bis jemand -anderes in der Multiworld den Knopf aktiviert, damit er gedrückt werden kann. - -Clique kann auf den meisten modernen, HTML5-fähigen Browsern gespielt werden. - -## Wo ist die Seite für die Einstellungen? - -Die [Seite für die Spielereinstellungen dieses Spiels](../player-options) enthält alle Optionen die man benötigt um -eine YAML-Datei zu konfigurieren und zu exportieren. diff --git a/worlds/clique/docs/en_Clique.md b/worlds/clique/docs/en_Clique.md deleted file mode 100644 index e9cb164fecbf..000000000000 --- a/worlds/clique/docs/en_Clique.md +++ /dev/null @@ -1,16 +0,0 @@ -# Clique - -## What is this game? - -~~Clique is a psychological survival horror game where a player must survive the temptation to press red buttons.~~ - -Clique is a joke game developed for Archipelago in March 2023 to showcase how easy it can be to develop a world for -Archipelago. The objective of the game is to press the big red button. If a player is playing on `hard_mode`, they must -wait for someone else in the multiworld to "activate" their button before they can press it. - -Clique can be played on most modern HTML5-capable browsers. - -## Where is the options page? - -The [player options page for this game](../player-options) contains all the options you need to configure -and export a config file. diff --git a/worlds/clique/docs/guide_de.md b/worlds/clique/docs/guide_de.md deleted file mode 100644 index 26e08dbbdd7e..000000000000 --- a/worlds/clique/docs/guide_de.md +++ /dev/null @@ -1,25 +0,0 @@ -# Clique Anleitung - -Nachdem dein Seed generiert wurde, gehe auf die Website von [Clique dem Spiel](http://clique.pharware.com/) und gib -Server-Daten, deinen Slot-Namen und ein Passwort (falls vorhanden) ein. Klicke dann auf "Connect" (Verbinden). - -Wenn du auf "Einfach" spielst, kannst du unbedenklich den Knopf drücken und deine "Befriedigung" erhalten. - -Wenn du auf "Schwer" spielst, ist es sehr wahrscheinlich, dass du warten musst bevor du dein Ziel erreichen kannst. -Glücklicherweise läuft Click auf den meißten großen Browsern, die HTML5 unterstützen. Das heißt du kannst Clique auf -deinem Handy starten und produktiv sein während du wartest! - -Falls du einige Ideen brauchst was du tun kannst, während du wartest bis der Knopf aktiviert wurde, versuche -(mindestens) eins der Folgenden: - -- Dein Zimmer aufräumen. -- Die Wäsche machen. -- Etwas Essen von einem X-Belieben Fast Food Restaruant holen. -- Das tägliche Wordle machen. -- ~~Deine Seele an **Phar** verkaufen.~~ -- Deine Hausaufgaben erledigen. -- Deine Post abholen. - - -~~Solltest du auf irgendwelche Probleme in diesem Spiel stoßen, solltest du keinesfalls nicht **thephar** auf~~ -~~Discord kontaktieren. *zwinker* *zwinker*~~ diff --git a/worlds/clique/docs/guide_en.md b/worlds/clique/docs/guide_en.md deleted file mode 100644 index c3c113fe9056..000000000000 --- a/worlds/clique/docs/guide_en.md +++ /dev/null @@ -1,22 +0,0 @@ -# Clique Start Guide - -After rolling your seed, go to the [Clique Game](http://clique.pharware.com/) site and enter the server details, your -slot name, and a room password if one is required. Then click "Connect". - -If you're playing on "easy mode", just click the button and receive "Satisfaction". - -If you're playing on "hard mode", you may need to wait for activation before you can complete your objective. Luckily, -Clique runs in most major browsers that support HTML5, so you can load Clique on your phone and be productive while -you wait! - -If you need some ideas for what to do while waiting for button activation, give the following a try: - -- Clean your room. -- Wash the dishes. -- Get some food from a non-descript fast food restaurant. -- Do the daily Wordle. -- ~~Sell your soul to Phar.~~ -- Do your school work. - - -~~If you run into any issues with this game, definitely do not contact **thephar** on discord. *wink* *wink*~~ diff --git a/worlds/rogue_legacy/Items.py b/worlds/rogue_legacy/Items.py deleted file mode 100644 index efa24df05ac2..000000000000 --- a/worlds/rogue_legacy/Items.py +++ /dev/null @@ -1,111 +0,0 @@ -from typing import Dict, NamedTuple, Optional - -from BaseClasses import Item, ItemClassification - - -class RLItem(Item): - game: str = "Rogue Legacy" - - -class RLItemData(NamedTuple): - category: str - code: Optional[int] = None - classification: ItemClassification = ItemClassification.filler - max_quantity: int = 1 - weight: int = 1 - - -def get_items_by_category(category: str) -> Dict[str, RLItemData]: - item_dict: Dict[str, RLItemData] = {} - for name, data in item_table.items(): - if data.category == category: - item_dict.setdefault(name, data) - - return item_dict - - -item_table: Dict[str, RLItemData] = { - # Vendors - "Blacksmith": RLItemData("Vendors", 90_000, ItemClassification.progression), - "Enchantress": RLItemData("Vendors", 90_001, ItemClassification.progression), - "Architect": RLItemData("Vendors", 90_002, ItemClassification.useful), - - # Classes - "Progressive Knights": RLItemData("Classes", 90_003, ItemClassification.useful, 2), - "Progressive Mages": RLItemData("Classes", 90_004, ItemClassification.useful, 2), - "Progressive Barbarians": RLItemData("Classes", 90_005, ItemClassification.useful, 2), - "Progressive Knaves": RLItemData("Classes", 90_006, ItemClassification.useful, 2), - "Progressive Shinobis": RLItemData("Classes", 90_007, ItemClassification.useful, 2), - "Progressive Miners": RLItemData("Classes", 90_008, ItemClassification.useful, 2), - "Progressive Liches": RLItemData("Classes", 90_009, ItemClassification.useful, 2), - "Progressive Spellthieves": RLItemData("Classes", 90_010, ItemClassification.useful, 2), - "Dragons": RLItemData("Classes", 90_096, ItemClassification.progression), - "Traitors": RLItemData("Classes", 90_097, ItemClassification.useful), - - # Skills - "Health Up": RLItemData("Skills", 90_013, ItemClassification.progression_skip_balancing, 15), - "Mana Up": RLItemData("Skills", 90_014, ItemClassification.progression_skip_balancing, 15), - "Attack Up": RLItemData("Skills", 90_015, ItemClassification.progression_skip_balancing, 15), - "Magic Damage Up": RLItemData("Skills", 90_016, ItemClassification.progression_skip_balancing, 15), - "Armor Up": RLItemData("Skills", 90_017, ItemClassification.useful, 15), - "Equip Up": RLItemData("Skills", 90_018, ItemClassification.useful, 5), - "Crit Chance Up": RLItemData("Skills", 90_019, ItemClassification.useful, 5), - "Crit Damage Up": RLItemData("Skills", 90_020, ItemClassification.useful, 5), - "Down Strike Up": RLItemData("Skills", 90_021), - "Gold Gain Up": RLItemData("Skills", 90_022), - "Potion Efficiency Up": RLItemData("Skills", 90_023), - "Invulnerability Time Up": RLItemData("Skills", 90_024), - "Mana Cost Down": RLItemData("Skills", 90_025), - "Death Defiance": RLItemData("Skills", 90_026, ItemClassification.useful), - "Haggling": RLItemData("Skills", 90_027, ItemClassification.useful), - "Randomize Children": RLItemData("Skills", 90_028, ItemClassification.useful), - - # Blueprints - "Progressive Blueprints": RLItemData("Blueprints", 90_055, ItemClassification.useful, 15), - "Squire Blueprints": RLItemData("Blueprints", 90_040, ItemClassification.useful), - "Silver Blueprints": RLItemData("Blueprints", 90_041, ItemClassification.useful), - "Guardian Blueprints": RLItemData("Blueprints", 90_042, ItemClassification.useful), - "Imperial Blueprints": RLItemData("Blueprints", 90_043, ItemClassification.useful), - "Royal Blueprints": RLItemData("Blueprints", 90_044, ItemClassification.useful), - "Knight Blueprints": RLItemData("Blueprints", 90_045, ItemClassification.useful), - "Ranger Blueprints": RLItemData("Blueprints", 90_046, ItemClassification.useful), - "Sky Blueprints": RLItemData("Blueprints", 90_047, ItemClassification.useful), - "Dragon Blueprints": RLItemData("Blueprints", 90_048, ItemClassification.useful), - "Slayer Blueprints": RLItemData("Blueprints", 90_049, ItemClassification.useful), - "Blood Blueprints": RLItemData("Blueprints", 90_050, ItemClassification.useful), - "Sage Blueprints": RLItemData("Blueprints", 90_051, ItemClassification.useful), - "Retribution Blueprints": RLItemData("Blueprints", 90_052, ItemClassification.useful), - "Holy Blueprints": RLItemData("Blueprints", 90_053, ItemClassification.useful), - "Dark Blueprints": RLItemData("Blueprints", 90_054, ItemClassification.useful), - - # Runes - "Vault Runes": RLItemData("Runes", 90_060, ItemClassification.progression), - "Sprint Runes": RLItemData("Runes", 90_061, ItemClassification.progression), - "Vampire Runes": RLItemData("Runes", 90_062, ItemClassification.useful), - "Sky Runes": RLItemData("Runes", 90_063, ItemClassification.progression), - "Siphon Runes": RLItemData("Runes", 90_064, ItemClassification.useful), - "Retaliation Runes": RLItemData("Runes", 90_065), - "Bounty Runes": RLItemData("Runes", 90_066), - "Haste Runes": RLItemData("Runes", 90_067), - "Curse Runes": RLItemData("Runes", 90_068), - "Grace Runes": RLItemData("Runes", 90_069), - "Balance Runes": RLItemData("Runes", 90_070, ItemClassification.useful), - - # Junk - "Triple Stat Increase": RLItemData("Filler", 90_030, weight=6), - "1000 Gold": RLItemData("Filler", 90_031, weight=3), - "3000 Gold": RLItemData("Filler", 90_032, weight=2), - "5000 Gold": RLItemData("Filler", 90_033, weight=1), -} - -event_item_table: Dict[str, RLItemData] = { - "Defeat Khidr": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Alexander": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Ponce de Leon": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Herodotus": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Neo Khidr": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Alexander IV": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Ponce de Freon": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Astrodotus": RLItemData("Event", classification=ItemClassification.progression), - "Defeat The Fountain": RLItemData("Event", classification=ItemClassification.progression), -} diff --git a/worlds/rogue_legacy/Locations.py b/worlds/rogue_legacy/Locations.py deleted file mode 100644 index db9e1db3b09a..000000000000 --- a/worlds/rogue_legacy/Locations.py +++ /dev/null @@ -1,94 +0,0 @@ -from typing import Dict, NamedTuple, Optional - -from BaseClasses import Location - - -class RLLocation(Location): - game: str = "Rogue Legacy" - - -class RLLocationData(NamedTuple): - category: str - code: Optional[int] = None - - -def get_locations_by_category(category: str) -> Dict[str, RLLocationData]: - location_dict: Dict[str, RLLocationData] = {} - for name, data in location_table.items(): - if data.category == category: - location_dict.setdefault(name, data) - - return location_dict - - -location_table: Dict[str, RLLocationData] = { - # Manor Renovation - "Manor - Ground Road": RLLocationData("Manor", 91_000), - "Manor - Main Base": RLLocationData("Manor", 91_001), - "Manor - Main Bottom Window": RLLocationData("Manor", 91_002), - "Manor - Main Top Window": RLLocationData("Manor", 91_003), - "Manor - Main Rooftop": RLLocationData("Manor", 91_004), - "Manor - Left Wing Base": RLLocationData("Manor", 91_005), - "Manor - Left Wing Window": RLLocationData("Manor", 91_006), - "Manor - Left Wing Rooftop": RLLocationData("Manor", 91_007), - "Manor - Left Big Base": RLLocationData("Manor", 91_008), - "Manor - Left Big Upper 1": RLLocationData("Manor", 91_009), - "Manor - Left Big Upper 2": RLLocationData("Manor", 91_010), - "Manor - Left Big Windows": RLLocationData("Manor", 91_011), - "Manor - Left Big Rooftop": RLLocationData("Manor", 91_012), - "Manor - Left Far Base": RLLocationData("Manor", 91_013), - "Manor - Left Far Roof": RLLocationData("Manor", 91_014), - "Manor - Left Extension": RLLocationData("Manor", 91_015), - "Manor - Left Tree 1": RLLocationData("Manor", 91_016), - "Manor - Left Tree 2": RLLocationData("Manor", 91_017), - "Manor - Right Wing Base": RLLocationData("Manor", 91_018), - "Manor - Right Wing Window": RLLocationData("Manor", 91_019), - "Manor - Right Wing Rooftop": RLLocationData("Manor", 91_020), - "Manor - Right Big Base": RLLocationData("Manor", 91_021), - "Manor - Right Big Upper": RLLocationData("Manor", 91_022), - "Manor - Right Big Rooftop": RLLocationData("Manor", 91_023), - "Manor - Right High Base": RLLocationData("Manor", 91_024), - "Manor - Right High Upper": RLLocationData("Manor", 91_025), - "Manor - Right High Tower": RLLocationData("Manor", 91_026), - "Manor - Right Extension": RLLocationData("Manor", 91_027), - "Manor - Right Tree": RLLocationData("Manor", 91_028), - "Manor - Observatory Base": RLLocationData("Manor", 91_029), - "Manor - Observatory Telescope": RLLocationData("Manor", 91_030), - - # Boss Rewards - "Castle Hamson Boss Reward": RLLocationData("Boss", 91_100), - "Forest Abkhazia Boss Reward": RLLocationData("Boss", 91_102), - "The Maya Boss Reward": RLLocationData("Boss", 91_104), - "Land of Darkness Boss Reward": RLLocationData("Boss", 91_106), - - # Special Locations - "Jukebox": RLLocationData("Special", 91_200), - "Painting": RLLocationData("Special", 91_201), - "Cheapskate Elf's Game": RLLocationData("Special", 91_202), - "Carnival": RLLocationData("Special", 91_203), - - # Diaries - **{f"Diary {i+1}": RLLocationData("Diary", 91_300 + i) for i in range(0, 25)}, - - # Chests - **{f"Castle Hamson - Chest {i+1}": RLLocationData("Chests", 91_600 + i) for i in range(0, 50)}, - **{f"Forest Abkhazia - Chest {i+1}": RLLocationData("Chests", 91_700 + i) for i in range(0, 50)}, - **{f"The Maya - Chest {i+1}": RLLocationData("Chests", 91_800 + i) for i in range(0, 50)}, - **{f"Land of Darkness - Chest {i+1}": RLLocationData("Chests", 91_900 + i) for i in range(0, 50)}, - **{f"Chest {i+1}": RLLocationData("Chests", 92_000 + i) for i in range(0, 200)}, - - # Fairy Chests - **{f"Castle Hamson - Fairy Chest {i+1}": RLLocationData("Fairies", 91_400 + i) for i in range(0, 15)}, - **{f"Forest Abkhazia - Fairy Chest {i+1}": RLLocationData("Fairies", 91_450 + i) for i in range(0, 15)}, - **{f"The Maya - Fairy Chest {i+1}": RLLocationData("Fairies", 91_500 + i) for i in range(0, 15)}, - **{f"Land of Darkness - Fairy Chest {i+1}": RLLocationData("Fairies", 91_550 + i) for i in range(0, 15)}, - **{f"Fairy Chest {i+1}": RLLocationData("Fairies", 92_200 + i) for i in range(0, 60)}, -} - -event_location_table: Dict[str, RLLocationData] = { - "Castle Hamson Boss Room": RLLocationData("Event"), - "Forest Abkhazia Boss Room": RLLocationData("Event"), - "The Maya Boss Room": RLLocationData("Event"), - "Land of Darkness Boss Room": RLLocationData("Event"), - "Fountain Room": RLLocationData("Event"), -} diff --git a/worlds/rogue_legacy/Options.py b/worlds/rogue_legacy/Options.py deleted file mode 100644 index 139ff6094427..000000000000 --- a/worlds/rogue_legacy/Options.py +++ /dev/null @@ -1,387 +0,0 @@ -from Options import Choice, Range, Toggle, DeathLink, DefaultOnToggle, OptionSet, PerGameCommonOptions - -from dataclasses import dataclass - - -class StartingGender(Choice): - """ - Determines the gender of your initial 'Sir Lee' character. - """ - display_name = "Starting Gender" - option_sir = 0 - option_lady = 1 - alias_male = 0 - alias_female = 1 - default = "random" - - -class StartingClass(Choice): - """ - Determines the starting class of your initial 'Sir Lee' character. - """ - display_name = "Starting Class" - option_knight = 0 - option_mage = 1 - option_barbarian = 2 - option_knave = 3 - option_shinobi = 4 - option_miner = 5 - option_spellthief = 6 - option_lich = 7 - default = 0 - - -class NewGamePlus(Choice): - """ - Puts the castle in new game plus mode which vastly increases enemy level, but increases gold gain by 50%. Not - recommended for those inexperienced to Rogue Legacy! - """ - display_name = "New Game Plus" - option_normal = 0 - option_new_game_plus = 1 - option_new_game_plus_2 = 2 - alias_hard = 1 - alias_brutal = 2 - default = 0 - - -class LevelScaling(Range): - """ - A percentage modifier for scaling enemy level as you continue throughout the castle. 100 means enemies will have - 100% level scaling (normal). Setting this too high will result in enemies with absurdly high levels, you have been - warned. - """ - display_name = "Enemy Level Scaling Percentage" - range_start = 1 - range_end = 300 - default = 100 - - -class FairyChestsPerZone(Range): - """ - Determines the number of Fairy Chests in a given zone that contain items. After these have been checked, only stat - bonuses can be found in Fairy Chests. - """ - display_name = "Fairy Chests Per Zone" - range_start = 0 - range_end = 15 - default = 1 - - -class ChestsPerZone(Range): - """ - Determines the number of Non-Fairy Chests in a given zone that contain items. After these have been checked, only - gold or stat bonuses can be found in Chests. - """ - display_name = "Chests Per Zone" - range_start = 20 - range_end = 50 - default = 20 - - -class UniversalFairyChests(Toggle): - """ - Determines if fairy chests should be combined into one pool instead of per zone, similar to Risk of Rain 2. - """ - display_name = "Universal Fairy Chests" - - -class UniversalChests(Toggle): - """ - Determines if non-fairy chests should be combined into one pool instead of per zone, similar to Risk of Rain 2. - """ - display_name = "Universal Non-Fairy Chests" - - -class Vendors(Choice): - """ - Determines where to place the Blacksmith and Enchantress unlocks in logic (or start with them unlocked). - """ - display_name = "Vendors" - option_start_unlocked = 0 - option_early = 1 - option_normal = 2 - option_anywhere = 3 - default = 1 - - -class Architect(Choice): - """ - Determines where the Architect sits in the item pool. - """ - display_name = "Architect" - option_start_unlocked = 0 - option_early = 1 - option_anywhere = 2 - option_disabled = 3 - alias_normal = 2 - default = 2 - - -class ArchitectFee(Range): - """ - Determines how large of a percentage the architect takes from the player when utilizing his services. 100 means he - takes all your gold. 0 means his services are free. - """ - display_name = "Architect Fee Percentage" - range_start = 0 - range_end = 100 - default = 40 - - -class DisableCharon(Toggle): - """ - Prevents Charon from taking your money when you re-enter the castle. Also removes Haggling from the Item Pool. - """ - display_name = "Disable Charon" - - -class RequirePurchasing(DefaultOnToggle): - """ - Determines where you will be required to purchase equipment and runes from the Blacksmith and Enchantress before - equipping them. If you disable require purchasing, Manor Renovations are scaled to take this into account. - """ - display_name = "Require Purchasing" - - -class ProgressiveBlueprints(Toggle): - """ - Instead of shuffling blueprints randomly into the pool, blueprint unlocks are progressively unlocked. You would get - Squire first, then Knight, etc., until finally Dark. - """ - display_name = "Progressive Blueprints" - - -class GoldGainMultiplier(Choice): - """ - Adjusts the multiplier for gaining gold from all sources. - """ - display_name = "Gold Gain Multiplier" - option_normal = 0 - option_quarter = 1 - option_half = 2 - option_double = 3 - option_quadruple = 4 - default = 0 - - -class NumberOfChildren(Range): - """ - Determines the number of offspring you can choose from on the lineage screen after a death. - """ - display_name = "Number of Children" - range_start = 1 - range_end = 5 - default = 3 - - -class AdditionalLadyNames(OptionSet): - """ - Set of additional names your potential offspring can have. If Allow Default Names is disabled, this is the only list - of names your children can have. The first value will also be your initial character's name depending on Starting - Gender. - """ - display_name = "Additional Lady Names" - -class AdditionalSirNames(OptionSet): - """ - Set of additional names your potential offspring can have. If Allow Default Names is disabled, this is the only list - of names your children can have. The first value will also be your initial character's name depending on Starting - Gender. - """ - display_name = "Additional Sir Names" - - -class AllowDefaultNames(DefaultOnToggle): - """ - Determines if the default names defined in the vanilla game are allowed to be used. Warning: Your world will not - generate if the number of Additional Names defined is less than the Number of Children value. - """ - display_name = "Allow Default Names" - - -class CastleScaling(Range): - """ - Adjusts the scaling factor for how big a castle can be. Larger castles scale enemies quicker and also take longer - to generate. 100 means normal castle size. - """ - display_name = "Castle Size Scaling Percentage" - range_start = 50 - range_end = 300 - default = 100 - - -class ChallengeBossKhidr(Choice): - """ - Determines if Neo Khidr replaces Khidr in their boss room. - """ - display_name = "Khidr" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class ChallengeBossAlexander(Choice): - """ - Determines if Alexander the IV replaces Alexander in their boss room. - """ - display_name = "Alexander" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class ChallengeBossLeon(Choice): - """ - Determines if Ponce de Freon replaces Ponce de Leon in their boss room. - """ - display_name = "Ponce de Leon" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class ChallengeBossHerodotus(Choice): - """ - Determines if Astrodotus replaces Herodotus in their boss room. - """ - display_name = "Herodotus" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class HealthUpPool(Range): - """ - Determines the number of Health Ups in the item pool. - """ - display_name = "Health Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class ManaUpPool(Range): - """ - Determines the number of Mana Ups in the item pool. - """ - display_name = "Mana Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class AttackUpPool(Range): - """ - Determines the number of Attack Ups in the item pool. - """ - display_name = "Attack Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class MagicDamageUpPool(Range): - """ - Determines the number of Magic Damage Ups in the item pool. - """ - display_name = "Magic Damage Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class ArmorUpPool(Range): - """ - Determines the number of Armor Ups in the item pool. - """ - display_name = "Armor Up Pool" - range_start = 0 - range_end = 10 - default = 10 - - -class EquipUpPool(Range): - """ - Determines the number of Equip Ups in the item pool. - """ - display_name = "Equip Up Pool" - range_start = 0 - range_end = 10 - default = 10 - - -class CritChanceUpPool(Range): - """ - Determines the number of Crit Chance Ups in the item pool. - """ - display_name = "Crit Chance Up Pool" - range_start = 0 - range_end = 5 - default = 5 - - -class CritDamageUpPool(Range): - """ - Determines the number of Crit Damage Ups in the item pool. - """ - display_name = "Crit Damage Up Pool" - range_start = 0 - range_end = 5 - default = 5 - - -class FreeDiaryOnGeneration(DefaultOnToggle): - """ - Allows the player to get a free diary check every time they regenerate the castle in the starting room. - """ - display_name = "Free Diary On Generation" - - -class AvailableClasses(OptionSet): - """ - List of classes that will be in the item pool to find. The upgraded form of the class will be added with it. - The upgraded form of your starting class will be available regardless. - """ - display_name = "Available Classes" - default = frozenset( - {"Knight", "Mage", "Barbarian", "Knave", "Shinobi", "Miner", "Spellthief", "Lich", "Dragon", "Traitor"} - ) - valid_keys = {"Knight", "Mage", "Barbarian", "Knave", "Shinobi", "Miner", "Spellthief", "Lich", "Dragon", "Traitor"} - - -@dataclass -class RLOptions(PerGameCommonOptions): - starting_gender: StartingGender - starting_class: StartingClass - available_classes: AvailableClasses - new_game_plus: NewGamePlus - fairy_chests_per_zone: FairyChestsPerZone - chests_per_zone: ChestsPerZone - universal_fairy_chests: UniversalFairyChests - universal_chests: UniversalChests - vendors: Vendors - architect: Architect - architect_fee: ArchitectFee - disable_charon: DisableCharon - require_purchasing: RequirePurchasing - progressive_blueprints: ProgressiveBlueprints - gold_gain_multiplier: GoldGainMultiplier - number_of_children: NumberOfChildren - free_diary_on_generation: FreeDiaryOnGeneration - khidr: ChallengeBossKhidr - alexander: ChallengeBossAlexander - leon: ChallengeBossLeon - herodotus: ChallengeBossHerodotus - health_pool: HealthUpPool - mana_pool: ManaUpPool - attack_pool: AttackUpPool - magic_damage_pool: MagicDamageUpPool - armor_pool: ArmorUpPool - equip_pool: EquipUpPool - crit_chance_pool: CritChanceUpPool - crit_damage_pool: CritDamageUpPool - allow_default_names: AllowDefaultNames - additional_lady_names: AdditionalLadyNames - additional_sir_names: AdditionalSirNames - death_link: DeathLink diff --git a/worlds/rogue_legacy/Presets.py b/worlds/rogue_legacy/Presets.py deleted file mode 100644 index 2dfeee64d8ca..000000000000 --- a/worlds/rogue_legacy/Presets.py +++ /dev/null @@ -1,61 +0,0 @@ -from typing import Any, Dict - -from .Options import Architect, GoldGainMultiplier, Vendors - -rl_options_presets: Dict[str, Dict[str, Any]] = { - # Example preset using only literal values. - "Unknown Fate": { - "progression_balancing": "random", - "accessibility": "random", - "starting_gender": "random", - "starting_class": "random", - "new_game_plus": "random", - "fairy_chests_per_zone": "random", - "chests_per_zone": "random", - "universal_fairy_chests": "random", - "universal_chests": "random", - "vendors": "random", - "architect": "random", - "architect_fee": "random", - "disable_charon": "random", - "require_purchasing": "random", - "progressive_blueprints": "random", - "gold_gain_multiplier": "random", - "number_of_children": "random", - "free_diary_on_generation": "random", - "khidr": "random", - "alexander": "random", - "leon": "random", - "herodotus": "random", - "health_pool": "random", - "mana_pool": "random", - "attack_pool": "random", - "magic_damage_pool": "random", - "armor_pool": "random", - "equip_pool": "random", - "crit_chance_pool": "random", - "crit_damage_pool": "random", - "allow_default_names": True, - "death_link": "random", - }, - # A preset I actually use, using some literal values and some from the option itself. - "Limited Potential": { - "progression_balancing": "disabled", - "fairy_chests_per_zone": 2, - "starting_class": "random", - "chests_per_zone": 30, - "vendors": Vendors.option_normal, - "architect": Architect.option_disabled, - "gold_gain_multiplier": GoldGainMultiplier.option_half, - "number_of_children": 2, - "free_diary_on_generation": False, - "health_pool": 10, - "mana_pool": 10, - "attack_pool": 10, - "magic_damage_pool": 10, - "armor_pool": 5, - "equip_pool": 10, - "crit_chance_pool": 5, - "crit_damage_pool": 5, - } -} diff --git a/worlds/rogue_legacy/Regions.py b/worlds/rogue_legacy/Regions.py deleted file mode 100644 index 61b0ef73ec78..000000000000 --- a/worlds/rogue_legacy/Regions.py +++ /dev/null @@ -1,114 +0,0 @@ -from typing import Dict, List, NamedTuple, Optional, TYPE_CHECKING - -from BaseClasses import MultiWorld, Region, Entrance -from .Locations import RLLocation, location_table, get_locations_by_category - -if TYPE_CHECKING: - from . import RLWorld - - -class RLRegionData(NamedTuple): - locations: Optional[List[str]] - region_exits: Optional[List[str]] - - -def create_regions(world: "RLWorld"): - regions: Dict[str, RLRegionData] = { - "Menu": RLRegionData(None, ["Castle Hamson"]), - "The Manor": RLRegionData([], []), - "Castle Hamson": RLRegionData([], ["Forest Abkhazia", "The Maya", "Land of Darkness", - "The Fountain Room", "The Manor"]), - "Forest Abkhazia": RLRegionData([], []), - "The Maya": RLRegionData([], []), - "Land of Darkness": RLRegionData([], []), - "The Fountain Room": RLRegionData([], None), - } - - # Artificially stagger diary spheres for progression. - for diary in range(0, 25): - region: str - if 0 <= diary < 6: - region = "Castle Hamson" - elif 6 <= diary < 12: - region = "Forest Abkhazia" - elif 12 <= diary < 18: - region = "The Maya" - elif 18 <= diary < 24: - region = "Land of Darkness" - else: - region = "The Fountain Room" - regions[region].locations.append(f"Diary {diary + 1}") - - # Manor & Special - for manor in get_locations_by_category("Manor").keys(): - regions["The Manor"].locations.append(manor) - for special in get_locations_by_category("Special").keys(): - regions["Castle Hamson"].locations.append(special) - - # Boss Rewards - regions["Castle Hamson"].locations.append("Castle Hamson Boss Reward") - regions["Forest Abkhazia"].locations.append("Forest Abkhazia Boss Reward") - regions["The Maya"].locations.append("The Maya Boss Reward") - regions["Land of Darkness"].locations.append("Land of Darkness Boss Reward") - - # Events - regions["Castle Hamson"].locations.append("Castle Hamson Boss Room") - regions["Forest Abkhazia"].locations.append("Forest Abkhazia Boss Room") - regions["The Maya"].locations.append("The Maya Boss Room") - regions["Land of Darkness"].locations.append("Land of Darkness Boss Room") - regions["The Fountain Room"].locations.append("Fountain Room") - - # Chests - chests = int(world.options.chests_per_zone) - for i in range(0, chests): - if world.options.universal_chests: - regions["Castle Hamson"].locations.append(f"Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Chest {i + 1 + chests}") - regions["The Maya"].locations.append(f"Chest {i + 1 + (chests * 2)}") - regions["Land of Darkness"].locations.append(f"Chest {i + 1 + (chests * 3)}") - else: - regions["Castle Hamson"].locations.append(f"Castle Hamson - Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Forest Abkhazia - Chest {i + 1}") - regions["The Maya"].locations.append(f"The Maya - Chest {i + 1}") - regions["Land of Darkness"].locations.append(f"Land of Darkness - Chest {i + 1}") - - # Fairy Chests - chests = int(world.options.fairy_chests_per_zone) - for i in range(0, chests): - if world.options.universal_fairy_chests: - regions["Castle Hamson"].locations.append(f"Fairy Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Fairy Chest {i + 1 + chests}") - regions["The Maya"].locations.append(f"Fairy Chest {i + 1 + (chests * 2)}") - regions["Land of Darkness"].locations.append(f"Fairy Chest {i + 1 + (chests * 3)}") - else: - regions["Castle Hamson"].locations.append(f"Castle Hamson - Fairy Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Forest Abkhazia - Fairy Chest {i + 1}") - regions["The Maya"].locations.append(f"The Maya - Fairy Chest {i + 1}") - regions["Land of Darkness"].locations.append(f"Land of Darkness - Fairy Chest {i + 1}") - - # Set up the regions correctly. - for name, data in regions.items(): - world.multiworld.regions.append(create_region(world.multiworld, world.player, name, data)) - - world.get_entrance("Castle Hamson").connect(world.get_region("Castle Hamson")) - world.get_entrance("The Manor").connect(world.get_region("The Manor")) - world.get_entrance("Forest Abkhazia").connect(world.get_region("Forest Abkhazia")) - world.get_entrance("The Maya").connect(world.get_region("The Maya")) - world.get_entrance("Land of Darkness").connect(world.get_region("Land of Darkness")) - world.get_entrance("The Fountain Room").connect(world.get_region("The Fountain Room")) - - -def create_region(multiworld: MultiWorld, player: int, name: str, data: RLRegionData): - region = Region(name, player, multiworld) - if data.locations: - for loc_name in data.locations: - loc_data = location_table.get(loc_name) - location = RLLocation(player, loc_name, loc_data.code if loc_data else None, region) - region.locations.append(location) - - if data.region_exits: - for exit in data.region_exits: - entrance = Entrance(player, exit, region) - region.exits.append(entrance) - - return region diff --git a/worlds/rogue_legacy/Rules.py b/worlds/rogue_legacy/Rules.py deleted file mode 100644 index 505bbdd63541..000000000000 --- a/worlds/rogue_legacy/Rules.py +++ /dev/null @@ -1,117 +0,0 @@ -from BaseClasses import CollectionState -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from . import RLWorld - - -def get_upgrade_total(world: "RLWorld") -> int: - return int(world.options.health_pool) + int(world.options.mana_pool) + \ - int(world.options.attack_pool) + int(world.options.magic_damage_pool) - - -def get_upgrade_count(state: CollectionState, player: int) -> int: - return state.count("Health Up", player) + state.count("Mana Up", player) + \ - state.count("Attack Up", player) + state.count("Magic Damage Up", player) - - -def has_vendors(state: CollectionState, player: int) -> bool: - return state.has_all({"Blacksmith", "Enchantress"}, player) - - -def has_upgrade_amount(state: CollectionState, player: int, amount: int) -> bool: - return get_upgrade_count(state, player) >= amount - - -def has_upgrades_percentage(state: CollectionState, world: "RLWorld", percentage: float) -> bool: - return has_upgrade_amount(state, world.player, round(get_upgrade_total(world) * (percentage / 100))) - - -def has_movement_rune(state: CollectionState, player: int) -> bool: - return state.has("Vault Runes", player) or state.has("Sprint Runes", player) or state.has("Sky Runes", player) - - -def has_fairy_progression(state: CollectionState, player: int) -> bool: - return state.has("Dragons", player) or (state.has("Enchantress", player) and has_movement_rune(state, player)) - - -def has_defeated_castle(state: CollectionState, player: int) -> bool: - return state.has("Defeat Khidr", player) or state.has("Defeat Neo Khidr", player) - - -def has_defeated_forest(state: CollectionState, player: int) -> bool: - return state.has("Defeat Alexander", player) or state.has("Defeat Alexander IV", player) - - -def has_defeated_tower(state: CollectionState, player: int) -> bool: - return state.has("Defeat Ponce de Leon", player) or state.has("Defeat Ponce de Freon", player) - - -def has_defeated_dungeon(state: CollectionState, player: int) -> bool: - return state.has("Defeat Herodotus", player) or state.has("Defeat Astrodotus", player) - - -def set_rules(world: "RLWorld", player: int): - # If 'vendors' are 'normal', then expect it to show up in the first half(ish) of the spheres. - if world.options.vendors == "normal": - world.get_location("Forest Abkhazia Boss Reward").access_rule = \ - lambda state: has_vendors(state, player) - - # Gate each manor location so everything isn't dumped into sphere 1. - manor_rules = { - "Defeat Khidr" if world.options.khidr == "vanilla" else "Defeat Neo Khidr": [ - "Manor - Left Wing Window", - "Manor - Left Wing Rooftop", - "Manor - Right Wing Window", - "Manor - Right Wing Rooftop", - "Manor - Left Big Base", - "Manor - Right Big Base", - "Manor - Left Tree 1", - "Manor - Left Tree 2", - "Manor - Right Tree", - ], - "Defeat Alexander" if world.options.alexander == "vanilla" else "Defeat Alexander IV": [ - "Manor - Left Big Upper 1", - "Manor - Left Big Upper 2", - "Manor - Left Big Windows", - "Manor - Left Big Rooftop", - "Manor - Left Far Base", - "Manor - Left Far Roof", - "Manor - Left Extension", - "Manor - Right Big Upper", - "Manor - Right Big Rooftop", - "Manor - Right Extension", - ], - "Defeat Ponce de Leon" if world.options.leon == "vanilla" else "Defeat Ponce de Freon": [ - "Manor - Right High Base", - "Manor - Right High Upper", - "Manor - Right High Tower", - "Manor - Observatory Base", - "Manor - Observatory Telescope", - ] - } - - # Set rules for manor locations. - for event, locations in manor_rules.items(): - for location in locations: - world.get_location(location).access_rule = lambda state: state.has(event, player) - - # Set rules for fairy chests to decrease headache of expectation to find non-movement fairy chests. - for fairy_location in [location for location in world.multiworld.get_locations(player) if "Fairy" in location.name]: - fairy_location.access_rule = lambda state: has_fairy_progression(state, player) - - # Region rules. - world.get_entrance("Forest Abkhazia").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 12.5) and has_defeated_castle(state, player) - - world.get_entrance("The Maya").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 25) and has_defeated_forest(state, player) - - world.get_entrance("Land of Darkness").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 37.5) and has_defeated_tower(state, player) - - world.get_entrance("The Fountain Room").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 50) and has_defeated_dungeon(state, player) - - # Win condition. - world.multiworld.completion_condition[player] = lambda state: state.has("Defeat The Fountain", player) diff --git a/worlds/rogue_legacy/__init__.py b/worlds/rogue_legacy/__init__.py deleted file mode 100644 index 7ffdd459db48..000000000000 --- a/worlds/rogue_legacy/__init__.py +++ /dev/null @@ -1,243 +0,0 @@ -from typing import List - -from BaseClasses import Tutorial -from worlds.AutoWorld import WebWorld, World -from .Items import RLItem, RLItemData, event_item_table, get_items_by_category, item_table -from .Locations import RLLocation, location_table -from .Options import RLOptions -from .Presets import rl_options_presets -from .Regions import create_regions -from .Rules import set_rules - - -class RLWeb(WebWorld): - theme = "stone" - tutorials = [Tutorial( - "Multiworld Setup Guide", - "A guide to setting up the Rogue Legacy Randomizer software on your computer. This guide covers single-player, " - "multiworld, and related software.", - "English", - "rogue-legacy_en.md", - "rogue-legacy/en", - ["Phar"] - )] - bug_report_page = "https://github.com/ThePhar/RogueLegacyRandomizer/issues/new?assignees=&labels=bug&template=" \ - "report-an-issue---.md&title=%5BIssue%5D" - options_presets = rl_options_presets - - -class RLWorld(World): - """ - Rogue Legacy is a genealogical rogue-"LITE" where anyone can be a hero. Each time you die, your child will succeed - you. Every child is unique. One child might be colorblind, another might have vertigo-- they could even be a dwarf. - But that's OK, because no one is perfect, and you don't have to be to succeed. - """ - game = "Rogue Legacy" - options_dataclass = RLOptions - options: RLOptions - topology_present = True - required_client_version = (0, 3, 5) - web = RLWeb() - - item_name_to_id = {name: data.code for name, data in item_table.items() if data.code is not None} - location_name_to_id = {name: data.code for name, data in location_table.items() if data.code is not None} - - def fill_slot_data(self) -> dict: - return self.options.as_dict(*[name for name in self.options_dataclass.type_hints.keys()]) - - def generate_early(self): - # Check validation of names. - additional_lady_names = len(self.options.additional_lady_names.value) - additional_sir_names = len(self.options.additional_sir_names.value) - if not self.options.allow_default_names: - if additional_lady_names < int(self.options.number_of_children): - raise Exception( - f"allow_default_names is off, but not enough names are defined in additional_lady_names. " - f"Expected {int(self.options.number_of_children)}, Got {additional_lady_names}") - - if additional_sir_names < int(self.options.number_of_children): - raise Exception( - f"allow_default_names is off, but not enough names are defined in additional_sir_names. " - f"Expected {int(self.options.number_of_children)}, Got {additional_sir_names}") - - def create_items(self): - item_pool: List[RLItem] = [] - total_locations = len(self.multiworld.get_unfilled_locations(self.player)) - for name, data in item_table.items(): - quantity = data.max_quantity - - # Architect - if name == "Architect": - if self.options.architect == "disabled": - continue - if self.options.architect == "start_unlocked": - self.multiworld.push_precollected(self.create_item(name)) - continue - if self.options.architect == "early": - self.multiworld.local_early_items[self.player]["Architect"] = 1 - - # Blacksmith and Enchantress - if name == "Blacksmith" or name == "Enchantress": - if self.options.vendors == "start_unlocked": - self.multiworld.push_precollected(self.create_item(name)) - continue - if self.options.vendors == "early": - self.multiworld.local_early_items[self.player]["Blacksmith"] = 1 - self.multiworld.local_early_items[self.player]["Enchantress"] = 1 - - # Haggling - if name == "Haggling" and self.options.disable_charon: - continue - - # Blueprints - if data.category == "Blueprints": - # No progressive blueprints if progressive_blueprints are disabled. - if name == "Progressive Blueprints" and not self.options.progressive_blueprints: - continue - # No distinct blueprints if progressive_blueprints are enabled. - elif name != "Progressive Blueprints" and self.options.progressive_blueprints: - continue - - # Classes - if data.category == "Classes": - if name == "Progressive Knights": - if "Knight" not in self.options.available_classes: - continue - - if self.options.starting_class == "knight": - quantity = 1 - if name == "Progressive Mages": - if "Mage" not in self.options.available_classes: - continue - - if self.options.starting_class == "mage": - quantity = 1 - if name == "Progressive Barbarians": - if "Barbarian" not in self.options.available_classes: - continue - - if self.options.starting_class == "barbarian": - quantity = 1 - if name == "Progressive Knaves": - if "Knave" not in self.options.available_classes: - continue - - if self.options.starting_class == "knave": - quantity = 1 - if name == "Progressive Miners": - if "Miner" not in self.options.available_classes: - continue - - if self.options.starting_class == "miner": - quantity = 1 - if name == "Progressive Shinobis": - if "Shinobi" not in self.options.available_classes: - continue - - if self.options.starting_class == "shinobi": - quantity = 1 - if name == "Progressive Liches": - if "Lich" not in self.options.available_classes: - continue - - if self.options.starting_class == "lich": - quantity = 1 - if name == "Progressive Spellthieves": - if "Spellthief" not in self.options.available_classes: - continue - - if self.options.starting_class == "spellthief": - quantity = 1 - if name == "Dragons": - if "Dragon" not in self.options.available_classes: - continue - if name == "Traitors": - if "Traitor" not in self.options.available_classes: - continue - - # Skills - if name == "Health Up": - quantity = self.options.health_pool.value - elif name == "Mana Up": - quantity = self.options.mana_pool.value - elif name == "Attack Up": - quantity = self.options.attack_pool.value - elif name == "Magic Damage Up": - quantity = self.options.magic_damage_pool.value - elif name == "Armor Up": - quantity = self.options.armor_pool.value - elif name == "Equip Up": - quantity = self.options.equip_pool.value - elif name == "Crit Chance Up": - quantity = self.options.crit_chance_pool.value - elif name == "Crit Damage Up": - quantity = self.options.crit_damage_pool.value - - # Ignore filler, it will be added in a later stage. - if data.category == "Filler": - continue - - item_pool += [self.create_item(name) for _ in range(0, quantity)] - - # Fill any empty locations with filler items. - while len(item_pool) < total_locations: - item_pool.append(self.create_item(self.get_filler_item_name())) - - self.multiworld.itempool += item_pool - - def get_filler_item_name(self) -> str: - fillers = get_items_by_category("Filler") - weights = [data.weight for data in fillers.values()] - return self.random.choices([filler for filler in fillers.keys()], weights, k=1)[0] - - def create_item(self, name: str) -> RLItem: - data = item_table[name] - return RLItem(name, data.classification, data.code, self.player) - - def create_event(self, name: str) -> RLItem: - data = event_item_table[name] - return RLItem(name, data.classification, data.code, self.player) - - def set_rules(self): - set_rules(self, self.player) - - def create_regions(self): - create_regions(self) - self._place_events() - - def _place_events(self): - # Fountain - self.multiworld.get_location("Fountain Room", self.player).place_locked_item( - self.create_event("Defeat The Fountain")) - - # Khidr / Neo Khidr - if self.options.khidr == "vanilla": - self.multiworld.get_location("Castle Hamson Boss Room", self.player).place_locked_item( - self.create_event("Defeat Khidr")) - else: - self.multiworld.get_location("Castle Hamson Boss Room", self.player).place_locked_item( - self.create_event("Defeat Neo Khidr")) - - # Alexander / Alexander IV - if self.options.alexander == "vanilla": - self.multiworld.get_location("Forest Abkhazia Boss Room", self.player).place_locked_item( - self.create_event("Defeat Alexander")) - else: - self.multiworld.get_location("Forest Abkhazia Boss Room", self.player).place_locked_item( - self.create_event("Defeat Alexander IV")) - - # Ponce de Leon / Ponce de Freon - if self.options.leon == "vanilla": - self.multiworld.get_location("The Maya Boss Room", self.player).place_locked_item( - self.create_event("Defeat Ponce de Leon")) - else: - self.multiworld.get_location("The Maya Boss Room", self.player).place_locked_item( - self.create_event("Defeat Ponce de Freon")) - - # Herodotus / Astrodotus - if self.options.herodotus == "vanilla": - self.multiworld.get_location("Land of Darkness Boss Room", self.player).place_locked_item( - self.create_event("Defeat Herodotus")) - else: - self.multiworld.get_location("Land of Darkness Boss Room", self.player).place_locked_item( - self.create_event("Defeat Astrodotus")) diff --git a/worlds/rogue_legacy/docs/en_Rogue Legacy.md b/worlds/rogue_legacy/docs/en_Rogue Legacy.md deleted file mode 100644 index dd203c73ac26..000000000000 --- a/worlds/rogue_legacy/docs/en_Rogue Legacy.md +++ /dev/null @@ -1,34 +0,0 @@ -# Rogue Legacy (PC) - -## Where is the options page? - -The [player options page for this game](../player-options) contains most of the options you need to -configure and export a config file. Some options can only be made in YAML, but an explanation can be found in the -[template yaml here](../../../static/generated/configs/Rogue%20Legacy.yaml). - -## What does randomization do to this game? - -Rogue Legacy Randomizer takes all the classes, skills, runes, and blueprints and spreads them out into chests, the manor -upgrade screen, bosses, and some special individual locations. The goal is to become powerful enough to defeat the four -zone bosses and then defeat The Fountain. - -## What items and locations get shuffled? -All the skill upgrades, class upgrades, runes packs, and equipment packs are shuffled in the manor upgrade screen, diary -checks, chests and fairy chests, and boss rewards. Skill upgrades are also grouped in packs of 5 to make the finding of -stats less of a chore. Runes and Equipment are also grouped together. - -Some additional locations that can contain items are the Jukebox, the Portraits, and the mini-game rewards. - -## Which items can be in another player's world? - -Any of the items which can be shuffled may also be placed into another player's world. It is possible to choose to limit -certain items to your own world. -## When the player receives an item, what happens? - -When the player receives an item, your character will hold the item above their head and display it to the world. It's -good for business! - -## What do I do if I encounter a bug with the game? - -Please reach out to Phar#4444 on Discord or you can drop a bug report on the -[GitHub page for Rogue Legacy Randomizer](https://github.com/ThePhar/RogueLegacyRandomizer/issues/new?assignees=&labels=bug&template=report-an-issue---.md&title=%5BIssue%5D). diff --git a/worlds/rogue_legacy/docs/rogue-legacy_en.md b/worlds/rogue_legacy/docs/rogue-legacy_en.md deleted file mode 100644 index fc9f6920178d..000000000000 --- a/worlds/rogue_legacy/docs/rogue-legacy_en.md +++ /dev/null @@ -1,35 +0,0 @@ -# Rogue Legacy Randomizer Setup Guide - -## Required Software - -- Rogue Legacy Randomizer from the - [Rogue Legacy Randomizer Releases Page](https://github.com/ThePhar/RogueLegacyRandomizer/releases) - -## Recommended Installation Instructions - -Please read the README file on the -[Rogue Legacy Randomizer GitHub](https://github.com/ThePhar/RogueLegacyRandomizer/blob/master/README.md) page for -up-to-date installation instructions. - -## Configuring your YAML file - -### What is a YAML file and why do I need one? - -Your YAML file contains a set of configuration options which provide the generator with information about how it should -generate your game. Each player of a multiworld will provide their own YAML file. This setup allows each player to enjoy -an experience customized for their taste, and different players in the same multiworld can all have different options. - -### Where do I get a YAML file? - -you can customize your options by visiting the [Rogue Legacy Options Page](/games/Rogue%20Legacy/player-options). - -### Connect to the MultiServer - -Once in game, press the start button and the AP connection screen should appear. You will fill out the hostname, port, -slot name, and password (if applicable). You should only need to fill out hostname, port, and password if the server -provides an alternative one to the default values. - -### Play the game - -Once you have entered the required values, you go to Connect and then select Confirm on the "Ready to Start" screen. Now -you're off to start your legacy! diff --git a/worlds/rogue_legacy/test/TestUnique.py b/worlds/rogue_legacy/test/TestUnique.py deleted file mode 100644 index 1ae9968d5519..000000000000 --- a/worlds/rogue_legacy/test/TestUnique.py +++ /dev/null @@ -1,23 +0,0 @@ -from typing import Dict - -from . import RLTestBase -from ..Items import item_table -from ..Locations import location_table - - -class UniqueTest(RLTestBase): - @staticmethod - def test_item_ids_are_all_unique(): - item_ids: Dict[int, str] = {} - for name, data in item_table.items(): - assert data.code not in item_ids.keys(), f"'{name}': {data.code}, is not unique. " \ - f"'{item_ids[data.code]}' also has this identifier." - item_ids[data.code] = name - - @staticmethod - def test_location_ids_are_all_unique(): - location_ids: Dict[int, str] = {} - for name, data in location_table.items(): - assert data.code not in location_ids.keys(), f"'{name}': {data.code}, is not unique. " \ - f"'{location_ids[data.code]}' also has this identifier." - location_ids[data.code] = name diff --git a/worlds/rogue_legacy/test/__init__.py b/worlds/rogue_legacy/test/__init__.py deleted file mode 100644 index 3346476ba644..000000000000 --- a/worlds/rogue_legacy/test/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from test.bases import WorldTestBase - - -class RLTestBase(WorldTestBase): - game = "Rogue Legacy" From 7a6fb5e35b471ef196437dd97d23fd26402d903e Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Fri, 11 Jul 2025 23:28:18 +0200 Subject: [PATCH 177/183] Revert "Core: Take Counter back out of RestrictedUnpickler" (#5184) * Revert "Core: Take Counter back out of RestrictedUnpickler #5169" This reverts commit 95e09c8e2a681ecd5666822b04fe7fed3ed9dec1. * Update Utils.py --- Utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Utils.py b/Utils.py index 6212b9328830..5697bb162ace 100644 --- a/Utils.py +++ b/Utils.py @@ -441,6 +441,10 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: def find_class(self, module: str, name: str) -> type: if module == "builtins" and name in safe_builtins: return getattr(builtins, name) + # used by OptionCounter + # necessary because the actual Options class instances are pickled when transfered to WebHost generation pool + if module == "collections" and name == "Counter": + return collections.Counter # used by MultiServer -> savegame/multidata if module == "NetUtils" and name in {"NetworkItem", "ClientStatus", "Hint", "SlotType", "NetworkSlot", "HintStatus"}: From a79423534c30de502a71944a5ec1d95ff32847fe Mon Sep 17 00:00:00 2001 From: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Date: Fri, 11 Jul 2025 18:44:26 -0400 Subject: [PATCH 178/183] LADX: Update marin.txt (#5178) --- worlds/ladx/LADXR/patches/marin.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/worlds/ladx/LADXR/patches/marin.txt b/worlds/ladx/LADXR/patches/marin.txt index a179e35fc6fb..782f4129ce6e 100644 --- a/worlds/ladx/LADXR/patches/marin.txt +++ b/worlds/ladx/LADXR/patches/marin.txt @@ -255,7 +255,6 @@ Try Bumper Stickers! Try Castlevania 64! Try Celeste 64! Try ChecksFinder! -Try Clique! Try Dark Souls III! Try DLCQuest! Try Donkey Kong Country 3! @@ -268,6 +267,7 @@ Try A Hat in Time! Try Heretic! Try Hollow Knight! Try Hylics 2! +Try Jak and Daxter: The Precursor Legacy! Try Kingdom Hearts 2! Try Kirby's Dream Land 3! Try Landstalker - The Treasures of King Nole! @@ -288,11 +288,10 @@ Try Pokemon Emerald! Try Pokemon Red and Blue! Try Raft! Try Risk of Rain 2! -Try Rogue Legacy! Try Secret of Evermore! +Try shapez! Try Shivers! Try A Short Hike! -Try Slay the Spire! Try SMZ3! Try Sonic Adventure 2 Battle! Try Starcraft 2! @@ -300,6 +299,7 @@ Try Stardew Valley! Try Subnautica! Try Sudoku! Try Super Mario 64! +Try Super Mario Land 2: 6 Golden Coins! Try Super Mario World! Try Super Metroid! Try Terraria! @@ -312,7 +312,6 @@ Try The Witness! Try Yoshi's Island! Try Yu-Gi-Oh! 2006! Try Zillion! -Try Zork Grand Inquisitor! Try Old School Runescape! Try Kingdom Hearts! Try Mega Man 2! @@ -369,7 +368,6 @@ Have they added Among Us to AP yet? Every copy of LADX is personalized, David. Looks like you're going on A Short Hike. Bring back feathers please? Functioning Brain is at...\nWait. This isn't Witness. Wrong game, sorry. -Don't forget to check your Clique!\nIf, y'know, you have one. No pressure... :3 Sorry ######, but your progression item is in another world. &newgames\n&oldgames From 909565e5d958459093014e134ea21b18767cd1fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bolduc?= <16137441+Jouramie@users.noreply.github.com> Date: Sat, 12 Jul 2025 07:12:04 -0400 Subject: [PATCH 179/183] Stardew Valley: Remove Rarecrow Locations from Night Market when Museumsanity is Disabled (#5146) --- worlds/stardew_valley/locations.py | 3 ++ worlds/stardew_valley/logic/museum_logic.py | 8 --- .../stardew_valley/test/rules/TestMuseum.py | 50 ++++++++++++++++++- 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/worlds/stardew_valley/locations.py b/worlds/stardew_valley/locations.py index 0d621fda49ee..fa4d50ce792a 100644 --- a/worlds/stardew_valley/locations.py +++ b/worlds/stardew_valley/locations.py @@ -279,6 +279,9 @@ def extend_festival_locations(randomized_locations: List[LocationData], options: return festival_locations = locations_by_tag[LocationTags.FESTIVAL] + if not options.museumsanity: + festival_locations = [location for location in festival_locations if location.name not in ("Rarecrow #7 (Tanuki)", "Rarecrow #8 (Tribal Mask)")] + randomized_locations.extend(festival_locations) extend_hard_festival_locations(randomized_locations, options) extend_desert_festival_chef_locations(randomized_locations, options, random) diff --git a/worlds/stardew_valley/logic/museum_logic.py b/worlds/stardew_valley/logic/museum_logic.py index 2237cd89ea65..21718db27c9f 100644 --- a/worlds/stardew_valley/logic/museum_logic.py +++ b/worlds/stardew_valley/logic/museum_logic.py @@ -1,13 +1,5 @@ -from typing import Union - from Utils import cache_self1 -from .action_logic import ActionLogicMixin from .base_logic import BaseLogic, BaseLogicMixin -from .has_logic import HasLogicMixin -from .received_logic import ReceivedLogicMixin -from .region_logic import RegionLogicMixin -from .time_logic import TimeLogicMixin -from .tool_logic import ToolLogicMixin from .. import options from ..data.museum_data import MuseumItem, all_museum_items, all_museum_artifacts, all_museum_minerals from ..stardew_rule import StardewRule, False_ diff --git a/worlds/stardew_valley/test/rules/TestMuseum.py b/worlds/stardew_valley/test/rules/TestMuseum.py index 231bbafe2290..1a22e8800c5d 100644 --- a/worlds/stardew_valley/test/rules/TestMuseum.py +++ b/worlds/stardew_valley/test/rules/TestMuseum.py @@ -1,12 +1,16 @@ from collections import Counter +from unittest.mock import patch from ..bases import SVTestBase -from ...options import Museumsanity +from ..options import presets +from ... import options, StardewLogic, StardewRule +from ...logic.museum_logic import MuseumLogic +from ...stardew_rule import true_, LiteralStardewRule class TestMuseumMilestones(SVTestBase): options = { - Museumsanity.internal_name: Museumsanity.option_milestones + options.Museumsanity: options.Museumsanity.option_milestones } def test_50_milestone(self): @@ -14,3 +18,45 @@ def test_50_milestone(self): milestone_rule = self.world.logic.museum.can_find_museum_items(50) self.assert_rule_false(milestone_rule, self.multiworld.state) + + +class DisabledMuseumRule(LiteralStardewRule): + value = False + + def __or__(self, other) -> StardewRule: + return other + + def __and__(self, other) -> StardewRule: + return self + + def __repr__(self): + return "Disabled Museum Rule" + + +class TestMuseumsanityDisabledExcludesMuseumDonationsFromOtherLocations(SVTestBase): + options = { + **presets.allsanity_mods_6_x_x(), + options.Museumsanity.internal_name: options.Museumsanity.option_none + } + + def test_museum_donations_are_never_required_in_any_locations(self): + with patch("worlds.stardew_valley.logic.museum_logic.MuseumLogic") as MockMuseumLogic: + museum_logic: MuseumLogic = MockMuseumLogic.return_value + museum_logic.can_donate_museum_items.return_value = DisabledMuseumRule() + museum_logic.can_donate_museum_artifacts.return_value = DisabledMuseumRule() + museum_logic.can_find_museum_artifacts.return_value = DisabledMuseumRule() + museum_logic.can_find_museum_minerals.return_value = DisabledMuseumRule() + museum_logic.can_find_museum_items.return_value = DisabledMuseumRule() + museum_logic.can_complete_museum.return_value = DisabledMuseumRule() + museum_logic.can_donate.return_value = DisabledMuseumRule() + # Allowing calls to museum rules since a lot of other logic depends on it, for minerals for instance. + museum_logic.can_find_museum_item.return_value = true_ + + regions = {region.name for region in self.multiworld.regions} + self.world.logic = StardewLogic(self.player, self.world.options, self.world.content, regions) + self.world.set_rules() + + self.collect_everything() + for location in self.get_real_locations(): + with self.subTest(location.name): + self.assert_can_reach_location(location) From 585cbf95a6d1b65facd1f0058ba49c6174b24a00 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Sat, 12 Jul 2025 07:14:34 -0400 Subject: [PATCH 180/183] TUNIC: Add UT Support for Breakables (#5182) --- worlds/tunic/ut_stuff.py | 492 +++++++++++++++++++++++++++++++-------- 1 file changed, 399 insertions(+), 93 deletions(-) diff --git a/worlds/tunic/ut_stuff.py b/worlds/tunic/ut_stuff.py index 8296452c73ec..82d58eaeb8dc 100644 --- a/worlds/tunic/ut_stuff.py +++ b/worlds/tunic/ut_stuff.py @@ -67,99 +67,6 @@ def map_page_index(data: Any) -> int: # mapping of everything after the second to last slash and the location id # lua used for the name: string.match(full_name, "[^/]*/[^/]*$") poptracker_data: dict[str, int] = { - "[Powered Secret Room] Chest/Follow the Purple Energy Road": 509342400, - "[Entryway] Chest/Mind the Slorms": 509342401, - "[Third Room] Beneath Platform Chest/Run from the tentacles!": 509342402, - "[Third Room] Tentacle Chest/Water Sucks": 509342403, - "[Entryway] Obscured Behind Waterfall/You can just go in there": 509342404, - "[Save Room] Upper Floor Chest 1/Through the Power of Prayer": 509342405, - "[Save Room] Upper Floor Chest 2/Above the Fox Shrine": 509342406, - "[Second Room] Underwater Chest/Hidden Passage": 509342407, - "[Back Corridor] Right Secret/Hidden Path": 509342408, - "[Back Corridor] Left Secret/Behind the Slorms": 509342409, - "[Second Room] Obscured Behind Waterfall/Just go in there": 509342410, - "[Side Room] Chest By Pots/Just Climb up There": 509342411, - "[Side Room] Chest By Phrends/So Many Phrends!": 509342412, - "[Second Room] Page/Ruined Atoll Map": 509342413, - "[Passage To Dark Tomb] Page Pickup/Siege Engine": 509342414, - "[1F] Guarded By Lasers/Beside 3 Miasma Seekers": 509342415, - "[1F] Near Spikes/Mind the Miasma Seeker": 509342416, - "Birdcage Room/[2F] Bird Room": 509342417, - "[2F] Entryway Upper Walkway/Overlooking Miasma": 509342418, - "[1F] Library/By the Books": 509342419, - "[2F] Library/Behind the Ladder": 509342420, - "[2F] Guarded By Lasers/Before the big reveal...": 509342421, - "Birdcage Room/[2F] Bird Room Secret": 509342422, - "[1F] Library Secret/Pray to the Wallman": 509342423, - "Spike Maze Near Exit/Watch out!": 509342424, - "2nd Laser Room/Can you roll?": 509342425, - "1st Laser Room/Use a bomb?": 509342426, - "Spike Maze Upper Walkway/Just walk right!": 509342427, - "Skulls Chest/Move the Grave": 509342428, - "Spike Maze Near Stairs/In the Corner": 509342429, - "1st Laser Room Obscured/Follow the red laser of death": 509342430, - "Guardhouse 2 - Upper Floor/In the Mound": 509342431, - "Guardhouse 2 - Bottom Floor Secret/Hidden Hallway": 509342432, - "Guardhouse 1 Obscured/Upper Floor Obscured": 509342433, - "Guardhouse 1/Upper Floor": 509342434, - "Guardhouse 1 Ledge HC/Dancing Fox Spirit Holy Cross": 509342435, - "Golden Obelisk Holy Cross/Use the Holy Cross": 509342436, - "Ice Rod Grapple Chest/Freeze the Blob and ascend With Orb": 509342437, - "Above Save Point/Chest": 509342438, - "Above Save Point Obscured/Hidden Path": 509342439, - "Guardhouse 1 Ledge/From Guardhouse 1 Chest": 509342440, - "Near Save Point/Chest": 509342441, - "Ambushed by Spiders/Beneath Spider Chest": 509342442, - "Near Telescope/Up on the Wall": 509342443, - "Ambushed by Spiders/Spider Chest": 509342444, - "Lower Dash Chest/Dash Across": 509342445, - "Lower Grapple Chest/Grapple Across": 509342446, - "Bombable Wall/Follow the Flowers": 509342447, - "Page On Teleporter/Page": 509342448, - "Forest Belltower Save Point/Near Save Point": 509342449, - "Forest Belltower - After Guard Captain/Chest": 509342450, - "East Bell/Forest Belltower - Obscured Near Bell Top Floor": 509342451, - "Forest Belltower Obscured/Obscured Beneath Bell Bottom Floor": 509342452, - "Forest Belltower Page/Page Pickup": 509342453, - "Forest Grave Path - Holy Cross Code by Grave/Single Money Chest": 509342454, - "Forest Grave Path - Above Gate/Chest": 509342455, - "Forest Grave Path - Obscured Chest/Behind the Trees": 509342456, - "Forest Grave Path - Upper Walkway/From the top of the Guardhouse": 509342457, - "The Hero's Sword/Forest Grave Path - Sword Pickup": 509342458, - "The Hero's Sword/Hero's Grave - Tooth Relic": 509342459, - "Fortress Courtyard - From East Belltower/Crack in the Wall": 509342460, - "Fortress Leaf Piles - Secret Chest/Dusty": 509342461, - "Fortress Arena/Hexagon Red": 509342462, - "Fortress Arena/Siege Engine|Vault Key Pickup": 509342463, - "Fortress East Shortcut - Chest Near Slimes/Mind the Custodians": 509342464, - "[West Wing] Candles Holy Cross/Use the Holy Cross": 509342465, - "Westmost Upper Room/[West Wing] Dark Room Chest 1": 509342466, - "Westmost Upper Room/[West Wing] Dark Room Chest 2": 509342467, - "[East Wing] Bombable Wall/Bomb the Wall": 509342468, - "[West Wing] Page Pickup/He will never visit the Far Shore": 509342469, - "Fortress Grave Path - Upper Walkway/Go Around the East Wing": 509342470, - "Vault Hero's Grave/Fortress Grave Path - Chest Right of Grave": 509342471, - "Vault Hero's Grave/Fortress Grave Path - Obscured Chest Left of Grave": 509342472, - "Vault Hero's Grave/Hero's Grave - Flowers Relic": 509342473, - "Bridge/Chest": 509342474, - "Cell Chest 1/Drop the Shortcut Rope": 509342475, - "Obscured Behind Waterfall/Muffling Bell": 509342476, - "Back Room Chest/Lose the Lure or take 2 Damage": 509342477, - "Cell Chest 2/Mind the Custodian": 509342478, - "Near Vault/Already Stolen": 509342479, - "Slorm Room/Tobias was Trapped Here Once...": 509342480, - "Escape Chest/Don't Kick Fimbleton!": 509342481, - "Grapple Above Hot Tub/Look Up": 509342482, - "Above Vault/Obscured Doorway Ledge": 509342483, - "Main Room Top Floor/Mind the Adult Frog": 509342484, - "Main Room Bottom Floor/Altar Chest": 509342485, - "Side Room Secret Passage/Upper Right Corner": 509342486, - "Side Room Chest/Oh No! Our Frogs! They're Dead!": 509342487, - "Side Room Grapple Secret/Grapple on Over": 509342488, - "Magic Orb Pickup/Frult Meeting": 509342489, - "The Librarian/Hexagon Green": 509342490, - "Library Hall/Holy Cross Chest": 509342491, - "Library Lab Chest by Shrine 2/Chest": 509342492, "Library Lab Chest by Shrine 1/Chest": 509342493, "Library Lab Chest by Shrine 3/Chest": 509342494, "Library Lab by Fuse/Behind Chalkboard": 509342495, @@ -369,6 +276,405 @@ def map_page_index(data: Any) -> int: "[North] Page Pickup/Survival Tips": 509342699, "[Southeast Lowlands] Ice Dagger Pickup/Ice Dagger Cave": 509342700, "Hero's Grave/Effigy Relic": 509342701, + "[East] Bombable Wall/Break Bombable Wall": 509350705, + "[West] Upper Area Bombable Wall/Break Bombable Wall": 509350704, + "[East Wing] Bombable Wall/Break Bombable Wall": 509350703, + "Bombable Wall/Break Bombable Wall": 509350702, + "[Northwest] Bombable Wall/Break Bombable Wall": 509350701, + "[Southwest] Bombable Wall Near Fountain/Break Bombable Wall": 509350700, + "Cube Cave/Break Bombable Wall": 509350699, + "[Central] Bombable Wall/Break Bombable Wall": 509350698, + "Purgatory Pots/Pot 33": 509350697, + "Purgatory Pots/Pot 32": 509350696, + "Purgatory Pots/Pot 31": 509350695, + "Purgatory Pots/Pot 30": 509350694, + "Purgatory Pots/Pot 29": 509350693, + "Purgatory Pots/Pot 28": 509350692, + "Purgatory Pots/Pot 27": 509350691, + "Purgatory Pots/Pot 26": 509350690, + "Purgatory Pots/Pot 25": 509350689, + "Purgatory Pots/Pot 24": 509350688, + "Purgatory Pots/Pot 23": 509350687, + "Purgatory Pots/Pot 22": 509350686, + "Purgatory Pots/Pot 21": 509350685, + "Purgatory Pots/Pot 20": 509350684, + "Purgatory Pots/Pot 19": 509350683, + "Purgatory Pots/Pot 18": 509350682, + "Purgatory Pots/Pot 17": 509350681, + "Purgatory Pots/Pot 16": 509350680, + "Purgatory Pots/Pot 15": 509350679, + "Purgatory Pots/Pot 14": 509350678, + "Purgatory Pots/Pot 13": 509350677, + "Purgatory Pots/Pot 12": 509350676, + "Purgatory Pots/Pot 11": 509350675, + "Purgatory Pots/Pot 10": 509350674, + "Purgatory Pots/Pot 9": 509350673, + "Purgatory Pots/Pot 8": 509350672, + "Purgatory Pots/Pot 7": 509350671, + "Purgatory Pots/Pot 6": 509350670, + "Purgatory Pots/Pot 5": 509350669, + "Purgatory Pots/Pot 4": 509350668, + "Purgatory Pots/Pot 3": 509350667, + "Purgatory Pots/Pot 2": 509350666, + "Purgatory Pots/Pot 1": 509350665, + "[1F] Pots by Stairs/Pot 2": 509350664, + "[1F] Pots by Stairs/Pot 1": 509350663, + "Crates/Crate 9": 509350662, + "Crates/Crate 8": 509350661, + "Crates/Crate 7": 509350660, + "Crates/Crate 6": 509350659, + "Crates/Crate 5": 509350658, + "Crates/Crate 4": 509350657, + "Crates/Crate 3": 509350656, + "Crates/Crate 2": 509350655, + "Crates/Crate 1": 509350654, + "[Lowlands] Crates/Crate 2": 509350653, + "[Lowlands] Crates/Crate 1": 509350652, + "[West] Near Isolated Chest/Crate 5": 509350651, + "[West] Near Isolated Chest/Crate 4": 509350650, + "[West] Near Isolated Chest/Crate 3": 509350649, + "[West] Near Isolated Chest/Crate 2": 509350648, + "[West] Near Isolated Chest/Crate 1": 509350647, + "[West] Crates by Shooting Range/Crate 5": 509350646, + "[West] Crates by Shooting Range/Crate 4": 509350645, + "[West] Crates by Shooting Range/Crate 3": 509350644, + "[West] Crates by Shooting Range/Crate 2": 509350643, + "[West] Crates by Shooting Range/Crate 1": 509350642, + "[West] Near Isolated Chest/Explosive Pot 2": 509350641, + "[West] Near Isolated Chest/Explosive Pot 1": 509350640, + "[West] Explosive Pot above Shooting Range/Explosive Pot": 509350639, + "[West] Explosive Pots near Bombable Wall/Explosive Pot 2": 509350638, + "[West] Explosive Pots near Bombable Wall/Explosive Pot 1": 509350637, + "[Central] Crates near Shortcut Ladder/Crate 5": 509350636, + "[Central] Crates near Shortcut Ladder/Crate 4": 509350635, + "[Central] Crates near Shortcut Ladder/Crate 3": 509350634, + "[Central] Crates near Shortcut Ladder/Crate 2": 509350633, + "[Central] Crates near Shortcut Ladder/Crate 1": 509350632, + "[Central] Explosive Pots near Shortcut Ladder/Explosive Pot 2": 509350631, + "[Central] Explosive Pots near Shortcut Ladder/Explosive Pot 1": 509350630, + "[Back Entrance] Pots/Pot 5": 509350629, + "[Back Entrance] Pots/Pot 4": 509350628, + "[Back Entrance] Pots/Pot 3": 509350627, + "[Back Entrance] Pots/Pot 2": 509350626, + "[Back Entrance] Pots/Pot 1": 509350625, + "[Central] Explosive Pots near Monastery/Explosive Pot 2": 509350624, + "[Central] Explosive Pots near Monastery/Explosive Pot 1": 509350623, + "[East] Explosive Pot beneath Scaffolding/Explosive Pot": 509350622, + "[East] Explosive Pots/Explosive Pot 3": 509350621, + "[East] Explosive Pots/Explosive Pot 2": 509350620, + "[East] Explosive Pots/Explosive Pot 1": 509350619, + "Display Cases/Display Case 3": 509350618, + "Display Cases/Display Case 2": 509350617, + "Display Cases/Display Case 1": 509350616, + "Orb Room Explosive Pots/Explosive Pot 2": 509350615, + "Orb Room Explosive Pots/Explosive Pot 1": 509350614, + "Pots after Gate/Pot 2": 509350613, + "Pots after Gate/Pot 1": 509350612, + "Slorm Room/Pot": 509350611, + "Main Room Pots/Pot 2": 509350610, + "Main Room Pots/Pot 1": 509350609, + "Side Room Pots/Pot 3": 509350608, + "Side Room Pots/Pot 2": 509350607, + "Side Room Pots/Pot 1": 509350606, + "Pots above Orb Altar/Pot 2": 509350605, + "Pots above Orb Altar/Pot 1": 509350604, + "[Upper] Pots/Pot 6": 509350603, + "[Upper] Pots/Pot 5": 509350602, + "[Upper] Pots/Pot 4": 509350601, + "[Upper] Pots/Pot 3": 509350600, + "[Upper] Pots/Pot 2": 509350599, + "[Upper] Pots/Pot 1": 509350598, + "[South] Explosive Pot near Birds/Explosive Pot": 509350597, + "[West] Broken House/Table": 509350596, + "[West] Broken House/Pot 2": 509350595, + "[West] Broken House/Pot 1": 509350594, + "Fortress Arena/Pot 2": 509350593, + "Fortress Arena/Pot 1": 509350592, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 4": 509350591, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 3": 509350590, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 2": 509350589, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 1": 509350588, + "Barrels/Back Room Barrel 7": 509350587, + "Barrels/Back Room Barrel 6": 509350586, + "Barrels/Back Room Barrel 5": 509350585, + "[Northwest] Sign by Quarry Gate/Sign": 509350400, + "[Central] Sign South of Checkpoint/Sign": 509350401, + "[Central] Sign by Ruined Passage/Sign": 509350402, + "[East] Pots near Slimes/Pot 1": 509350403, + "[East] Pots near Slimes/Pot 2": 509350404, + "[East] Pots near Slimes/Pot 3": 509350405, + "[East] Pots near Slimes/Pot 4": 509350406, + "[East] Pots near Slimes/Pot 5": 509350407, + "[East] Forest Sign/Sign": 509350408, + "[East] Fortress Sign/Sign": 509350409, + "[North] Pots/Pot 1": 509350410, + "[North] Pots/Pot 2": 509350411, + "[North] Pots/Pot 3": 509350412, + "[North] Pots/Pot 4": 509350413, + "[West] Sign Near West Garden Entrance/Sign": 509350414, + "Stick House/Pot 1": 509350415, + "Stick House/Pot 2": 509350416, + "Stick House/Pot 3": 509350417, + "Stick House/Pot 4": 509350418, + "Stick House/Pot 5": 509350419, + "Stick House/Pot 6": 509350420, + "Stick House/Pot 7": 509350421, + "Ruined Shop/Pot 1": 509350422, + "Ruined Shop/Pot 2": 509350423, + "Ruined Shop/Pot 3": 509350424, + "Ruined Shop/Pot 4": 509350425, + "Ruined Shop/Pot 5": 509350426, + "Inside Hourglass Cave/Sign": 509350427, + "Pots by Slimes/Pot 1": 509350428, + "Pots by Slimes/Pot 2": 509350429, + "Pots by Slimes/Pot 3": 509350430, + "Pots by Slimes/Pot 4": 509350431, + "Pots by Slimes/Pot 5": 509350432, + "Pots by Slimes/Pot 6": 509350433, + "[Upper] Barrels/Barrel 1": 509350434, + "[Upper] Barrels/Barrel 2": 509350435, + "[Upper] Barrels/Barrel 3": 509350436, + "Pots after Guard Captain/Pot 1": 509350437, + "Pots after Guard Captain/Pot 2": 509350438, + "Pots after Guard Captain/Pot 3": 509350439, + "Pots after Guard Captain/Pot 4": 509350440, + "Pots after Guard Captain/Pot 5": 509350441, + "Pots after Guard Captain/Pot 6": 509350442, + "Pots after Guard Captain/Pot 7": 509350443, + "Pots after Guard Captain/Pot 8": 509350444, + "Pots after Guard Captain/Pot 9": 509350445, + "Pots/Pot 1": 509350446, + "Pots/Pot 2": 509350447, + "Pots/Pot 3": 509350448, + "Pots/Pot 4": 509350449, + "Pots/Pot 5": 509350450, + "Sign by Grave Path/Sign": 509350451, + "Sign by Guardhouse 1/Sign": 509350452, + "Pots by Grave Path/Pot 1": 509350453, + "Pots by Grave Path/Pot 2": 509350454, + "Pots by Grave Path/Pot 3": 509350455, + "Pots by Envoy/Pot 1": 509350456, + "Pots by Envoy/Pot 2": 509350457, + "Pots by Envoy/Pot 3": 509350458, + "Bottom Floor Pots/Pot 1": 509350459, + "Bottom Floor Pots/Pot 2": 509350460, + "Bottom Floor Pots/Pot 3": 509350461, + "Bottom Floor Pots/Pot 4": 509350462, + "Bottom Floor Pots/Pot 5": 509350463, + "[Side Room] Pots by Chest/Pot 1": 509350464, + "[Side Room] Pots by Chest/Pot 2": 509350465, + "[Side Room] Pots by Chest/Pot 3": 509350466, + "[Third Room] Barrels by Bridge/Barrel 1": 509350467, + "[Third Room] Barrels by Bridge/Barrel 2": 509350468, + "[Third Room] Barrels by Bridge/Barrel 3": 509350469, + "[Third Room] Barrels after Back Corridor/Barrel 1": 509350470, + "[Third Room] Barrels after Back Corridor/Barrel 2": 509350471, + "[Third Room] Barrels after Back Corridor/Barrel 3": 509350472, + "[Third Room] Barrels after Back Corridor/Barrel 4": 509350473, + "[Third Room] Barrels after Back Corridor/Barrel 5": 509350474, + "[Third Room] Barrels by West Turret/Barrel 1": 509350475, + "[Third Room] Barrels by West Turret/Barrel 2": 509350476, + "[Third Room] Barrels by West Turret/Barrel 3": 509350477, + "[Third Room] Pots by East Turret/Pot 1": 509350478, + "[Third Room] Pots by East Turret/Pot 2": 509350479, + "[Third Room] Pots by East Turret/Pot 3": 509350480, + "[Third Room] Pots by East Turret/Pot 4": 509350481, + "[Third Room] Pots by East Turret/Pot 5": 509350482, + "[Third Room] Pots by East Turret/Pot 6": 509350483, + "[Third Room] Pots by East Turret/Pot 7": 509350484, + "Barrels/Barrel 1": 509350485, + "Barrels/Barrel 2": 509350486, + "Pot Hallway Pots/Pot 1": 509350487, + "Pot Hallway Pots/Pot 2": 509350488, + "Pot Hallway Pots/Pot 3": 509350489, + "Pot Hallway Pots/Pot 4": 509350490, + "Pot Hallway Pots/Pot 5": 509350491, + "Pot Hallway Pots/Pot 6": 509350492, + "Pot Hallway Pots/Pot 7": 509350493, + "Pot Hallway Pots/Pot 8": 509350494, + "Pot Hallway Pots/Pot 9": 509350495, + "Pot Hallway Pots/Pot 10": 509350496, + "Pot Hallway Pots/Pot 11": 509350497, + "Pot Hallway Pots/Pot 12": 509350498, + "Pot Hallway Pots/Pot 13": 509350499, + "Pot Hallway Pots/Pot 14": 509350500, + "2nd Laser Room Pots/Pot 1": 509350501, + "2nd Laser Room Pots/Pot 2": 509350502, + "2nd Laser Room Pots/Pot 3": 509350503, + "2nd Laser Room Pots/Pot 4": 509350504, + "2nd Laser Room Pots/Pot 5": 509350505, + "[Southeast Lowlands] Ice Dagger Pickup/Pot 1": 509350506, + "[Southeast Lowlands] Ice Dagger Pickup/Pot 2": 509350507, + "[Southeast Lowlands] Ice Dagger Pickup/Pot 3": 509350508, + "Fire Pots/Fire Pot 1": 509350509, + "Fire Pots/Fire Pot 2": 509350510, + "Fire Pots/Fire Pot 3": 509350511, + "Fire Pots/Fire Pot 4": 509350512, + "Fire Pots/Fire Pot 5": 509350513, + "Fire Pots/Fire Pot 6": 509350514, + "Fire Pots/Fire Pot 7": 509350515, + "Fire Pots/Fire Pot 8": 509350516, + "Upper Fire Pot/Fire Pot": 509350517, + "[Entry] Pots/Pot 1": 509350518, + "[Entry] Pots/Pot 2": 509350519, + "[By Grave] Pots/Pot 1": 509350520, + "[By Grave] Pots/Pot 2": 509350521, + "[By Grave] Pots/Pot 3": 509350522, + "[By Grave] Pots/Pot 4": 509350523, + "[By Grave] Pots/Pot 5": 509350524, + "[By Grave] Pots/Pot 6": 509350525, + "[Central] Fire Pots/Fire Pot 1": 509350526, + "[Central] Fire Pots/Fire Pot 2": 509350527, + "[Central] Pots by Door/Pot 1": 509350528, + "[Central] Pots by Door/Pot 2": 509350529, + "[Central] Pots by Door/Pot 3": 509350530, + "[Central] Pots by Door/Pot 4": 509350531, + "[Central] Pots by Door/Pot 5": 509350532, + "[Central] Pots by Door/Pot 6": 509350533, + "[Central] Pots by Door/Pot 7": 509350534, + "[Central] Pots by Door/Pot 8": 509350535, + "[Central] Pots by Door/Pot 9": 509350536, + "[Central] Pots by Door/Pot 10": 509350537, + "[Central] Pots by Door/Pot 11": 509350538, + "[East Wing] Pots by Broken Checkpoint/Pot 1": 509350539, + "[East Wing] Pots by Broken Checkpoint/Pot 2": 509350540, + "[East Wing] Pots by Broken Checkpoint/Pot 3": 509350541, + "[West Wing] Pots by Checkpoint/Pot 1": 509350542, + "[West Wing] Pots by Checkpoint/Pot 2": 509350543, + "[West Wing] Pots by Checkpoint/Pot 3": 509350544, + "[West Wing] Pots by Overlook/Pot 1": 509350545, + "[West Wing] Pots by Overlook/Pot 2": 509350546, + "[West Wing] Slorm Room Pots/Pot 1": 509350547, + "[West Wing] Slorm Room Pots/Pot 2": 509350548, + "[West Wing] Slorm Room Pots/Pot 3": 509350549, + "[West Wing] Chest Room Pots/Pot 1": 509350550, + "[West Wing] Chest Room Pots/Pot 2": 509350551, + "[West Wing] Pots by Stairs to Basement/Pot 1": 509350552, + "[West Wing] Pots by Stairs to Basement/Pot 2": 509350553, + "[West Wing] Pots by Stairs to Basement/Pot 3": 509350554, + "Entry Spot/Pot 1": 509350555, + "Entry Spot/Pot 2": 509350556, + "Entry Spot/Crate 1": 509350557, + "Entry Spot/Crate 2": 509350558, + "Entry Spot/Crate 3": 509350559, + "Entry Spot/Crate 4": 509350560, + "Entry Spot/Crate 5": 509350561, + "Entry Spot/Crate 6": 509350562, + "Entry Spot/Crate 7": 509350563, + "Slorm Room Crates/Crate 1": 509350564, + "Slorm Room Crates/Crate 2": 509350565, + "Crates under Rope/Crate 1": 509350566, + "Crates under Rope/Crate 2": 509350567, + "Crates under Rope/Crate 3": 509350568, + "Crates under Rope/Crate 4": 509350569, + "Crates under Rope/Crate 5": 509350570, + "Crates under Rope/Crate 6": 509350571, + "Fuse Room Fire Pots/Fire Pot 1": 509350572, + "Fuse Room Fire Pots/Fire Pot 2": 509350573, + "Fuse Room Fire Pots/Fire Pot 3": 509350574, + "Barrels/Barrel by Back Room 1": 509350575, + "Barrels/Barrel by Back Room 2": 509350576, + "Barrels/Barrel by Back Room 3": 509350577, + "Barrels/Barrel by Back Room 4": 509350578, + "Barrels/Barrel by Back Room 5": 509350579, + "Barrels/Barrel by Back Room 6": 509350580, + "Barrels/Back Room Barrel 1": 509350581, + "Barrels/Back Room Barrel 2": 509350582, + "Barrels/Back Room Barrel 3": 509350583, + "[Powered Secret Room] Chest/Follow the Purple Energy Road": 509342400, + "[Entryway] Chest/Mind the Slorms": 509342401, + "[Third Room] Beneath Platform Chest/Run from the tentacles!": 509342402, + "[Third Room] Tentacle Chest/Water Sucks": 509342403, + "[Entryway] Obscured Behind Waterfall/You can just go in there": 509342404, + "[Save Room] Upper Floor Chest 1/Through the Power of Prayer": 509342405, + "[Save Room] Upper Floor Chest 2/Above the Fox Shrine": 509342406, + "[Second Room] Underwater Chest/Hidden Passage": 509342407, + "[Back Corridor] Right Secret/Hidden Path": 509342408, + "[Back Corridor] Left Secret/Behind the Slorms": 509342409, + "[Second Room] Obscured Behind Waterfall/Just go in there": 509342410, + "[Side Room] Chest By Pots/Just Climb up There": 509342411, + "[Side Room] Chest By Phrends/So Many Phrends!": 509342412, + "[Second Room] Page/Ruined Atoll Map": 509342413, + "[Passage To Dark Tomb] Page Pickup/Siege Engine": 509342414, + "[1F] Guarded By Lasers/Beside 3 Miasma Seekers": 509342415, + "[1F] Near Spikes/Mind the Miasma Seeker": 509342416, + "Birdcage Room/[2F] Bird Room": 509342417, + "[2F] Entryway Upper Walkway/Overlooking Miasma": 509342418, + "[1F] Library/By the Books": 509342419, + "[2F] Library/Behind the Ladder": 509342420, + "[2F] Guarded By Lasers/Before the big reveal...": 509342421, + "Birdcage Room/[2F] Bird Room Secret": 509342422, + "[1F] Library Secret/Pray to the Wallman": 509342423, + "Spike Maze Near Exit/Watch out!": 509342424, + "2nd Laser Room/Can you roll?": 509342425, + "1st Laser Room/Use a bomb?": 509342426, + "Spike Maze Upper Walkway/Just walk right!": 509342427, + "Skulls Chest/Move the Grave": 509342428, + "Spike Maze Near Stairs/In the Corner": 509342429, + "1st Laser Room Obscured/Follow the red laser of death": 509342430, + "Guardhouse 2 - Upper Floor/In the Mound": 509342431, + "Guardhouse 2 - Bottom Floor Secret/Hidden Hallway": 509342432, + "Guardhouse 1 Obscured/Upper Floor Obscured": 509342433, + "Guardhouse 1/Upper Floor": 509342434, + "Guardhouse 1 Ledge HC/Dancing Fox Spirit Holy Cross": 509342435, + "Golden Obelisk Holy Cross/Use the Holy Cross": 509342436, + "Ice Rod Grapple Chest/Freeze the Blob and ascend With Orb": 509342437, + "Above Save Point/Chest": 509342438, + "Above Save Point Obscured/Hidden Path": 509342439, + "Guardhouse 1 Ledge/From Guardhouse 1 Chest": 509342440, + "Near Save Point/Chest": 509342441, + "Ambushed by Spiders/Beneath Spider Chest": 509342442, + "Near Telescope/Up on the Wall": 509342443, + "Ambushed by Spiders/Spider Chest": 509342444, + "Lower Dash Chest/Dash Across": 509342445, + "Lower Grapple Chest/Grapple Across": 509342446, + "Bombable Wall/Follow the Flowers": 509342447, + "Page On Teleporter/Page": 509342448, + "Forest Belltower Save Point/Near Save Point": 509342449, + "Forest Belltower - After Guard Captain/Chest": 509342450, + "East Bell/Forest Belltower - Obscured Near Bell Top Floor": 509342451, + "Forest Belltower Obscured/Obscured Beneath Bell Bottom Floor": 509342452, + "Forest Belltower Page/Page Pickup": 509342453, + "Forest Grave Path - Holy Cross Code by Grave/Single Money Chest": 509342454, + "Forest Grave Path - Above Gate/Chest": 509342455, + "Forest Grave Path - Obscured Chest/Behind the Trees": 509342456, + "Forest Grave Path - Upper Walkway/From the top of the Guardhouse": 509342457, + "The Hero's Sword/Forest Grave Path - Sword Pickup": 509342458, + "The Hero's Sword/Hero's Grave - Tooth Relic": 509342459, + "Fortress Courtyard - From East Belltower/Crack in the Wall": 509342460, + "Fortress Leaf Piles - Secret Chest/Dusty": 509342461, + "Fortress Arena/Hexagon Red": 509342462, + "Fortress Arena/Siege Engine|Vault Key Pickup": 509342463, + "Fortress East Shortcut - Chest Near Slimes/Mind the Custodians": 509342464, + "[West Wing] Candles Holy Cross/Use the Holy Cross": 509342465, + "Westmost Upper Room/[West Wing] Dark Room Chest 1": 509342466, + "Westmost Upper Room/[West Wing] Dark Room Chest 2": 509342467, + "[East Wing] Bombable Wall/Bomb the Wall": 509342468, + "[West Wing] Page Pickup/He will never visit the Far Shore": 509342469, + "Fortress Grave Path - Upper Walkway/Go Around the East Wing": 509342470, + "Vault Hero's Grave/Fortress Grave Path - Chest Right of Grave": 509342471, + "Vault Hero's Grave/Fortress Grave Path - Obscured Chest Left of Grave": 509342472, + "Vault Hero's Grave/Hero's Grave - Flowers Relic": 509342473, + "Bridge/Chest": 509342474, + "Cell Chest 1/Drop the Shortcut Rope": 509342475, + "Obscured Behind Waterfall/Muffling Bell": 509342476, + "Back Room Chest/Lose the Lure or take 2 Damage": 509342477, + "Cell Chest 2/Mind the Custodian": 509342478, + "Near Vault/Already Stolen": 509342479, + "Slorm Room/Tobias was Trapped Here Once...": 509342480, + "Escape Chest/Don't Kick Fimbleton!": 509342481, + "Grapple Above Hot Tub/Look Up": 509342482, + "Above Vault/Obscured Doorway Ledge": 509342483, + "Main Room Top Floor/Mind the Adult Frog": 509342484, + "Main Room Bottom Floor/Altar Chest": 509342485, + "Side Room Secret Passage/Upper Right Corner": 509342486, + "Side Room Chest/Oh No! Our Frogs! They're Dead!": 509342487, + "Side Room Grapple Secret/Grapple on Over": 509342488, + "Magic Orb Pickup/Frult Meeting": 509342489, + "The Librarian/Hexagon Green": 509342490, + "Library Hall/Holy Cross Chest": 509342491, + "Library Lab Chest by Shrine 2/Chest": 509342492, + "Barrels/Back Room Barrel 4": 509350584, } From 125d053b61733031d0ebe8559f6edd006e1c4e94 Mon Sep 17 00:00:00 2001 From: Scipio Wright Date: Sat, 12 Jul 2025 07:52:02 -0400 Subject: [PATCH 181/183] TUNIC: Fix missing line for UT stuff #5185 --- worlds/tunic/ut_stuff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/tunic/ut_stuff.py b/worlds/tunic/ut_stuff.py index 82d58eaeb8dc..2cf2f96a4ff2 100644 --- a/worlds/tunic/ut_stuff.py +++ b/worlds/tunic/ut_stuff.py @@ -681,7 +681,7 @@ def map_page_index(data: Any) -> int: # for setting up the poptracker integration tracker_world = { "map_page_maps": ["maps/maps_pop.json"], - "map_page_locations": ["locations/locations_pop_er.json"], + "map_page_locations": ["locations/locations_pop_er.json", "locations/locations_breakables.json"], "map_page_setting_key": "Slot:{player}:Current Map", "map_page_index": map_page_index, "external_pack_key": "ut_poptracker_path", From a9b35de7ee9d02d320aaae4b28259ae0ec3139ad Mon Sep 17 00:00:00 2001 From: Justus Lind Date: Sat, 12 Jul 2025 23:02:49 +1000 Subject: [PATCH 182/183] Muse Dash: Update song list to Rotaeno Update/7th Anniversary (#5066) --- worlds/musedash/MuseDashData.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/worlds/musedash/MuseDashData.py b/worlds/musedash/MuseDashData.py index f2bcf1220fa1..bcb4ab8e2a78 100644 --- a/worlds/musedash/MuseDashData.py +++ b/worlds/musedash/MuseDashData.py @@ -641,4 +641,17 @@ "Save Yourself": SongData(2900765, "85-3", "Happy Otaku Pack Vol.20", True, 5, 7, 10), "Menace": SongData(2900766, "85-4", "Happy Otaku Pack Vol.20", True, 7, 9, 11), "Dangling": SongData(2900767, "85-5", "Happy Otaku Pack Vol.20", True, 6, 8, 10), + "Inverted World": SongData(2900768, "86-0", "Aquaria Cruising Guide", True, 4, 6, 8), + "Suito": SongData(2900769, "86-1", "Aquaria Cruising Guide", True, 6, 8, 11), + "The Promised Land": SongData(2900770, "86-2", "Aquaria Cruising Guide", True, 4, 6, 9), + "Alfheim's faith": SongData(2900771, "86-3", "Aquaria Cruising Guide", True, 6, 8, 11), + "Heaven's Cage": SongData(2900772, "86-4", "Aquaria Cruising Guide", True, 5, 7, 10), + "Broomstick adventure!": SongData(2900773, "86-5", "Aquaria Cruising Guide", True, 7, 9, 11), + "Strong Nurse Buro-chan!": SongData(2900774, "43-61", "MD Plus Project", True, 5, 7, 9), + "Cubism": SongData(2900775, "43-62", "MD Plus Project", False, 5, 7, 9), + "Cubibibibism": SongData(2900776, "43-63", "MD Plus Project", False, 6, 8, 10), + "LET'S TOAST!!": SongData(2900777, "43-64", "MD Plus Project", False, 6, 8, 10), + "#YamiKawa": SongData(2900778, "43-65", "MD Plus Project", False, 5, 7, 10), + "Rainy Step": SongData(2900779, "43-66", "MD Plus Project", False, 2, 5, 8), + "OHOSHIKATSU": SongData(2900780, "43-67", "MD Plus Project", False, 5, 7, 10), } From ec3f168a09b54d8ee41e44f8fca70a582f9f0ddf Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Mon, 14 Jul 2025 07:22:10 +0000 Subject: [PATCH 183/183] Doc: match statement in style guide (#5187) * Test: add micro benchmark for match * Doc: add 'match' to python style guide --- docs/style.md | 4 +++ test/benchmark/match.py | 66 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 test/benchmark/match.py diff --git a/docs/style.md b/docs/style.md index 81853f41725b..5333155db96a 100644 --- a/docs/style.md +++ b/docs/style.md @@ -29,6 +29,10 @@ * New classes, attributes, and methods in core code should have docstrings that follow [reST style](https://peps.python.org/pep-0287/). * Worlds that do not follow PEP8 should still have a consistent style across its files to make reading easier. +* [Match statements](https://docs.python.org/3/tutorial/controlflow.html#tut-match) + may be used instead of `if`-`elif` if they result in nicer code, or they actually use pattern matching. + Beware of the performance: they are not `goto`s, but `if`-`elif` under the hood, and you may have less control. When + in doubt, just don't use it. ## Markdown diff --git a/test/benchmark/match.py b/test/benchmark/match.py new file mode 100644 index 000000000000..ccb600c0ba99 --- /dev/null +++ b/test/benchmark/match.py @@ -0,0 +1,66 @@ +"""Micro benchmark comparing match as "switch" with if-elif and dict access""" + +from timeit import timeit + + +def make_match(count: int) -> str: + code = f"for val in range({count}):\n match val:\n" + for n in range(count): + m = n + 1 + code += f" case {n}:\n" + code += f" res = {m}\n" + return code + + +def make_elif(count: int) -> str: + code = f"for val in range({count}):\n" + for n in range(count): + m = n + 1 + code += f" {'' if n == 0 else 'el'}if val == {n}:\n" + code += f" res = {m}\n" + return code + + +def make_dict(count: int, mode: str) -> str: + if mode == "value": + code = "dct = {\n" + for n in range(count): + m = n + 1 + code += f" {n}: {m},\n" + code += "}\n" + code += f"for val in range({count}):\n res = dct[val]" + return code + elif mode == "call": + code = "" + for n in range(count): + m = n + 1 + code += f"def func{n}():\n val = {m}\n\n" + code += "dct = {\n" + for n in range(count): + code += f" {n}: func{n},\n" + code += "}\n" + code += f"for val in range({count}):\n dct[val]()" + return code + return "" + + +def timeit_best_of_5(stmt: str, setup: str = "pass") -> float: + """ + Benchmark some code, returning the best of 5 runs. + :param stmt: Code to benchmark + :param setup: Optional code to set up environment + :return: Time taken in microseconds + """ + return min(timeit(stmt, setup, number=10000, globals={}) for _ in range(5)) * 100 + + +def main() -> None: + for count in (3, 5, 8, 10, 20, 30): + print(f"value of {count:-2} with match: {timeit_best_of_5(make_match(count)) / count:.3f} us") + print(f"value of {count:-2} with elif: {timeit_best_of_5(make_elif(count)) / count:.3f} us") + print(f"value of {count:-2} with dict: {timeit_best_of_5(make_dict(count, 'value')) / count:.3f} us") + print(f"call of {count:-2} with dict: {timeit_best_of_5(make_dict(count, 'call')) / count:.3f} us") + + +if __name__ == "__main__": + main()

    X?{kJ@$Fj8%cu@+Ts? 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