From c919dc83ab5611a335a9cdf4ac73078a6f7be44d Mon Sep 17 00:00:00 2001 From: mivanit Date: Tue, 10 Sep 2024 12:40:36 -0600 Subject: [PATCH] rebuild docs --- docs/combined/maze_dataset.html | 848 +- docs/combined/maze_dataset.md | 734 +- docs/combined/maze_dataset.txt | 266 +- docs/combined/maze_dataset_gfm.md | 841 +- docs/coverage/coverage.svg | 4 +- docs/coverage/coverage.txt | 8 +- docs/coverage/html/class_index.html | 232 +- docs/coverage/html/function_index.html | 748 +- docs/coverage/html/index.html | 24 +- docs/coverage/html/status.json | 2 +- .../html/z_0051794d125b4bfe___init___py.html | 4 +- .../z_0051794d125b4bfe_all_tokenizers_py.html | 26 +- .../z_0051794d125b4bfe_maze_tokenizer_py.html | 4257 +++---- .../z_0051794d125b4bfe_save_hashes_py.html | 4 +- .../html/z_10d4c7453a7a5aef___init___py.html | 4 +- .../z_10d4c7453a7a5aef_plot_dataset_py.html | 4 +- .../html/z_10d4c7453a7a5aef_plot_maze_py.html | 4 +- .../z_10d4c7453a7a5aef_plot_tokens_py.html | 4 +- .../z_10d4c7453a7a5aef_print_tokens_py.html | 4 +- .../html/z_1b97538aa896fa53___init___py.html | 4 +- ...b97538aa896fa53_default_generators_py.html | 4 +- .../z_1b97538aa896fa53_generators_py.html | 4 +- ...8afbbf55eb4_test_collected_dataset_py.html | 4 +- .../z_3fc138afbbf55eb4_test_configs_py.html | 4 +- ...z_3fc138afbbf55eb4_test_rasterized_py.html | 4 +- ...99b14080_test_collect_gen_metadata_py.html | 4 +- ...14080_test_get_forking_path_points_py.html | 4 +- .../z_6b0ad3e6d42bedf8_test_maze_plot_py.html | 4 +- .../html/z_7c84b8200f0d377b___init___py.html | 4 +- .../html/z_7c84b8200f0d377b_constants_py.html | 395 +- .../z_7c84b8200f0d377b_testing_utils_py.html | 4 +- .../z_7c84b8200f0d377b_token_utils_py.html | 4 +- .../html/z_7c84b8200f0d377b_utils_py.html | 4 +- ...7d7f3d4ee_test_coords_string_split_py.html | 4 +- ...737d7f3d4ee_test_maze_tokenization_py.html | 4 +- ..._89554737d7f3d4ee_test_token_utils_py.html | 4 +- .../z_89554737d7f3d4ee_test_tokenizer_py.html | 4 +- .../z_89554737d7f3d4ee_test_vocab_py.html | 4 +- ...42ff01_test_bool_array_from_string_py.html | 4 +- ...de7dff542ff01_test_coord_str_tuple_py.html | 4 +- ...f542ff01_test_corner_first_ndindex_py.html | 4 +- ...e7dff542ff01_test_custom_endpoints_py.html | 4 +- ...z_8dade7dff542ff01_test_generators_py.html | 4 +- ..._8dade7dff542ff01_test_latticemaze_py.html | 4 +- ...8dade7dff542ff01_test_maze_dataset_py.html | 4 +- .../z_8dade7dff542ff01_test_neighbors_py.html | 4 +- ..._8dade7dff542ff01_test_solved_maze_py.html | 4 +- .../html/z_d596bbe969677aba___init___py.html | 4 +- ...d596bbe969677aba_collected_dataset_py.html | 4 +- .../html/z_d596bbe969677aba_configs_py.html | 4 +- .../html/z_d596bbe969677aba_dataset_py.html | 4 +- .../z_d596bbe969677aba_maze_dataset_py.html | 6 +- .../z_d596bbe969677aba_rasterized_py.html | 4 +- .../html/z_d6b9f282a77fc49c___init___py.html | 4 +- .../z_d6b9f282a77fc49c_lattice_maze_py.html | 1919 +-- docs/maze_dataset.html | 2859 ++--- docs/maze_dataset/constants.html | 407 +- docs/maze_dataset/dataset.html | 6 +- docs/maze_dataset/dataset/maze_dataset.html | 8 +- docs/maze_dataset/generation.html | 2 +- docs/maze_dataset/generation/generators.html | 2 +- docs/maze_dataset/maze.html | 2853 ++--- docs/maze_dataset/maze/lattice_maze.html | 4788 +++---- docs/maze_dataset/tokenization.html | 6817 +++++----- .../tokenization/all_tokenizers.html | 54 +- .../tokenization/maze_tokenizer.html | 10435 ++++++++-------- docs/search.js | 2 +- 67 files changed, 19367 insertions(+), 19336 deletions(-) diff --git a/docs/combined/maze_dataset.html b/docs/combined/maze_dataset.html index dd7089a..f5f83fa 100644 --- a/docs/combined/maze_dataset.html +++ b/docs/combined/maze_dataset.html @@ -410,7 +410,7 @@

Citing

class SolvedMaze(maze_dataset.maze.lattice_maze.TargetedLatticeMaze):

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1116-L1254">View Source on GitHub

Stores a maze and a solution

SolvedMaze

@@ -424,7 +424,7 @@

SolvedMaze

allow_invalid: bool = False )

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1122-L1165">View Source on GitHub

Returns:

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1970-L1975">View Source on GitHub

Property wrapper for tokenizer_element_tree so that it can be used in properties_to_serialize.

@@ -12866,21 +12860,21 @@

Parameters

(self) -> dict

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1977-L1981">View Source on GitHub

Nested dictionary of the internal TokenizerElements.

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1983-L1986">View Source on GitHub

Serializes MazeTokenizer into a key for encoding in zanj

def summary

(self) -> dict[str, str]

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1988-L1995">View Source on GitHub

Single-level dictionary of the internal TokenizerElements.

@@ -12892,7 +12886,7 @@

def summary

*elements: Sequence[type[maze_dataset.tokenization.maze_tokenizer._TokenizerElement] | maze_dataset.tokenization.maze_tokenizer._TokenizerElement] ) -> bool

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2014-L2030">View Source on GitHub

Returns True if the MazeTokenizerModular instance contains ALL of the items specified in elements.

@@ -12911,7 +12905,7 @@

def is_valid

(self)

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2032-L2037">View Source on GitHub

Returns True if self is a valid tokenizer. Evaluates the validity of all of self.tokenizer_elements @@ -12921,7 +12915,7 @@

def is_valid

(self) -> bool

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2039-L2046">View Source on GitHub

Returns if self has identical stringification behavior as any legacy MazeTokenizer.

@@ -12930,12 +12924,12 @@

def is_valid

(self, do_assert: bool = False) -> bool

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2048-L2075">View Source on GitHub

Returns if the tokenizer is returned by -all_tokenizers._get_all_tokenizers, the set of tested and +all_tokenizers.get_all_tokenizers, the set of tested and reliable tokenizers.

-

Since evaluating all_tokenizers._get_all_tokenizers is +

Since evaluating all_tokenizers.get_all_tokenizers is expensive, instead checks for membership of self’s hash in get_all_tokenizer_hashes().

if do_assert is True, raises an @@ -12944,13 +12938,13 @@

def is_AOTP

(self) -> bool

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2077-L2078">View Source on GitHub

def is_UT

(self) -> bool

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2080-L2081">View Source on GitHub

def from_legacy

@@ -12960,7 +12954,7 @@

def is_UT

legacy_maze_tokenizer: maze_dataset.tokenization.maze_tokenizer.MazeTokenizer | maze_dataset.tokenization.maze_tokenizer.TokenizationMode ) -> maze_dataset.tokenization.maze_tokenizer.MazeTokenizerModular

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2086-L2101">View Source on GitHub

Maps a legacy MazeTokenizer or TokenizationMode to its equivalent @@ -12973,7 +12967,7 @@

def is_UT

tokens: str | list[str] ) -> maze_dataset.tokenization.maze_tokenizer.MazeTokenizerModular

View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2105-L2115">View Source on GitHub

Infers most MazeTokenizerModular parameters from a full sequence of tokens.

@@ -12981,40 +12975,40 @@

def is_UT

  • token_arr: list[str] | None
  • View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2117-L2120">View Source on GitHub

    map from index to token

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2122-L2125">View Source on GitHub

    map from token to index

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2127-L2130">View Source on GitHub

    Number of tokens in the static vocab

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2132-L2136">View Source on GitHub

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2138-L2140">View Source on GitHub

    def to_tokens

    (self, maze: maze_dataset.maze.lattice_maze.LatticeMaze) -> list[str]

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2145-L2150">View Source on GitHub

    Converts maze into a list of tokens.

    def to_tokens

    coords: list[tuple[int, int] | jaxtyping.Int8[ndarray, 'row_col']] ) -> list[str]

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2152-L2157">View Source on GitHub

    def strings_to_coords

    @@ -13035,20 +13029,20 @@

    def to_tokens

    when_noncoord: Literal['except', 'skip', 'include'] = 'skip' ) -> list[str | tuple[int, int]]

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2159-L2168">View Source on GitHub

    def encode

    (text: str | list[str]) -> list[int]

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2170-L2181">View Source on GitHub

    encode a string or list of strings into a list of tokens

    def decode

    (token_ids: Sequence[int], joined_tokens: bool = False) -> list[str] | str

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2183-L2195">View Source on GitHub

    decode a list of tokens into a string or list of strings

    def serialize

    @@ -13095,7 +13089,7 @@

    Inherited Members

    (path: pathlib.Path)

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2204-L2228">View Source on GitHub

    set path to tokenizer hashes, and reload the hashes if needed

    the hashes are expected to be stored in and read from @@ -13109,7 +13103,7 @@

    Inherited Members

    () -> jaxtyping.Int64[ndarray, 'n_tokenizers']

    View +href="https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2246-L2257">View Source on GitHub

    docs for maze-dataset diff --git a/docs/combined/maze_dataset.md b/docs/combined/maze_dataset.md index 9a0d19d..69719e7 100644 --- a/docs/combined/maze_dataset.md +++ b/docs/combined/maze_dataset.md @@ -310,7 +310,7 @@ If you use this code in your research, please cite [our paper](http://arxiv.org/ ### `class SolvedMaze(maze_dataset.maze.lattice_maze.TargetedLatticeMaze):` { #SolvedMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1109-L1247) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1116-L1254) Stores a maze and a solution @@ -328,7 +328,7 @@ Stores a maze and a solution ) ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1115-L1158) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1122-L1165) @@ -344,14 +344,14 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1170-L1175) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1177-L1182) - `maze: maze_dataset.maze.lattice_maze.LatticeMaze ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1178-L1184) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1185-L1191) @@ -366,7 +366,7 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1186-L1194) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1193-L1201) @@ -381,7 +381,7 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1196-L1212) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1203-L1219) solves the given targeted lattice maze and returns a SolvedMaze @@ -396,7 +396,7 @@ solves the given targeted lattice maze and returns a SolvedMaze ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1214-L1237) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1221-L1244) coordinates and their indicies from the solution where a fork is present @@ -411,7 +411,7 @@ coordinates and their indicies from the solution where a fork is present ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1239-L1247) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1246-L1254) coordinates from the solution where there is only a single (non-backtracking) point to move to @@ -757,7 +757,7 @@ a maze dataset class. This is a collection of solved mazes, and should be initia return the dataset as tokens according to the passed `maze_tokenizer` -the `maze_tokenizer` should be either a `MazeTokenizer` or a `ModularMazeTokenizer` +the `maze_tokenizer` should be either a `MazeTokenizer` or a `MazeTokenizerModular` if `join_tokens_individual_maze` is True, then the tokens of each maze are joined with a space, and the result is a list of strings. @@ -1174,7 +1174,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class TargetedLatticeMaze(maze_dataset.maze.lattice_maze.LatticeMaze):` { #TargetedLatticeMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1036-L1106) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1043-L1113) A LatticeMaze with a start and end position @@ -1210,7 +1210,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1073-L1078) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1080-L1085) @@ -1221,7 +1221,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1087-L1092) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1094-L1099) @@ -1237,7 +1237,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1094-L1106) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1101-L1113) @@ -1316,7 +1316,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class LatticeMaze(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #LatticeMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L101-L1033) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L101-L1040) lattice maze (nodes on a lattice, connections only to neighboring nodes) @@ -1542,12 +1542,13 @@ TODO: other connected components? allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L368-L477) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L368-L484) return a path between randomly chosen start and end nodes within the connected component @@ -1569,7 +1570,10 @@ Note that setting special conditions on start and end positions might cause the (defaults to `False`) - `deadend_end : bool` whether to ***force*** the end position to be a deadend (defaults to `False`) - (defaults to `False`) + (defaults to `False`) + - `endpoints_not_equal : bool` + whether to ensure tha the start and end point are not the same + (defaults to `False`) ### Returns: - `CoordArray` @@ -1589,7 +1593,7 @@ Note that setting special conditions on start and end positions might cause the ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L482-L485) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L489-L492) @@ -1603,7 +1607,7 @@ Note that setting special conditions on start and end positions might cause the ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L487-L526) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L494-L533) create a LatticeMaze from a list of connections @@ -1618,7 +1622,7 @@ create a LatticeMaze from a list of connections ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L528-L547) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L535-L554) @@ -1632,7 +1636,7 @@ create a LatticeMaze from a list of connections ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L596-L604) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L603-L611) serialize maze and solution to tokens @@ -1648,7 +1652,7 @@ serialize maze and solution to tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L705-L731) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L712-L738) Constructs a maze from a tokenization. @@ -1665,7 +1669,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L762-L816) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L769-L823) @@ -1679,7 +1683,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L866-L981) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L873-L988) @@ -1690,7 +1694,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L998-L1019) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1005-L1026) return an ASCII grid of the maze @@ -1702,7 +1706,7 @@ return an ASCII grid of the maze ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1021-L1033) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1028-L1040) @@ -1986,7 +1990,7 @@ constants and type hints used accross the package constants and type hints used accross the package -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L0-L210) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L0-L221) @@ -2034,7 +2038,7 @@ n_edges * 2 * 2 array of connections, like an adjacency list ### `class SpecialTokensError(builtins.Exception):` { #SpecialTokensError } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L29-L30) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L35-L36) Common base class for all non-exit exceptions. @@ -2076,21 +2080,25 @@ down, up, right, left as vectors - `VOCAB: types._VOCAB_BASE = _VOCAB_BASE(ADJLIST_START='', ADJLIST_END='', TARGET_START='', TARGET_END='', ORIGIN_START='', ORIGIN_END='', PATH_START='', PATH_END='', CONNECTOR='<-->', ADJACENCY_ENDLINE=';', PADDING='', COORD_PRE='(', COORD_INTRA=',', COORD_POST=')', TARGET_INTRA='=', TARGET_POST='||', PATH_INTRA=':', PATH_POST='THEN', NEGATIVE='-', UNKNOWN='', TARGET_A='TARGET_A', TARGET_B='TARGET_B', TARGET_C='TARGET_C', TARGET_D='TARGET_D', TARGET_E='TARGET_E', TARGET_F='TARGET_F', TARGET_G='TARGET_G', TARGET_H='TARGET_H', TARGET_I='TARGET_I', TARGET_J='TARGET_J', TARGET_K='TARGET_K', TARGET_L='TARGET_L', TARGET_M='TARGET_M', TARGET_N='TARGET_N', TARGET_O='TARGET_O', TARGET_P='TARGET_P', TARGET_Q='TARGET_Q', TARGET_R='TARGET_R', TARGET_S='TARGET_S', TARGET_T='TARGET_T', TARGET_U='TARGET_U', TARGET_V='TARGET_V', TARGET_W='TARGET_W', TARGET_X='TARGET_X', TARGET_Y='TARGET_Y', TARGET_Z='TARGET_Z', TARGET_NORTH='TARGET_NORTH', TARGET_SOUTH='TARGET_SOUTH', TARGET_EAST='TARGET_EAST', TARGET_WEST='TARGET_WEST', TARGET_NORTHEAST='TARGET_NORTHEAST', TARGET_NORTHWEST='TARGET_NORTHWEST', TARGET_SOUTHEAST='TARGET_SOUTHEAST', TARGET_SOUTHWEST='TARGET_SOUTHWEST', TARGET_CENTER='TARGET_CENTER', PATH_NORTH='NORTH', PATH_SOUTH='SOUTH', PATH_EAST='EAST', PATH_WEST='WEST', PATH_FORWARD='FORWARD', PATH_BACKWARD='BACKWARD', PATH_LEFT='LEFT', PATH_RIGHT='RIGHT', PATH_STAY='STAY', I_000='+0', I_001='+1', I_002='+2', I_003='+3', I_004='+4', I_005='+5', I_006='+6', I_007='+7', I_008='+8', I_009='+9', I_010='+10', I_011='+11', I_012='+12', I_013='+13', I_014='+14', I_015='+15', I_016='+16', I_017='+17', I_018='+18', I_019='+19', I_020='+20', I_021='+21', I_022='+22', I_023='+23', I_024='+24', I_025='+25', I_026='+26', I_027='+27', I_028='+28', I_029='+29', I_030='+30', I_031='+31', I_032='+32', I_033='+33', I_034='+34', I_035='+35', I_036='+36', I_037='+37', I_038='+38', I_039='+39', I_040='+40', I_041='+41', I_042='+42', I_043='+43', I_044='+44', I_045='+45', I_046='+46', I_047='+47', I_048='+48', I_049='+49', I_050='+50', I_051='+51', I_052='+52', I_053='+53', I_054='+54', I_055='+55', I_056='+56', I_057='+57', I_058='+58', I_059='+59', I_060='+60', I_061='+61', I_062='+62', I_063='+63', I_064='+64', I_065='+65', I_066='+66', I_067='+67', I_068='+68', I_069='+69', I_070='+70', I_071='+71', I_072='+72', I_073='+73', I_074='+74', I_075='+75', I_076='+76', I_077='+77', I_078='+78', I_079='+79', I_080='+80', I_081='+81', I_082='+82', I_083='+83', I_084='+84', I_085='+85', I_086='+86', I_087='+87', I_088='+88', I_089='+89', I_090='+90', I_091='+91', I_092='+92', I_093='+93', I_094='+94', I_095='+95', I_096='+96', I_097='+97', I_098='+98', I_099='+99', I_100='+100', I_101='+101', I_102='+102', I_103='+103', I_104='+104', I_105='+105', I_106='+106', I_107='+107', I_108='+108', I_109='+109', I_110='+110', I_111='+111', I_112='+112', I_113='+113', I_114='+114', I_115='+115', I_116='+116', I_117='+117', I_118='+118', I_119='+119', I_120='+120', I_121='+121', I_122='+122', I_123='+123', I_124='+124', I_125='+125', I_126='+126', I_127='+127', I_128='+128', I_129='+129', I_130='+130', I_131='+131', I_132='+132', I_133='+133', I_134='+134', I_135='+135', I_136='+136', I_137='+137', I_138='+138', I_139='+139', I_140='+140', I_141='+141', I_142='+142', I_143='+143', I_144='+144', I_145='+145', I_146='+146', I_147='+147', I_148='+148', I_149='+149', I_150='+150', I_151='+151', I_152='+152', I_153='+153', I_154='+154', I_155='+155', I_156='+156', I_157='+157', I_158='+158', I_159='+159', I_160='+160', I_161='+161', I_162='+162', I_163='+163', I_164='+164', I_165='+165', I_166='+166', I_167='+167', I_168='+168', I_169='+169', I_170='+170', I_171='+171', I_172='+172', I_173='+173', I_174='+174', I_175='+175', I_176='+176', I_177='+177', I_178='+178', I_179='+179', I_180='+180', I_181='+181', I_182='+182', I_183='+183', I_184='+184', I_185='+185', I_186='+186', I_187='+187', I_188='+188', I_189='+189', I_190='+190', I_191='+191', I_192='+192', I_193='+193', I_194='+194', I_195='+195', I_196='+196', I_197='+197', I_198='+198', I_199='+199', I_200='+200', I_201='+201', I_202='+202', I_203='+203', I_204='+204', I_205='+205', I_206='+206', I_207='+207', I_208='+208', I_209='+209', I_210='+210', I_211='+211', I_212='+212', I_213='+213', I_214='+214', I_215='+215', I_216='+216', I_217='+217', I_218='+218', I_219='+219', I_220='+220', I_221='+221', I_222='+222', I_223='+223', I_224='+224', I_225='+225', I_226='+226', I_227='+227', I_228='+228', I_229='+229', I_230='+230', I_231='+231', I_232='+232', I_233='+233', I_234='+234', I_235='+235', I_236='+236', I_237='+237', I_238='+238', I_239='+239', I_240='+240', I_241='+241', I_242='+242', I_243='+243', I_244='+244', I_245='+245', I_246='+246', I_247='+247', I_248='+248', I_249='+249', I_250='+250', I_251='+251', I_252='+252', I_253='+253', I_254='+254', I_255='+255', CTT_0='0', CTT_1='1', CTT_2='2', CTT_3='3', CTT_4='4', CTT_5='5', CTT_6='6', CTT_7='7', CTT_8='8', CTT_9='9', CTT_10='10', CTT_11='11', CTT_12='12', CTT_13='13', CTT_14='14', CTT_15='15', CTT_16='16', CTT_17='17', CTT_18='18', CTT_19='19', CTT_20='20', CTT_21='21', CTT_22='22', CTT_23='23', CTT_24='24', CTT_25='25', CTT_26='26', CTT_27='27', CTT_28='28', CTT_29='29', CTT_30='30', CTT_31='31', CTT_32='32', CTT_33='33', CTT_34='34', CTT_35='35', CTT_36='36', CTT_37='37', CTT_38='38', CTT_39='39', CTT_40='40', CTT_41='41', CTT_42='42', CTT_43='43', CTT_44='44', CTT_45='45', CTT_46='46', CTT_47='47', CTT_48='48', CTT_49='49', CTT_50='50', CTT_51='51', CTT_52='52', CTT_53='53', CTT_54='54', CTT_55='55', CTT_56='56', CTT_57='57', CTT_58='58', CTT_59='59', CTT_60='60', CTT_61='61', CTT_62='62', CTT_63='63', CTT_64='64', CTT_65='65', CTT_66='66', CTT_67='67', CTT_68='68', CTT_69='69', CTT_70='70', CTT_71='71', CTT_72='72', CTT_73='73', CTT_74='74', CTT_75='75', CTT_76='76', CTT_77='77', CTT_78='78', CTT_79='79', CTT_80='80', CTT_81='81', CTT_82='82', CTT_83='83', CTT_84='84', CTT_85='85', CTT_86='86', CTT_87='87', CTT_88='88', CTT_89='89', CTT_90='90', CTT_91='91', CTT_92='92', CTT_93='93', CTT_94='94', CTT_95='95', CTT_96='96', CTT_97='97', CTT_98='98', CTT_99='99', CTT_100='100', CTT_101='101', CTT_102='102', CTT_103='103', CTT_104='104', CTT_105='105', CTT_106='106', CTT_107='107', CTT_108='108', CTT_109='109', CTT_110='110', CTT_111='111', CTT_112='112', CTT_113='113', CTT_114='114', CTT_115='115', CTT_116='116', CTT_117='117', CTT_118='118', CTT_119='119', CTT_120='120', CTT_121='121', CTT_122='122', CTT_123='123', CTT_124='124', CTT_125='125', CTT_126='126', CTT_127='127', I_N256='-256', I_N255='-255', I_N254='-254', I_N253='-253', I_N252='-252', I_N251='-251', I_N250='-250', I_N249='-249', I_N248='-248', I_N247='-247', I_N246='-246', I_N245='-245', I_N244='-244', I_N243='-243', I_N242='-242', I_N241='-241', I_N240='-240', I_N239='-239', I_N238='-238', I_N237='-237', I_N236='-236', I_N235='-235', I_N234='-234', I_N233='-233', I_N232='-232', I_N231='-231', I_N230='-230', I_N229='-229', I_N228='-228', I_N227='-227', I_N226='-226', I_N225='-225', I_N224='-224', I_N223='-223', I_N222='-222', I_N221='-221', I_N220='-220', I_N219='-219', I_N218='-218', I_N217='-217', I_N216='-216', I_N215='-215', I_N214='-214', I_N213='-213', I_N212='-212', I_N211='-211', I_N210='-210', I_N209='-209', I_N208='-208', I_N207='-207', I_N206='-206', I_N205='-205', I_N204='-204', I_N203='-203', I_N202='-202', I_N201='-201', I_N200='-200', I_N199='-199', I_N198='-198', I_N197='-197', I_N196='-196', I_N195='-195', I_N194='-194', I_N193='-193', I_N192='-192', I_N191='-191', I_N190='-190', I_N189='-189', I_N188='-188', I_N187='-187', I_N186='-186', I_N185='-185', I_N184='-184', I_N183='-183', I_N182='-182', I_N181='-181', I_N180='-180', I_N179='-179', I_N178='-178', I_N177='-177', I_N176='-176', I_N175='-175', I_N174='-174', I_N173='-173', I_N172='-172', I_N171='-171', I_N170='-170', I_N169='-169', I_N168='-168', I_N167='-167', I_N166='-166', I_N165='-165', I_N164='-164', I_N163='-163', I_N162='-162', I_N161='-161', I_N160='-160', I_N159='-159', I_N158='-158', I_N157='-157', I_N156='-156', I_N155='-155', I_N154='-154', I_N153='-153', I_N152='-152', I_N151='-151', I_N150='-150', I_N149='-149', I_N148='-148', I_N147='-147', I_N146='-146', I_N145='-145', I_N144='-144', I_N143='-143', I_N142='-142', I_N141='-141', I_N140='-140', I_N139='-139', I_N138='-138', I_N137='-137', I_N136='-136', I_N135='-135', I_N134='-134', I_N133='-133', I_N132='-132', I_N131='-131', I_N130='-130', I_N129='-129', I_N128='-128', I_N127='-127', I_N126='-126', I_N125='-125', I_N124='-124', I_N123='-123', I_N122='-122', I_N121='-121', I_N120='-120', I_N119='-119', I_N118='-118', I_N117='-117', I_N116='-116', I_N115='-115', I_N114='-114', I_N113='-113', I_N112='-112', I_N111='-111', I_N110='-110', I_N109='-109', I_N108='-108', I_N107='-107', I_N106='-106', I_N105='-105', I_N104='-104', I_N103='-103', I_N102='-102', I_N101='-101', I_N100='-100', I_N099='-99', I_N098='-98', I_N097='-97', I_N096='-96', I_N095='-95', I_N094='-94', I_N093='-93', I_N092='-92', I_N091='-91', I_N090='-90', I_N089='-89', I_N088='-88', I_N087='-87', I_N086='-86', I_N085='-85', I_N084='-84', I_N083='-83', I_N082='-82', I_N081='-81', I_N080='-80', I_N079='-79', I_N078='-78', I_N077='-77', I_N076='-76', I_N075='-75', I_N074='-74', I_N073='-73', I_N072='-72', I_N071='-71', I_N070='-70', I_N069='-69', I_N068='-68', I_N067='-67', I_N066='-66', I_N065='-65', I_N064='-64', I_N063='-63', I_N062='-62', I_N061='-61', I_N060='-60', I_N059='-59', I_N058='-58', I_N057='-57', I_N056='-56', I_N055='-55', I_N054='-54', I_N053='-53', I_N052='-52', I_N051='-51', I_N050='-50', I_N049='-49', I_N048='-48', I_N047='-47', I_N046='-46', I_N045='-45', I_N044='-44', I_N043='-43', I_N042='-42', I_N041='-41', I_N040='-40', I_N039='-39', I_N038='-38', I_N037='-37', I_N036='-36', I_N035='-35', I_N034='-34', I_N033='-33', I_N032='-32', I_N031='-31', I_N030='-30', I_N029='-29', I_N028='-28', I_N027='-27', I_N026='-26', I_N025='-25', I_N024='-24', I_N023='-23', I_N022='-22', I_N021='-21', I_N020='-20', I_N019='-19', I_N018='-18', I_N017='-17', I_N016='-16', I_N015='-15', I_N014='-14', I_N013='-13', I_N012='-12', I_N011='-11', I_N010='-10', I_N009='-9', I_N008='-8', I_N007='-7', I_N006='-6', I_N005='-5', I_N004='-4', I_N003='-3', I_N002='-2', I_N001='-1', PATH_PRE='STEP', ADJLIST_PRE='ADJ_GROUP', ADJLIST_INTRA='&', ADJLIST_WALL='', RESERVE_708='', RESERVE_709='', RESERVE_710='', RESERVE_711='', RESERVE_712='', RESERVE_713='', RESERVE_714='', RESERVE_715='', RESERVE_716='', RESERVE_717='', RESERVE_718='', RESERVE_719='', RESERVE_720='', RESERVE_721='', RESERVE_722='', RESERVE_723='', RESERVE_724='', RESERVE_725='', RESERVE_726='', RESERVE_727='', RESERVE_728='', RESERVE_729='', RESERVE_730='', RESERVE_731='', RESERVE_732='', RESERVE_733='', RESERVE_734='', RESERVE_735='', RESERVE_736='', RESERVE_737='', RESERVE_738='', RESERVE_739='', RESERVE_740='', RESERVE_741='', RESERVE_742='', RESERVE_743='', RESERVE_744='', RESERVE_745='', RESERVE_746='', RESERVE_747='', RESERVE_748='', RESERVE_749='', RESERVE_750='', RESERVE_751='', RESERVE_752='', RESERVE_753='', RESERVE_754='', RESERVE_755='', RESERVE_756='', RESERVE_757='', RESERVE_758='', RESERVE_759='', RESERVE_760='', RESERVE_761='', RESERVE_762='', RESERVE_763='', RESERVE_764='', RESERVE_765='', RESERVE_766='', RESERVE_767='', RESERVE_768='', RESERVE_769='', RESERVE_770='', RESERVE_771='', RESERVE_772='', RESERVE_773='', RESERVE_774='', RESERVE_775='', RESERVE_776='', RESERVE_777='', RESERVE_778='', RESERVE_779='', RESERVE_780='', RESERVE_781='', RESERVE_782='', RESERVE_783='', RESERVE_784='', RESERVE_785='', RESERVE_786='', RESERVE_787='', RESERVE_788='', RESERVE_789='', RESERVE_790='', RESERVE_791='', RESERVE_792='', RESERVE_793='', RESERVE_794='', RESERVE_795='', RESERVE_796='', RESERVE_797='', RESERVE_798='', RESERVE_799='', RESERVE_800='', RESERVE_801='', RESERVE_802='', RESERVE_803='', RESERVE_804='', RESERVE_805='', RESERVE_806='', RESERVE_807='', RESERVE_808='', RESERVE_809='', RESERVE_810='', RESERVE_811='', RESERVE_812='', RESERVE_813='', RESERVE_814='', RESERVE_815='', RESERVE_816='', RESERVE_817='', RESERVE_818='', RESERVE_819='', RESERVE_820='', RESERVE_821='', RESERVE_822='', RESERVE_823='', RESERVE_824='', RESERVE_825='', RESERVE_826='', RESERVE_827='', RESERVE_828='', RESERVE_829='', RESERVE_830='', RESERVE_831='', RESERVE_832='', RESERVE_833='', RESERVE_834='', RESERVE_835='', RESERVE_836='', RESERVE_837='', RESERVE_838='', RESERVE_839='', RESERVE_840='', RESERVE_841='', RESERVE_842='', RESERVE_843='', RESERVE_844='', RESERVE_845='', RESERVE_846='', RESERVE_847='', RESERVE_848='', RESERVE_849='', RESERVE_850='', RESERVE_851='', RESERVE_852='', RESERVE_853='', RESERVE_854='', RESERVE_855='', RESERVE_856='', RESERVE_857='', RESERVE_858='', RESERVE_859='', RESERVE_860='', RESERVE_861='', RESERVE_862='', RESERVE_863='', RESERVE_864='', RESERVE_865='', RESERVE_866='', RESERVE_867='', RESERVE_868='', RESERVE_869='', RESERVE_870='', RESERVE_871='', RESERVE_872='', RESERVE_873='', RESERVE_874='', RESERVE_875='', RESERVE_876='', RESERVE_877='', RESERVE_878='', RESERVE_879='', RESERVE_880='', RESERVE_881='', RESERVE_882='', RESERVE_883='', RESERVE_884='', RESERVE_885='', RESERVE_886='', RESERVE_887='', RESERVE_888='', RESERVE_889='', RESERVE_890='', RESERVE_891='', RESERVE_892='', RESERVE_893='', RESERVE_894='', RESERVE_895='', RESERVE_896='', RESERVE_897='', RESERVE_898='', RESERVE_899='', RESERVE_900='', RESERVE_901='', RESERVE_902='', RESERVE_903='', RESERVE_904='', RESERVE_905='', RESERVE_906='', RESERVE_907='', RESERVE_908='', RESERVE_909='', RESERVE_910='', RESERVE_911='', RESERVE_912='', RESERVE_913='', RESERVE_914='', RESERVE_915='', RESERVE_916='', RESERVE_917='', RESERVE_918='', RESERVE_919='', RESERVE_920='', RESERVE_921='', RESERVE_922='', RESERVE_923='', RESERVE_924='', RESERVE_925='', RESERVE_926='', RESERVE_927='', RESERVE_928='', RESERVE_929='', RESERVE_930='', RESERVE_931='', RESERVE_932='', RESERVE_933='', RESERVE_934='', RESERVE_935='', RESERVE_936='', RESERVE_937='', RESERVE_938='', RESERVE_939='', RESERVE_940='', RESERVE_941='', RESERVE_942='', RESERVE_943='', RESERVE_944='', RESERVE_945='', RESERVE_946='', RESERVE_947='', RESERVE_948='', RESERVE_949='', RESERVE_950='', RESERVE_951='', RESERVE_952='', RESERVE_953='', RESERVE_954='', RESERVE_955='', RESERVE_956='', RESERVE_957='', RESERVE_958='', RESERVE_959='', RESERVE_960='', RESERVE_961='', RESERVE_962='', RESERVE_963='', RESERVE_964='', RESERVE_965='', RESERVE_966='', RESERVE_967='', RESERVE_968='', RESERVE_969='', RESERVE_970='', RESERVE_971='', RESERVE_972='', RESERVE_973='', RESERVE_974='', RESERVE_975='', RESERVE_976='', RESERVE_977='', RESERVE_978='', RESERVE_979='', RESERVE_980='', RESERVE_981='', RESERVE_982='', RESERVE_983='', RESERVE_984='', RESERVE_985='', RESERVE_986='', RESERVE_987='', RESERVE_988='', RESERVE_989='', RESERVE_990='', RESERVE_991='', RESERVE_992='', RESERVE_993='', RESERVE_994='', RESERVE_995='', RESERVE_996='', RESERVE_997='', RESERVE_998='', RESERVE_999='', RESERVE_1000='', RESERVE_1001='', RESERVE_1002='', RESERVE_1003='', RESERVE_1004='', RESERVE_1005='', RESERVE_1006='', RESERVE_1007='', RESERVE_1008='', RESERVE_1009='', RESERVE_1010='', RESERVE_1011='', RESERVE_1012='', RESERVE_1013='', RESERVE_1014='', RESERVE_1015='', RESERVE_1016='', RESERVE_1017='', RESERVE_1018='', RESERVE_1019='', RESERVE_1020='', RESERVE_1021='', RESERVE_1022='', RESERVE_1023='', RESERVE_1024='', RESERVE_1025='', RESERVE_1026='', RESERVE_1027='', RESERVE_1028='', RESERVE_1029='', RESERVE_1030='', RESERVE_1031='', RESERVE_1032='', RESERVE_1033='', RESERVE_1034='', RESERVE_1035='', RESERVE_1036='', RESERVE_1037='', RESERVE_1038='', RESERVE_1039='', RESERVE_1040='', RESERVE_1041='', RESERVE_1042='', RESERVE_1043='', RESERVE_1044='', RESERVE_1045='', RESERVE_1046='', RESERVE_1047='', RESERVE_1048='', RESERVE_1049='', RESERVE_1050='', RESERVE_1051='', RESERVE_1052='', RESERVE_1053='', RESERVE_1054='', RESERVE_1055='', RESERVE_1056='', RESERVE_1057='', RESERVE_1058='', RESERVE_1059='', RESERVE_1060='', RESERVE_1061='', RESERVE_1062='', RESERVE_1063='', RESERVE_1064='', RESERVE_1065='', RESERVE_1066='', RESERVE_1067='', RESERVE_1068='', RESERVE_1069='', RESERVE_1070='', RESERVE_1071='', RESERVE_1072='', RESERVE_1073='', RESERVE_1074='', RESERVE_1075='', RESERVE_1076='', RESERVE_1077='', RESERVE_1078='', RESERVE_1079='', RESERVE_1080='', RESERVE_1081='', RESERVE_1082='', RESERVE_1083='', RESERVE_1084='', RESERVE_1085='', RESERVE_1086='', RESERVE_1087='', RESERVE_1088='', RESERVE_1089='', RESERVE_1090='', RESERVE_1091='', RESERVE_1092='', RESERVE_1093='', RESERVE_1094='', RESERVE_1095='', RESERVE_1096='', RESERVE_1097='', RESERVE_1098='', RESERVE_1099='', RESERVE_1100='', RESERVE_1101='', RESERVE_1102='', RESERVE_1103='', RESERVE_1104='', RESERVE_1105='', RESERVE_1106='', RESERVE_1107='', RESERVE_1108='', RESERVE_1109='', RESERVE_1110='', RESERVE_1111='', RESERVE_1112='', RESERVE_1113='', RESERVE_1114='', RESERVE_1115='', RESERVE_1116='', RESERVE_1117='', RESERVE_1118='', RESERVE_1119='', RESERVE_1120='', RESERVE_1121='', RESERVE_1122='', RESERVE_1123='', RESERVE_1124='', RESERVE_1125='', RESERVE_1126='', RESERVE_1127='', RESERVE_1128='', RESERVE_1129='', RESERVE_1130='', RESERVE_1131='', RESERVE_1132='', RESERVE_1133='', RESERVE_1134='', RESERVE_1135='', RESERVE_1136='', RESERVE_1137='', RESERVE_1138='', RESERVE_1139='', RESERVE_1140='', RESERVE_1141='', RESERVE_1142='', RESERVE_1143='', RESERVE_1144='', RESERVE_1145='', RESERVE_1146='', RESERVE_1147='', RESERVE_1148='', RESERVE_1149='', RESERVE_1150='', RESERVE_1151='', RESERVE_1152='', RESERVE_1153='', RESERVE_1154='', RESERVE_1155='', RESERVE_1156='', RESERVE_1157='', RESERVE_1158='', RESERVE_1159='', RESERVE_1160='', RESERVE_1161='', RESERVE_1162='', RESERVE_1163='', RESERVE_1164='', RESERVE_1165='', RESERVE_1166='', RESERVE_1167='', RESERVE_1168='', RESERVE_1169='', RESERVE_1170='', RESERVE_1171='', RESERVE_1172='', RESERVE_1173='', RESERVE_1174='', RESERVE_1175='', RESERVE_1176='', RESERVE_1177='', RESERVE_1178='', RESERVE_1179='', RESERVE_1180='', RESERVE_1181='', RESERVE_1182='', RESERVE_1183='', RESERVE_1184='', RESERVE_1185='', RESERVE_1186='', RESERVE_1187='', RESERVE_1188='', RESERVE_1189='', RESERVE_1190='', RESERVE_1191='', RESERVE_1192='', RESERVE_1193='', RESERVE_1194='', RESERVE_1195='', RESERVE_1196='', RESERVE_1197='', RESERVE_1198='', RESERVE_1199='', RESERVE_1200='', RESERVE_1201='', RESERVE_1202='', RESERVE_1203='', RESERVE_1204='', RESERVE_1205='', RESERVE_1206='', RESERVE_1207='', RESERVE_1208='', RESERVE_1209='', RESERVE_1210='', RESERVE_1211='', RESERVE_1212='', RESERVE_1213='', RESERVE_1214='', RESERVE_1215='', RESERVE_1216='', RESERVE_1217='', RESERVE_1218='', RESERVE_1219='', RESERVE_1220='', RESERVE_1221='', RESERVE_1222='', RESERVE_1223='', RESERVE_1224='', RESERVE_1225='', RESERVE_1226='', RESERVE_1227='', RESERVE_1228='', RESERVE_1229='', RESERVE_1230='', RESERVE_1231='', RESERVE_1232='', RESERVE_1233='', RESERVE_1234='', RESERVE_1235='', RESERVE_1236='', RESERVE_1237='', RESERVE_1238='', RESERVE_1239='', RESERVE_1240='', RESERVE_1241='', RESERVE_1242='', RESERVE_1243='', RESERVE_1244='', RESERVE_1245='', RESERVE_1246='', RESERVE_1247='', RESERVE_1248='', RESERVE_1249='', RESERVE_1250='', RESERVE_1251='', RESERVE_1252='', RESERVE_1253='', RESERVE_1254='', RESERVE_1255='', RESERVE_1256='', RESERVE_1257='', RESERVE_1258='', RESERVE_1259='', RESERVE_1260='', RESERVE_1261='', RESERVE_1262='', RESERVE_1263='', RESERVE_1264='', RESERVE_1265='', RESERVE_1266='', RESERVE_1267='', RESERVE_1268='', RESERVE_1269='', RESERVE_1270='', RESERVE_1271='', RESERVE_1272='', RESERVE_1273='', RESERVE_1274='', RESERVE_1275='', RESERVE_1276='', RESERVE_1277='', RESERVE_1278='', RESERVE_1279='', RESERVE_1280='', RESERVE_1281='', RESERVE_1282='', RESERVE_1283='', RESERVE_1284='', RESERVE_1285='', RESERVE_1286='', RESERVE_1287='', RESERVE_1288='', RESERVE_1289='', RESERVE_1290='', RESERVE_1291='', RESERVE_1292='', RESERVE_1293='', RESERVE_1294='', RESERVE_1295='', RESERVE_1296='', RESERVE_1297='', RESERVE_1298='', RESERVE_1299='', RESERVE_1300='', RESERVE_1301='', RESERVE_1302='', RESERVE_1303='', RESERVE_1304='', RESERVE_1305='', RESERVE_1306='', RESERVE_1307='', RESERVE_1308='', RESERVE_1309='', RESERVE_1310='', RESERVE_1311='', RESERVE_1312='', RESERVE_1313='', RESERVE_1314='', RESERVE_1315='', RESERVE_1316='', RESERVE_1317='', RESERVE_1318='', RESERVE_1319='', RESERVE_1320='', RESERVE_1321='', RESERVE_1322='', RESERVE_1323='', RESERVE_1324='', RESERVE_1325='', RESERVE_1326='', RESERVE_1327='', RESERVE_1328='', RESERVE_1329='', RESERVE_1330='', RESERVE_1331='', RESERVE_1332='', RESERVE_1333='', RESERVE_1334='', RESERVE_1335='', RESERVE_1336='', RESERVE_1337='', RESERVE_1338='', RESERVE_1339='', RESERVE_1340='', RESERVE_1341='', RESERVE_1342='', RESERVE_1343='', RESERVE_1344='', RESERVE_1345='', RESERVE_1346='', RESERVE_1347='', RESERVE_1348='', RESERVE_1349='', RESERVE_1350='', RESERVE_1351='', RESERVE_1352='', RESERVE_1353='', RESERVE_1354='', RESERVE_1355='', RESERVE_1356='', RESERVE_1357='', RESERVE_1358='', RESERVE_1359='', RESERVE_1360='', RESERVE_1361='', RESERVE_1362='', RESERVE_1363='', RESERVE_1364='', RESERVE_1365='', RESERVE_1366='', RESERVE_1367='', RESERVE_1368='', RESERVE_1369='', RESERVE_1370='', RESERVE_1371='', RESERVE_1372='', RESERVE_1373='', RESERVE_1374='', RESERVE_1375='', RESERVE_1376='', RESERVE_1377='', RESERVE_1378='', RESERVE_1379='', RESERVE_1380='', RESERVE_1381='', RESERVE_1382='', RESERVE_1383='', RESERVE_1384='', RESERVE_1385='', RESERVE_1386='', RESERVE_1387='', RESERVE_1388='', RESERVE_1389='', RESERVE_1390='', RESERVE_1391='', RESERVE_1392='', RESERVE_1393='', RESERVE_1394='', RESERVE_1395='', RESERVE_1396='', RESERVE_1397='', RESERVE_1398='', RESERVE_1399='', RESERVE_1400='', RESERVE_1401='', RESERVE_1402='', RESERVE_1403='', RESERVE_1404='', RESERVE_1405='', RESERVE_1406='', RESERVE_1407='', RESERVE_1408='', RESERVE_1409='', RESERVE_1410='', RESERVE_1411='', RESERVE_1412='', RESERVE_1413='', RESERVE_1414='', RESERVE_1415='', RESERVE_1416='', RESERVE_1417='', RESERVE_1418='', RESERVE_1419='', RESERVE_1420='', RESERVE_1421='', RESERVE_1422='', RESERVE_1423='', RESERVE_1424='', RESERVE_1425='', RESERVE_1426='', RESERVE_1427='', RESERVE_1428='', RESERVE_1429='', RESERVE_1430='', RESERVE_1431='', RESERVE_1432='', RESERVE_1433='', RESERVE_1434='', RESERVE_1435='', RESERVE_1436='', RESERVE_1437='', RESERVE_1438='', RESERVE_1439='', RESERVE_1440='', RESERVE_1441='', RESERVE_1442='', RESERVE_1443='', RESERVE_1444='', RESERVE_1445='', RESERVE_1446='', RESERVE_1447='', RESERVE_1448='', RESERVE_1449='', RESERVE_1450='', RESERVE_1451='', RESERVE_1452='', RESERVE_1453='', RESERVE_1454='', RESERVE_1455='', RESERVE_1456='', RESERVE_1457='', RESERVE_1458='', RESERVE_1459='', RESERVE_1460='', RESERVE_1461='', RESERVE_1462='', RESERVE_1463='', RESERVE_1464='', RESERVE_1465='', RESERVE_1466='', RESERVE_1467='', RESERVE_1468='', RESERVE_1469='', RESERVE_1470='', RESERVE_1471='', RESERVE_1472='', RESERVE_1473='', RESERVE_1474='', RESERVE_1475='', RESERVE_1476='', RESERVE_1477='', RESERVE_1478='', RESERVE_1479='', RESERVE_1480='', RESERVE_1481='', RESERVE_1482='', RESERVE_1483='', RESERVE_1484='', RESERVE_1485='', RESERVE_1486='', RESERVE_1487='', RESERVE_1488='', RESERVE_1489='', RESERVE_1490='', RESERVE_1491='', RESERVE_1492='', RESERVE_1493='', RESERVE_1494='', RESERVE_1495='', RESERVE_1496='', RESERVE_1497='', RESERVE_1498='', RESERVE_1499='', RESERVE_1500='', RESERVE_1501='', RESERVE_1502='', RESERVE_1503='', RESERVE_1504='', RESERVE_1505='', RESERVE_1506='', RESERVE_1507='', RESERVE_1508='', RESERVE_1509='', RESERVE_1510='', RESERVE_1511='', RESERVE_1512='', RESERVE_1513='', RESERVE_1514='', RESERVE_1515='', RESERVE_1516='', RESERVE_1517='', RESERVE_1518='', RESERVE_1519='', RESERVE_1520='', RESERVE_1521='', RESERVE_1522='', RESERVE_1523='', RESERVE_1524='', RESERVE_1525='', RESERVE_1526='', RESERVE_1527='', RESERVE_1528='', RESERVE_1529='', RESERVE_1530='', RESERVE_1531='', RESERVE_1532='', RESERVE_1533='', RESERVE_1534='', RESERVE_1535='', RESERVE_1536='', RESERVE_1537='', RESERVE_1538='', RESERVE_1539='', RESERVE_1540='', RESERVE_1541='', RESERVE_1542='', RESERVE_1543='', RESERVE_1544='', RESERVE_1545='', RESERVE_1546='', RESERVE_1547='', RESERVE_1548='', RESERVE_1549='', RESERVE_1550='', RESERVE_1551='', RESERVE_1552='', RESERVE_1553='', RESERVE_1554='', RESERVE_1555='', RESERVE_1556='', RESERVE_1557='', RESERVE_1558='', RESERVE_1559='', RESERVE_1560='', RESERVE_1561='', RESERVE_1562='', RESERVE_1563='', RESERVE_1564='', RESERVE_1565='', RESERVE_1566='', RESERVE_1567='', RESERVE_1568='', RESERVE_1569='', RESERVE_1570='', RESERVE_1571='', RESERVE_1572='', RESERVE_1573='', RESERVE_1574='', RESERVE_1575='', RESERVE_1576='', RESERVE_1577='', RESERVE_1578='', RESERVE_1579='', RESERVE_1580='', RESERVE_1581='', RESERVE_1582='', RESERVE_1583='', RESERVE_1584='', RESERVE_1585='', RESERVE_1586='', RESERVE_1587='', RESERVE_1588='', RESERVE_1589='', RESERVE_1590='', RESERVE_1591='', RESERVE_1592='', RESERVE_1593='', RESERVE_1594='', RESERVE_1595='', UT_00_00='(0,0)', UT_00_01='(0,1)', UT_01_00='(1,0)', UT_01_01='(1,1)', UT_00_02='(0,2)', UT_02_00='(2,0)', UT_01_02='(1,2)', UT_02_01='(2,1)', UT_02_02='(2,2)', UT_00_03='(0,3)', UT_03_00='(3,0)', UT_03_01='(3,1)', UT_02_03='(2,3)', UT_03_02='(3,2)', UT_01_03='(1,3)', UT_03_03='(3,3)', UT_00_04='(0,4)', UT_02_04='(2,4)', UT_04_00='(4,0)', UT_01_04='(1,4)', UT_04_01='(4,1)', UT_04_02='(4,2)', UT_03_04='(3,4)', UT_04_03='(4,3)', UT_04_04='(4,4)', UT_00_05='(0,5)', UT_05_00='(5,0)', UT_05_01='(5,1)', UT_02_05='(2,5)', UT_05_02='(5,2)', UT_05_03='(5,3)', UT_04_05='(4,5)', UT_05_04='(5,4)', UT_01_05='(1,5)', UT_03_05='(3,5)', UT_05_05='(5,5)', UT_00_06='(0,6)', UT_02_06='(2,6)', UT_04_06='(4,6)', UT_06_00='(6,0)', UT_01_06='(1,6)', UT_06_01='(6,1)', UT_06_02='(6,2)', UT_03_06='(3,6)', UT_06_03='(6,3)', UT_06_04='(6,4)', UT_05_06='(5,6)', UT_06_05='(6,5)', UT_06_06='(6,6)', UT_00_07='(0,7)', UT_07_00='(7,0)', UT_07_01='(7,1)', UT_02_07='(2,7)', UT_07_02='(7,2)', UT_07_03='(7,3)', UT_04_07='(4,7)', UT_07_04='(7,4)', UT_07_05='(7,5)', UT_06_07='(6,7)', UT_07_06='(7,6)', UT_01_07='(1,7)', UT_03_07='(3,7)', UT_05_07='(5,7)', UT_07_07='(7,7)', UT_00_08='(0,8)', UT_02_08='(2,8)', UT_04_08='(4,8)', UT_06_08='(6,8)', UT_08_00='(8,0)', UT_01_08='(1,8)', UT_08_01='(8,1)', UT_08_02='(8,2)', UT_03_08='(3,8)', UT_08_03='(8,3)', UT_08_04='(8,4)', UT_05_08='(5,8)', UT_08_05='(8,5)', UT_08_06='(8,6)', UT_07_08='(7,8)', UT_08_07='(8,7)', UT_08_08='(8,8)', UT_00_09='(0,9)', UT_09_00='(9,0)', UT_09_01='(9,1)', UT_02_09='(2,9)', UT_09_02='(9,2)', UT_09_03='(9,3)', UT_04_09='(4,9)', UT_09_04='(9,4)', UT_09_05='(9,5)', UT_06_09='(6,9)', UT_09_06='(9,6)', UT_09_07='(9,7)', UT_08_09='(8,9)', UT_09_08='(9,8)', UT_01_09='(1,9)', UT_03_09='(3,9)', UT_05_09='(5,9)', UT_07_09='(7,9)', UT_09_09='(9,9)', UT_00_10='(0,10)', UT_02_10='(2,10)', UT_04_10='(4,10)', UT_06_10='(6,10)', UT_08_10='(8,10)', UT_10_00='(10,0)', UT_01_10='(1,10)', UT_10_01='(10,1)', UT_10_02='(10,2)', UT_03_10='(3,10)', UT_10_03='(10,3)', UT_10_04='(10,4)', UT_05_10='(5,10)', UT_10_05='(10,5)', UT_10_06='(10,6)', UT_07_10='(7,10)', UT_10_07='(10,7)', UT_10_08='(10,8)', UT_09_10='(9,10)', UT_10_09='(10,9)', UT_10_10='(10,10)', UT_00_11='(0,11)', UT_11_00='(11,0)', UT_11_01='(11,1)', UT_02_11='(2,11)', UT_11_02='(11,2)', UT_11_03='(11,3)', UT_04_11='(4,11)', UT_11_04='(11,4)', UT_11_05='(11,5)', UT_06_11='(6,11)', UT_11_06='(11,6)', UT_11_07='(11,7)', UT_08_11='(8,11)', UT_11_08='(11,8)', UT_11_09='(11,9)', UT_10_11='(10,11)', UT_11_10='(11,10)', UT_01_11='(1,11)', UT_03_11='(3,11)', UT_05_11='(5,11)', UT_07_11='(7,11)', UT_09_11='(9,11)', UT_11_11='(11,11)', UT_00_12='(0,12)', UT_02_12='(2,12)', UT_04_12='(4,12)', UT_06_12='(6,12)', UT_08_12='(8,12)', UT_10_12='(10,12)', UT_12_00='(12,0)', UT_01_12='(1,12)', UT_12_01='(12,1)', UT_12_02='(12,2)', UT_03_12='(3,12)', UT_12_03='(12,3)', UT_12_04='(12,4)', UT_05_12='(5,12)', UT_12_05='(12,5)', UT_12_06='(12,6)', UT_07_12='(7,12)', UT_12_07='(12,7)', UT_12_08='(12,8)', UT_09_12='(9,12)', UT_12_09='(12,9)', UT_12_10='(12,10)', UT_11_12='(11,12)', UT_12_11='(12,11)', UT_12_12='(12,12)', UT_00_13='(0,13)', UT_13_00='(13,0)', UT_13_01='(13,1)', UT_02_13='(2,13)', UT_13_02='(13,2)', UT_13_03='(13,3)', UT_04_13='(4,13)', UT_13_04='(13,4)', UT_13_05='(13,5)', UT_06_13='(6,13)', UT_13_06='(13,6)', UT_13_07='(13,7)', UT_08_13='(8,13)', UT_13_08='(13,8)', UT_13_09='(13,9)', UT_10_13='(10,13)', UT_13_10='(13,10)', UT_13_11='(13,11)', UT_12_13='(12,13)', UT_13_12='(13,12)', UT_01_13='(1,13)', UT_03_13='(3,13)', UT_05_13='(5,13)', UT_07_13='(7,13)', UT_09_13='(9,13)', UT_11_13='(11,13)', UT_13_13='(13,13)', UT_00_14='(0,14)', UT_02_14='(2,14)', UT_04_14='(4,14)', UT_06_14='(6,14)', UT_08_14='(8,14)', UT_10_14='(10,14)', UT_12_14='(12,14)', UT_14_00='(14,0)', UT_01_14='(1,14)', UT_14_01='(14,1)', UT_14_02='(14,2)', UT_03_14='(3,14)', UT_14_03='(14,3)', UT_14_04='(14,4)', UT_05_14='(5,14)', UT_14_05='(14,5)', UT_14_06='(14,6)', UT_07_14='(7,14)', UT_14_07='(14,7)', UT_14_08='(14,8)', UT_09_14='(9,14)', UT_14_09='(14,9)', UT_14_10='(14,10)', UT_11_14='(11,14)', UT_14_11='(14,11)', UT_14_12='(14,12)', UT_13_14='(13,14)', UT_14_13='(14,13)', UT_14_14='(14,14)', UT_00_15='(0,15)', UT_15_00='(15,0)', UT_15_01='(15,1)', UT_02_15='(2,15)', UT_15_02='(15,2)', UT_15_03='(15,3)', UT_04_15='(4,15)', UT_15_04='(15,4)', UT_15_05='(15,5)', UT_06_15='(6,15)', UT_15_06='(15,6)', UT_15_07='(15,7)', UT_08_15='(8,15)', UT_15_08='(15,8)', UT_15_09='(15,9)', UT_10_15='(10,15)', UT_15_10='(15,10)', UT_15_11='(15,11)', UT_12_15='(12,15)', UT_15_12='(15,12)', UT_15_13='(15,13)', UT_14_15='(14,15)', UT_15_14='(15,14)', UT_01_15='(1,15)', UT_03_15='(3,15)', UT_05_15='(5,15)', UT_07_15='(7,15)', UT_09_15='(9,15)', UT_11_15='(11,15)', UT_13_15='(13,15)', UT_15_15='(15,15)', UT_00_16='(0,16)', UT_02_16='(2,16)', UT_04_16='(4,16)', UT_06_16='(6,16)', UT_08_16='(8,16)', UT_10_16='(10,16)', UT_12_16='(12,16)', UT_14_16='(14,16)', UT_16_00='(16,0)', UT_01_16='(1,16)', UT_16_01='(16,1)', UT_16_02='(16,2)', UT_03_16='(3,16)', UT_16_03='(16,3)', UT_16_04='(16,4)', UT_05_16='(5,16)', UT_16_05='(16,5)', UT_16_06='(16,6)', UT_07_16='(7,16)', UT_16_07='(16,7)', UT_16_08='(16,8)', UT_09_16='(9,16)', UT_16_09='(16,9)', UT_16_10='(16,10)', UT_11_16='(11,16)', UT_16_11='(16,11)', UT_16_12='(16,12)', UT_13_16='(13,16)', UT_16_13='(16,13)', UT_16_14='(16,14)', UT_15_16='(15,16)', UT_16_15='(16,15)', UT_16_16='(16,16)', UT_00_17='(0,17)', UT_17_00='(17,0)', UT_17_01='(17,1)', UT_02_17='(2,17)', UT_17_02='(17,2)', UT_17_03='(17,3)', UT_04_17='(4,17)', UT_17_04='(17,4)', UT_17_05='(17,5)', UT_06_17='(6,17)', UT_17_06='(17,6)', UT_17_07='(17,7)', UT_08_17='(8,17)', UT_17_08='(17,8)', UT_17_09='(17,9)', UT_10_17='(10,17)', UT_17_10='(17,10)', UT_17_11='(17,11)', UT_12_17='(12,17)', UT_17_12='(17,12)', UT_17_13='(17,13)', UT_14_17='(14,17)', UT_17_14='(17,14)', UT_17_15='(17,15)', UT_16_17='(16,17)', UT_17_16='(17,16)', UT_01_17='(1,17)', UT_03_17='(3,17)', UT_05_17='(5,17)', UT_07_17='(7,17)', UT_09_17='(9,17)', UT_11_17='(11,17)', UT_13_17='(13,17)', UT_15_17='(15,17)', UT_17_17='(17,17)', UT_00_18='(0,18)', UT_02_18='(2,18)', UT_04_18='(4,18)', UT_06_18='(6,18)', UT_08_18='(8,18)', UT_10_18='(10,18)', UT_12_18='(12,18)', UT_14_18='(14,18)', UT_16_18='(16,18)', UT_18_00='(18,0)', UT_01_18='(1,18)', UT_18_01='(18,1)', UT_18_02='(18,2)', UT_03_18='(3,18)', UT_18_03='(18,3)', UT_18_04='(18,4)', UT_05_18='(5,18)', UT_18_05='(18,5)', UT_18_06='(18,6)', UT_07_18='(7,18)', UT_18_07='(18,7)', UT_18_08='(18,8)', UT_09_18='(9,18)', UT_18_09='(18,9)', UT_18_10='(18,10)', UT_11_18='(11,18)', UT_18_11='(18,11)', UT_18_12='(18,12)', UT_13_18='(13,18)', UT_18_13='(18,13)', UT_18_14='(18,14)', UT_15_18='(15,18)', UT_18_15='(18,15)', UT_18_16='(18,16)', UT_17_18='(17,18)', UT_18_17='(18,17)', UT_18_18='(18,18)', UT_00_19='(0,19)', UT_19_00='(19,0)', UT_19_01='(19,1)', UT_02_19='(2,19)', UT_19_02='(19,2)', UT_19_03='(19,3)', UT_04_19='(4,19)', UT_19_04='(19,4)', UT_19_05='(19,5)', UT_06_19='(6,19)', UT_19_06='(19,6)', UT_19_07='(19,7)', UT_08_19='(8,19)', UT_19_08='(19,8)', UT_19_09='(19,9)', UT_10_19='(10,19)', UT_19_10='(19,10)', UT_19_11='(19,11)', UT_12_19='(12,19)', UT_19_12='(19,12)', UT_19_13='(19,13)', UT_14_19='(14,19)', UT_19_14='(19,14)', UT_19_15='(19,15)', UT_16_19='(16,19)', UT_19_16='(19,16)', UT_19_17='(19,17)', UT_18_19='(18,19)', UT_19_18='(19,18)', UT_01_19='(1,19)', UT_03_19='(3,19)', UT_05_19='(5,19)', UT_07_19='(7,19)', UT_09_19='(9,19)', UT_11_19='(11,19)', UT_13_19='(13,19)', UT_15_19='(15,19)', UT_17_19='(17,19)', UT_19_19='(19,19)', UT_00_20='(0,20)', UT_02_20='(2,20)', UT_04_20='(4,20)', UT_06_20='(6,20)', UT_08_20='(8,20)', UT_10_20='(10,20)', UT_12_20='(12,20)', UT_14_20='(14,20)', UT_16_20='(16,20)', UT_18_20='(18,20)', UT_20_00='(20,0)', UT_01_20='(1,20)', UT_20_01='(20,1)', UT_20_02='(20,2)', UT_03_20='(3,20)', UT_20_03='(20,3)', UT_20_04='(20,4)', UT_05_20='(5,20)', UT_20_05='(20,5)', UT_20_06='(20,6)', UT_07_20='(7,20)', UT_20_07='(20,7)', UT_20_08='(20,8)', UT_09_20='(9,20)', UT_20_09='(20,9)', UT_20_10='(20,10)', UT_11_20='(11,20)', UT_20_11='(20,11)', UT_20_12='(20,12)', UT_13_20='(13,20)', UT_20_13='(20,13)', UT_20_14='(20,14)', UT_15_20='(15,20)', UT_20_15='(20,15)', UT_20_16='(20,16)', UT_17_20='(17,20)', UT_20_17='(20,17)', UT_20_18='(20,18)', UT_19_20='(19,20)', UT_20_19='(20,19)', UT_20_20='(20,20)', UT_00_21='(0,21)', UT_21_00='(21,0)', UT_21_01='(21,1)', UT_02_21='(2,21)', UT_21_02='(21,2)', UT_21_03='(21,3)', UT_04_21='(4,21)', UT_21_04='(21,4)', UT_21_05='(21,5)', UT_06_21='(6,21)', UT_21_06='(21,6)', UT_21_07='(21,7)', UT_08_21='(8,21)', UT_21_08='(21,8)', UT_21_09='(21,9)', UT_10_21='(10,21)', UT_21_10='(21,10)', UT_21_11='(21,11)', UT_12_21='(12,21)', UT_21_12='(21,12)', UT_21_13='(21,13)', UT_14_21='(14,21)', UT_21_14='(21,14)', UT_21_15='(21,15)', UT_16_21='(16,21)', UT_21_16='(21,16)', UT_21_17='(21,17)', UT_18_21='(18,21)', UT_21_18='(21,18)', UT_21_19='(21,19)', UT_20_21='(20,21)', UT_21_20='(21,20)', UT_01_21='(1,21)', UT_03_21='(3,21)', UT_05_21='(5,21)', UT_07_21='(7,21)', UT_09_21='(9,21)', UT_11_21='(11,21)', UT_13_21='(13,21)', UT_15_21='(15,21)', UT_17_21='(17,21)', UT_19_21='(19,21)', UT_21_21='(21,21)', UT_00_22='(0,22)', UT_02_22='(2,22)', UT_04_22='(4,22)', UT_06_22='(6,22)', UT_08_22='(8,22)', UT_10_22='(10,22)', UT_12_22='(12,22)', UT_14_22='(14,22)', UT_16_22='(16,22)', UT_18_22='(18,22)', UT_20_22='(20,22)', UT_22_00='(22,0)', UT_01_22='(1,22)', UT_22_01='(22,1)', UT_22_02='(22,2)', UT_03_22='(3,22)', UT_22_03='(22,3)', UT_22_04='(22,4)', UT_05_22='(5,22)', UT_22_05='(22,5)', UT_22_06='(22,6)', UT_07_22='(7,22)', UT_22_07='(22,7)', UT_22_08='(22,8)', UT_09_22='(9,22)', UT_22_09='(22,9)', UT_22_10='(22,10)', UT_11_22='(11,22)', UT_22_11='(22,11)', UT_22_12='(22,12)', UT_13_22='(13,22)', UT_22_13='(22,13)', UT_22_14='(22,14)', UT_15_22='(15,22)', UT_22_15='(22,15)', UT_22_16='(22,16)', UT_17_22='(17,22)', UT_22_17='(22,17)', UT_22_18='(22,18)', UT_19_22='(19,22)', UT_22_19='(22,19)', UT_22_20='(22,20)', UT_21_22='(21,22)', UT_22_21='(22,21)', UT_22_22='(22,22)', UT_00_23='(0,23)', UT_23_00='(23,0)', UT_23_01='(23,1)', UT_02_23='(2,23)', UT_23_02='(23,2)', UT_23_03='(23,3)', UT_04_23='(4,23)', UT_23_04='(23,4)', UT_23_05='(23,5)', UT_06_23='(6,23)', UT_23_06='(23,6)', UT_23_07='(23,7)', UT_08_23='(8,23)', UT_23_08='(23,8)', UT_23_09='(23,9)', UT_10_23='(10,23)', UT_23_10='(23,10)', UT_23_11='(23,11)', UT_12_23='(12,23)', UT_23_12='(23,12)', UT_23_13='(23,13)', UT_14_23='(14,23)', UT_23_14='(23,14)', UT_23_15='(23,15)', UT_16_23='(16,23)', UT_23_16='(23,16)', UT_23_17='(23,17)', UT_18_23='(18,23)', UT_23_18='(23,18)', UT_23_19='(23,19)', UT_20_23='(20,23)', UT_23_20='(23,20)', UT_23_21='(23,21)', UT_22_23='(22,23)', UT_23_22='(23,22)', UT_01_23='(1,23)', UT_03_23='(3,23)', UT_05_23='(5,23)', UT_07_23='(7,23)', UT_09_23='(9,23)', UT_11_23='(11,23)', UT_13_23='(13,23)', UT_15_23='(15,23)', UT_17_23='(17,23)', UT_19_23='(19,23)', UT_21_23='(21,23)', UT_23_23='(23,23)', UT_00_24='(0,24)', UT_02_24='(2,24)', UT_04_24='(4,24)', UT_06_24='(6,24)', UT_08_24='(8,24)', UT_10_24='(10,24)', UT_12_24='(12,24)', UT_14_24='(14,24)', UT_16_24='(16,24)', UT_18_24='(18,24)', UT_20_24='(20,24)', UT_22_24='(22,24)', UT_24_00='(24,0)', UT_01_24='(1,24)', UT_24_01='(24,1)', UT_24_02='(24,2)', UT_03_24='(3,24)', UT_24_03='(24,3)', UT_24_04='(24,4)', UT_05_24='(5,24)', UT_24_05='(24,5)', UT_24_06='(24,6)', UT_07_24='(7,24)', UT_24_07='(24,7)', UT_24_08='(24,8)', UT_09_24='(9,24)', UT_24_09='(24,9)', UT_24_10='(24,10)', UT_11_24='(11,24)', UT_24_11='(24,11)', UT_24_12='(24,12)', UT_13_24='(13,24)', UT_24_13='(24,13)', UT_24_14='(24,14)', UT_15_24='(15,24)', UT_24_15='(24,15)', UT_24_16='(24,16)', UT_17_24='(17,24)', UT_24_17='(24,17)', UT_24_18='(24,18)', UT_19_24='(19,24)', UT_24_19='(24,19)', UT_24_20='(24,20)', UT_21_24='(21,24)', UT_24_21='(24,21)', UT_24_22='(24,22)', UT_23_24='(23,24)', UT_24_23='(24,23)', UT_24_24='(24,24)', UT_00_25='(0,25)', UT_25_00='(25,0)', UT_25_01='(25,1)', UT_02_25='(2,25)', UT_25_02='(25,2)', UT_25_03='(25,3)', UT_04_25='(4,25)', UT_25_04='(25,4)', UT_25_05='(25,5)', UT_06_25='(6,25)', UT_25_06='(25,6)', UT_25_07='(25,7)', UT_08_25='(8,25)', UT_25_08='(25,8)', UT_25_09='(25,9)', UT_10_25='(10,25)', UT_25_10='(25,10)', UT_25_11='(25,11)', UT_12_25='(12,25)', UT_25_12='(25,12)', UT_25_13='(25,13)', UT_14_25='(14,25)', UT_25_14='(25,14)', UT_25_15='(25,15)', UT_16_25='(16,25)', UT_25_16='(25,16)', UT_25_17='(25,17)', UT_18_25='(18,25)', UT_25_18='(25,18)', UT_25_19='(25,19)', UT_20_25='(20,25)', UT_25_20='(25,20)', UT_25_21='(25,21)', UT_22_25='(22,25)', UT_25_22='(25,22)', UT_25_23='(25,23)', UT_24_25='(24,25)', UT_25_24='(25,24)', UT_01_25='(1,25)', UT_03_25='(3,25)', UT_05_25='(5,25)', UT_07_25='(7,25)', UT_09_25='(9,25)', UT_11_25='(11,25)', UT_13_25='(13,25)', UT_15_25='(15,25)', UT_17_25='(17,25)', UT_19_25='(19,25)', UT_21_25='(21,25)', UT_23_25='(23,25)', UT_25_25='(25,25)', UT_00_26='(0,26)', UT_02_26='(2,26)', UT_04_26='(4,26)', UT_06_26='(6,26)', UT_08_26='(8,26)', UT_10_26='(10,26)', UT_12_26='(12,26)', UT_14_26='(14,26)', UT_16_26='(16,26)', UT_18_26='(18,26)', UT_20_26='(20,26)', UT_22_26='(22,26)', UT_24_26='(24,26)', UT_26_00='(26,0)', UT_01_26='(1,26)', UT_26_01='(26,1)', UT_26_02='(26,2)', UT_03_26='(3,26)', UT_26_03='(26,3)', UT_26_04='(26,4)', UT_05_26='(5,26)', UT_26_05='(26,5)', UT_26_06='(26,6)', UT_07_26='(7,26)', UT_26_07='(26,7)', UT_26_08='(26,8)', UT_09_26='(9,26)', UT_26_09='(26,9)', UT_26_10='(26,10)', UT_11_26='(11,26)', UT_26_11='(26,11)', UT_26_12='(26,12)', UT_13_26='(13,26)', UT_26_13='(26,13)', UT_26_14='(26,14)', UT_15_26='(15,26)', UT_26_15='(26,15)', UT_26_16='(26,16)', UT_17_26='(17,26)', UT_26_17='(26,17)', UT_26_18='(26,18)', UT_19_26='(19,26)', UT_26_19='(26,19)', UT_26_20='(26,20)', UT_21_26='(21,26)', UT_26_21='(26,21)', UT_26_22='(26,22)', UT_23_26='(23,26)', UT_26_23='(26,23)', UT_26_24='(26,24)', UT_25_26='(25,26)', UT_26_25='(26,25)', UT_26_26='(26,26)', UT_00_27='(0,27)', UT_27_00='(27,0)', UT_27_01='(27,1)', UT_02_27='(2,27)', UT_27_02='(27,2)', UT_27_03='(27,3)', UT_04_27='(4,27)', UT_27_04='(27,4)', UT_27_05='(27,5)', UT_06_27='(6,27)', UT_27_06='(27,6)', UT_27_07='(27,7)', UT_08_27='(8,27)', UT_27_08='(27,8)', UT_27_09='(27,9)', UT_10_27='(10,27)', UT_27_10='(27,10)', UT_27_11='(27,11)', UT_12_27='(12,27)', UT_27_12='(27,12)', UT_27_13='(27,13)', UT_14_27='(14,27)', UT_27_14='(27,14)', UT_27_15='(27,15)', UT_16_27='(16,27)', UT_27_16='(27,16)', UT_27_17='(27,17)', UT_18_27='(18,27)', UT_27_18='(27,18)', UT_27_19='(27,19)', UT_20_27='(20,27)', UT_27_20='(27,20)', UT_27_21='(27,21)', UT_22_27='(22,27)', UT_27_22='(27,22)', UT_27_23='(27,23)', UT_24_27='(24,27)', UT_27_24='(27,24)', UT_27_25='(27,25)', UT_26_27='(26,27)', UT_27_26='(27,26)', UT_01_27='(1,27)', UT_03_27='(3,27)', UT_05_27='(5,27)', UT_07_27='(7,27)', UT_09_27='(9,27)', UT_11_27='(11,27)', UT_13_27='(13,27)', UT_15_27='(15,27)', UT_17_27='(17,27)', UT_19_27='(19,27)', UT_21_27='(21,27)', UT_23_27='(23,27)', UT_25_27='(25,27)', UT_27_27='(27,27)', UT_00_28='(0,28)', UT_02_28='(2,28)', UT_04_28='(4,28)', UT_06_28='(6,28)', UT_08_28='(8,28)', UT_10_28='(10,28)', UT_12_28='(12,28)', UT_14_28='(14,28)', UT_16_28='(16,28)', UT_18_28='(18,28)', UT_20_28='(20,28)', UT_22_28='(22,28)', UT_24_28='(24,28)', UT_26_28='(26,28)', UT_28_00='(28,0)', UT_01_28='(1,28)', UT_28_01='(28,1)', UT_28_02='(28,2)', UT_03_28='(3,28)', UT_28_03='(28,3)', UT_28_04='(28,4)', UT_05_28='(5,28)', UT_28_05='(28,5)', UT_28_06='(28,6)', UT_07_28='(7,28)', UT_28_07='(28,7)', UT_28_08='(28,8)', UT_09_28='(9,28)', UT_28_09='(28,9)', UT_28_10='(28,10)', UT_11_28='(11,28)', UT_28_11='(28,11)', UT_28_12='(28,12)', UT_13_28='(13,28)', UT_28_13='(28,13)', UT_28_14='(28,14)', UT_15_28='(15,28)', UT_28_15='(28,15)', UT_28_16='(28,16)', UT_17_28='(17,28)', UT_28_17='(28,17)', UT_28_18='(28,18)', UT_19_28='(19,28)', UT_28_19='(28,19)', UT_28_20='(28,20)', UT_21_28='(21,28)', UT_28_21='(28,21)', UT_28_22='(28,22)', UT_23_28='(23,28)', UT_28_23='(28,23)', UT_28_24='(28,24)', UT_25_28='(25,28)', UT_28_25='(28,25)', UT_28_26='(28,26)', UT_27_28='(27,28)', UT_28_27='(28,27)', UT_28_28='(28,28)', UT_00_29='(0,29)', UT_29_00='(29,0)', UT_29_01='(29,1)', UT_02_29='(2,29)', UT_29_02='(29,2)', UT_29_03='(29,3)', UT_04_29='(4,29)', UT_29_04='(29,4)', UT_29_05='(29,5)', UT_06_29='(6,29)', UT_29_06='(29,6)', UT_29_07='(29,7)', UT_08_29='(8,29)', UT_29_08='(29,8)', UT_29_09='(29,9)', UT_10_29='(10,29)', UT_29_10='(29,10)', UT_29_11='(29,11)', UT_12_29='(12,29)', UT_29_12='(29,12)', UT_29_13='(29,13)', UT_14_29='(14,29)', UT_29_14='(29,14)', UT_29_15='(29,15)', UT_16_29='(16,29)', UT_29_16='(29,16)', UT_29_17='(29,17)', UT_18_29='(18,29)', UT_29_18='(29,18)', UT_29_19='(29,19)', UT_20_29='(20,29)', UT_29_20='(29,20)', UT_29_21='(29,21)', UT_22_29='(22,29)', UT_29_22='(29,22)', UT_29_23='(29,23)', UT_24_29='(24,29)', UT_29_24='(29,24)', UT_29_25='(29,25)', UT_26_29='(26,29)', UT_29_26='(29,26)', UT_29_27='(29,27)', UT_28_29='(28,29)', UT_29_28='(29,28)', UT_01_29='(1,29)', UT_03_29='(3,29)', UT_05_29='(5,29)', UT_07_29='(7,29)', UT_09_29='(9,29)', UT_11_29='(11,29)', UT_13_29='(13,29)', UT_15_29='(15,29)', UT_17_29='(17,29)', UT_19_29='(19,29)', UT_21_29='(21,29)', UT_23_29='(23,29)', UT_25_29='(25,29)', UT_27_29='(27,29)', UT_29_29='(29,29)', UT_00_30='(0,30)', UT_02_30='(2,30)', UT_04_30='(4,30)', UT_06_30='(6,30)', UT_08_30='(8,30)', UT_10_30='(10,30)', UT_12_30='(12,30)', UT_14_30='(14,30)', UT_16_30='(16,30)', UT_18_30='(18,30)', UT_20_30='(20,30)', UT_22_30='(22,30)', UT_24_30='(24,30)', UT_26_30='(26,30)', UT_28_30='(28,30)', UT_30_00='(30,0)', UT_01_30='(1,30)', UT_30_01='(30,1)', UT_30_02='(30,2)', UT_03_30='(3,30)', UT_30_03='(30,3)', UT_30_04='(30,4)', UT_05_30='(5,30)', UT_30_05='(30,5)', UT_30_06='(30,6)', UT_07_30='(7,30)', UT_30_07='(30,7)', UT_30_08='(30,8)', UT_09_30='(9,30)', UT_30_09='(30,9)', UT_30_10='(30,10)', UT_11_30='(11,30)', UT_30_11='(30,11)', UT_30_12='(30,12)', UT_13_30='(13,30)', UT_30_13='(30,13)', UT_30_14='(30,14)', UT_15_30='(15,30)', UT_30_15='(30,15)', UT_30_16='(30,16)', UT_17_30='(17,30)', UT_30_17='(30,17)', UT_30_18='(30,18)', UT_19_30='(19,30)', UT_30_19='(30,19)', UT_30_20='(30,20)', UT_21_30='(21,30)', UT_30_21='(30,21)', UT_30_22='(30,22)', UT_23_30='(23,30)', UT_30_23='(30,23)', UT_30_24='(30,24)', UT_25_30='(25,30)', UT_30_25='(30,25)', UT_30_26='(30,26)', UT_27_30='(27,30)', UT_30_27='(30,27)', UT_30_28='(30,28)', UT_29_30='(29,30)', UT_30_29='(30,29)', UT_30_30='(30,30)', UT_00_31='(0,31)', UT_31_00='(31,0)', UT_31_01='(31,1)', UT_02_31='(2,31)', UT_31_02='(31,2)', UT_31_03='(31,3)', UT_04_31='(4,31)', UT_31_04='(31,4)', UT_31_05='(31,5)', UT_06_31='(6,31)', UT_31_06='(31,6)', UT_31_07='(31,7)', UT_08_31='(8,31)', UT_31_08='(31,8)', UT_31_09='(31,9)', UT_10_31='(10,31)', UT_31_10='(31,10)', UT_31_11='(31,11)', UT_12_31='(12,31)', UT_31_12='(31,12)', UT_31_13='(31,13)', UT_14_31='(14,31)', UT_31_14='(31,14)', UT_31_15='(31,15)', UT_16_31='(16,31)', UT_31_16='(31,16)', UT_31_17='(31,17)', UT_18_31='(18,31)', UT_31_18='(31,18)', UT_31_19='(31,19)', UT_20_31='(20,31)', UT_31_20='(31,20)', UT_31_21='(31,21)', UT_22_31='(22,31)', UT_31_22='(31,22)', UT_31_23='(31,23)', UT_24_31='(24,31)', UT_31_24='(31,24)', UT_31_25='(31,25)', UT_26_31='(26,31)', UT_31_26='(31,26)', UT_31_27='(31,27)', UT_28_31='(28,31)', UT_31_28='(31,28)', UT_31_29='(31,29)', UT_30_31='(30,31)', UT_31_30='(31,30)', UT_01_31='(1,31)', UT_03_31='(3,31)', UT_05_31='(5,31)', UT_07_31='(7,31)', UT_09_31='(9,31)', UT_11_31='(11,31)', UT_13_31='(13,31)', UT_15_31='(15,31)', UT_17_31='(17,31)', UT_19_31='(19,31)', UT_21_31='(21,31)', UT_23_31='(23,31)', UT_25_31='(25,31)', UT_27_31='(27,31)', UT_29_31='(29,31)', UT_31_31='(31,31)', UT_00_32='(0,32)', UT_02_32='(2,32)', UT_04_32='(4,32)', UT_06_32='(6,32)', UT_08_32='(8,32)', UT_10_32='(10,32)', UT_12_32='(12,32)', UT_14_32='(14,32)', UT_16_32='(16,32)', UT_18_32='(18,32)', UT_20_32='(20,32)', UT_22_32='(22,32)', UT_24_32='(24,32)', UT_26_32='(26,32)', UT_28_32='(28,32)', UT_30_32='(30,32)', UT_32_00='(32,0)', UT_01_32='(1,32)', UT_32_01='(32,1)', UT_32_02='(32,2)', UT_03_32='(3,32)', UT_32_03='(32,3)', UT_32_04='(32,4)', UT_05_32='(5,32)', UT_32_05='(32,5)', UT_32_06='(32,6)', UT_07_32='(7,32)', UT_32_07='(32,7)', UT_32_08='(32,8)', UT_09_32='(9,32)', UT_32_09='(32,9)', UT_32_10='(32,10)', UT_11_32='(11,32)', UT_32_11='(32,11)', UT_32_12='(32,12)', UT_13_32='(13,32)', UT_32_13='(32,13)', UT_32_14='(32,14)', UT_15_32='(15,32)', UT_32_15='(32,15)', UT_32_16='(32,16)', UT_17_32='(17,32)', UT_32_17='(32,17)', UT_32_18='(32,18)', UT_19_32='(19,32)', UT_32_19='(32,19)', UT_32_20='(32,20)', UT_21_32='(21,32)', UT_32_21='(32,21)', UT_32_22='(32,22)', UT_23_32='(23,32)', UT_32_23='(32,23)', UT_32_24='(32,24)', UT_25_32='(25,32)', UT_32_25='(32,25)', UT_32_26='(32,26)', UT_27_32='(27,32)', UT_32_27='(32,27)', UT_32_28='(32,28)', UT_29_32='(29,32)', UT_32_29='(32,29)', UT_32_30='(32,30)', UT_31_32='(31,32)', UT_32_31='(32,31)', UT_32_32='(32,32)', UT_00_33='(0,33)', UT_33_00='(33,0)', UT_33_01='(33,1)', UT_02_33='(2,33)', UT_33_02='(33,2)', UT_33_03='(33,3)', UT_04_33='(4,33)', UT_33_04='(33,4)', UT_33_05='(33,5)', UT_06_33='(6,33)', UT_33_06='(33,6)', UT_33_07='(33,7)', UT_08_33='(8,33)', UT_33_08='(33,8)', UT_33_09='(33,9)', UT_10_33='(10,33)', UT_33_10='(33,10)', UT_33_11='(33,11)', UT_12_33='(12,33)', UT_33_12='(33,12)', UT_33_13='(33,13)', UT_14_33='(14,33)', UT_33_14='(33,14)', UT_33_15='(33,15)', UT_16_33='(16,33)', UT_33_16='(33,16)', UT_33_17='(33,17)', UT_18_33='(18,33)', UT_33_18='(33,18)', UT_33_19='(33,19)', UT_20_33='(20,33)', UT_33_20='(33,20)', UT_33_21='(33,21)', UT_22_33='(22,33)', UT_33_22='(33,22)', UT_33_23='(33,23)', UT_24_33='(24,33)', UT_33_24='(33,24)', UT_33_25='(33,25)', UT_26_33='(26,33)', UT_33_26='(33,26)', UT_33_27='(33,27)', UT_28_33='(28,33)', UT_33_28='(33,28)', UT_33_29='(33,29)', UT_30_33='(30,33)', UT_33_30='(33,30)', UT_33_31='(33,31)', UT_32_33='(32,33)', UT_33_32='(33,32)', UT_01_33='(1,33)', UT_03_33='(3,33)', UT_05_33='(5,33)', UT_07_33='(7,33)', UT_09_33='(9,33)', UT_11_33='(11,33)', UT_13_33='(13,33)', UT_15_33='(15,33)', UT_17_33='(17,33)', UT_19_33='(19,33)', UT_21_33='(21,33)', UT_23_33='(23,33)', UT_25_33='(25,33)', UT_27_33='(27,33)', UT_29_33='(29,33)', UT_31_33='(31,33)', UT_33_33='(33,33)', UT_00_34='(0,34)', UT_02_34='(2,34)', UT_04_34='(4,34)', UT_06_34='(6,34)', UT_08_34='(8,34)', UT_10_34='(10,34)', UT_12_34='(12,34)', UT_14_34='(14,34)', UT_16_34='(16,34)', UT_18_34='(18,34)', UT_20_34='(20,34)', UT_22_34='(22,34)', UT_24_34='(24,34)', UT_26_34='(26,34)', UT_28_34='(28,34)', UT_30_34='(30,34)', UT_32_34='(32,34)', UT_34_00='(34,0)', UT_01_34='(1,34)', UT_34_01='(34,1)', UT_34_02='(34,2)', UT_03_34='(3,34)', UT_34_03='(34,3)', UT_34_04='(34,4)', UT_05_34='(5,34)', UT_34_05='(34,5)', UT_34_06='(34,6)', UT_07_34='(7,34)', UT_34_07='(34,7)', UT_34_08='(34,8)', UT_09_34='(9,34)', UT_34_09='(34,9)', UT_34_10='(34,10)', UT_11_34='(11,34)', UT_34_11='(34,11)', UT_34_12='(34,12)', UT_13_34='(13,34)', UT_34_13='(34,13)', UT_34_14='(34,14)', UT_15_34='(15,34)', UT_34_15='(34,15)', UT_34_16='(34,16)', UT_17_34='(17,34)', UT_34_17='(34,17)', UT_34_18='(34,18)', UT_19_34='(19,34)', UT_34_19='(34,19)', UT_34_20='(34,20)', UT_21_34='(21,34)', UT_34_21='(34,21)', UT_34_22='(34,22)', UT_23_34='(23,34)', UT_34_23='(34,23)', UT_34_24='(34,24)', UT_25_34='(25,34)', UT_34_25='(34,25)', UT_34_26='(34,26)', UT_27_34='(27,34)', UT_34_27='(34,27)', UT_34_28='(34,28)', UT_29_34='(29,34)', UT_34_29='(34,29)', UT_34_30='(34,30)', UT_31_34='(31,34)', UT_34_31='(34,31)', UT_34_32='(34,32)', UT_33_34='(33,34)', UT_34_33='(34,33)', UT_34_34='(34,34)', UT_00_35='(0,35)', UT_35_00='(35,0)', UT_35_01='(35,1)', UT_02_35='(2,35)', UT_35_02='(35,2)', UT_35_03='(35,3)', UT_04_35='(4,35)', UT_35_04='(35,4)', UT_35_05='(35,5)', UT_06_35='(6,35)', UT_35_06='(35,6)', UT_35_07='(35,7)', UT_08_35='(8,35)', UT_35_08='(35,8)', UT_35_09='(35,9)', UT_10_35='(10,35)', UT_35_10='(35,10)', UT_35_11='(35,11)', UT_12_35='(12,35)', UT_35_12='(35,12)', UT_35_13='(35,13)', UT_14_35='(14,35)', UT_35_14='(35,14)', UT_35_15='(35,15)', UT_16_35='(16,35)', UT_35_16='(35,16)', UT_35_17='(35,17)', UT_18_35='(18,35)', UT_35_18='(35,18)', UT_35_19='(35,19)', UT_20_35='(20,35)', UT_35_20='(35,20)', UT_35_21='(35,21)', UT_22_35='(22,35)', UT_35_22='(35,22)', UT_35_23='(35,23)', UT_24_35='(24,35)', UT_35_24='(35,24)', UT_35_25='(35,25)', UT_26_35='(26,35)', UT_35_26='(35,26)', UT_35_27='(35,27)', UT_28_35='(28,35)', UT_35_28='(35,28)', UT_35_29='(35,29)', UT_30_35='(30,35)', UT_35_30='(35,30)', UT_35_31='(35,31)', UT_32_35='(32,35)', UT_35_32='(35,32)', UT_35_33='(35,33)', UT_34_35='(34,35)', UT_35_34='(35,34)', UT_01_35='(1,35)', UT_03_35='(3,35)', UT_05_35='(5,35)', UT_07_35='(7,35)', UT_09_35='(9,35)', UT_11_35='(11,35)', UT_13_35='(13,35)', UT_15_35='(15,35)', UT_17_35='(17,35)', UT_19_35='(19,35)', UT_21_35='(21,35)', UT_23_35='(23,35)', UT_25_35='(25,35)', UT_27_35='(27,35)', UT_29_35='(29,35)', UT_31_35='(31,35)', UT_33_35='(33,35)', UT_35_35='(35,35)', UT_00_36='(0,36)', UT_02_36='(2,36)', UT_04_36='(4,36)', UT_06_36='(6,36)', UT_08_36='(8,36)', UT_10_36='(10,36)', UT_12_36='(12,36)', UT_14_36='(14,36)', UT_16_36='(16,36)', UT_18_36='(18,36)', UT_20_36='(20,36)', UT_22_36='(22,36)', UT_24_36='(24,36)', UT_26_36='(26,36)', UT_28_36='(28,36)', UT_30_36='(30,36)', UT_32_36='(32,36)', UT_34_36='(34,36)', UT_36_00='(36,0)', UT_01_36='(1,36)', UT_36_01='(36,1)', UT_36_02='(36,2)', UT_03_36='(3,36)', UT_36_03='(36,3)', UT_36_04='(36,4)', UT_05_36='(5,36)', UT_36_05='(36,5)', UT_36_06='(36,6)', UT_07_36='(7,36)', UT_36_07='(36,7)', UT_36_08='(36,8)', UT_09_36='(9,36)', UT_36_09='(36,9)', UT_36_10='(36,10)', UT_11_36='(11,36)', UT_36_11='(36,11)', UT_36_12='(36,12)', UT_13_36='(13,36)', UT_36_13='(36,13)', UT_36_14='(36,14)', UT_15_36='(15,36)', UT_36_15='(36,15)', UT_36_16='(36,16)', UT_17_36='(17,36)', UT_36_17='(36,17)', UT_36_18='(36,18)', UT_19_36='(19,36)', UT_36_19='(36,19)', UT_36_20='(36,20)', UT_21_36='(21,36)', UT_36_21='(36,21)', UT_36_22='(36,22)', UT_23_36='(23,36)', UT_36_23='(36,23)', UT_36_24='(36,24)', UT_25_36='(25,36)', UT_36_25='(36,25)', UT_36_26='(36,26)', UT_27_36='(27,36)', UT_36_27='(36,27)', UT_36_28='(36,28)', UT_29_36='(29,36)', UT_36_29='(36,29)', UT_36_30='(36,30)', UT_31_36='(31,36)', UT_36_31='(36,31)', UT_36_32='(36,32)', UT_33_36='(33,36)', UT_36_33='(36,33)', UT_36_34='(36,34)', UT_35_36='(35,36)', UT_36_35='(36,35)', UT_36_36='(36,36)', UT_00_37='(0,37)', UT_37_00='(37,0)', UT_37_01='(37,1)', UT_02_37='(2,37)', UT_37_02='(37,2)', UT_37_03='(37,3)', UT_04_37='(4,37)', UT_37_04='(37,4)', UT_37_05='(37,5)', UT_06_37='(6,37)', UT_37_06='(37,6)', UT_37_07='(37,7)', UT_08_37='(8,37)', UT_37_08='(37,8)', UT_37_09='(37,9)', UT_10_37='(10,37)', UT_37_10='(37,10)', UT_37_11='(37,11)', UT_12_37='(12,37)', UT_37_12='(37,12)', UT_37_13='(37,13)', UT_14_37='(14,37)', UT_37_14='(37,14)', UT_37_15='(37,15)', UT_16_37='(16,37)', UT_37_16='(37,16)', UT_37_17='(37,17)', UT_18_37='(18,37)', UT_37_18='(37,18)', UT_37_19='(37,19)', UT_20_37='(20,37)', UT_37_20='(37,20)', UT_37_21='(37,21)', UT_22_37='(22,37)', UT_37_22='(37,22)', UT_37_23='(37,23)', UT_24_37='(24,37)', UT_37_24='(37,24)', UT_37_25='(37,25)', UT_26_37='(26,37)', UT_37_26='(37,26)', UT_37_27='(37,27)', UT_28_37='(28,37)', UT_37_28='(37,28)', UT_37_29='(37,29)', UT_30_37='(30,37)', UT_37_30='(37,30)', UT_37_31='(37,31)', UT_32_37='(32,37)', UT_37_32='(37,32)', UT_37_33='(37,33)', UT_34_37='(34,37)', UT_37_34='(37,34)', UT_37_35='(37,35)', UT_36_37='(36,37)', UT_37_36='(37,36)', UT_01_37='(1,37)', UT_03_37='(3,37)', UT_05_37='(5,37)', UT_07_37='(7,37)', UT_09_37='(9,37)', UT_11_37='(11,37)', UT_13_37='(13,37)', UT_15_37='(15,37)', UT_17_37='(17,37)', UT_19_37='(19,37)', UT_21_37='(21,37)', UT_23_37='(23,37)', UT_25_37='(25,37)', UT_27_37='(27,37)', UT_29_37='(29,37)', UT_31_37='(31,37)', UT_33_37='(33,37)', UT_35_37='(35,37)', UT_37_37='(37,37)', UT_00_38='(0,38)', UT_02_38='(2,38)', UT_04_38='(4,38)', UT_06_38='(6,38)', UT_08_38='(8,38)', UT_10_38='(10,38)', UT_12_38='(12,38)', UT_14_38='(14,38)', UT_16_38='(16,38)', UT_18_38='(18,38)', UT_20_38='(20,38)', UT_22_38='(22,38)', UT_24_38='(24,38)', UT_26_38='(26,38)', UT_28_38='(28,38)', UT_30_38='(30,38)', UT_32_38='(32,38)', UT_34_38='(34,38)', UT_36_38='(36,38)', UT_38_00='(38,0)', UT_01_38='(1,38)', UT_38_01='(38,1)', UT_38_02='(38,2)', UT_03_38='(3,38)', UT_38_03='(38,3)', UT_38_04='(38,4)', UT_05_38='(5,38)', UT_38_05='(38,5)', UT_38_06='(38,6)', UT_07_38='(7,38)', UT_38_07='(38,7)', UT_38_08='(38,8)', UT_09_38='(9,38)', UT_38_09='(38,9)', UT_38_10='(38,10)', UT_11_38='(11,38)', UT_38_11='(38,11)', UT_38_12='(38,12)', UT_13_38='(13,38)', UT_38_13='(38,13)', UT_38_14='(38,14)', UT_15_38='(15,38)', UT_38_15='(38,15)', UT_38_16='(38,16)', UT_17_38='(17,38)', UT_38_17='(38,17)', UT_38_18='(38,18)', UT_19_38='(19,38)', UT_38_19='(38,19)', UT_38_20='(38,20)', UT_21_38='(21,38)', UT_38_21='(38,21)', UT_38_22='(38,22)', UT_23_38='(23,38)', UT_38_23='(38,23)', UT_38_24='(38,24)', UT_25_38='(25,38)', UT_38_25='(38,25)', UT_38_26='(38,26)', UT_27_38='(27,38)', UT_38_27='(38,27)', UT_38_28='(38,28)', UT_29_38='(29,38)', UT_38_29='(38,29)', UT_38_30='(38,30)', UT_31_38='(31,38)', UT_38_31='(38,31)', UT_38_32='(38,32)', UT_33_38='(33,38)', UT_38_33='(38,33)', UT_38_34='(38,34)', UT_35_38='(35,38)', UT_38_35='(38,35)', UT_38_36='(38,36)', UT_37_38='(37,38)', UT_38_37='(38,37)', UT_38_38='(38,38)', UT_00_39='(0,39)', UT_39_00='(39,0)', UT_39_01='(39,1)', UT_02_39='(2,39)', UT_39_02='(39,2)', UT_39_03='(39,3)', UT_04_39='(4,39)', UT_39_04='(39,4)', UT_39_05='(39,5)', UT_06_39='(6,39)', UT_39_06='(39,6)', UT_39_07='(39,7)', UT_08_39='(8,39)', UT_39_08='(39,8)', UT_39_09='(39,9)', UT_10_39='(10,39)', UT_39_10='(39,10)', UT_39_11='(39,11)', UT_12_39='(12,39)', UT_39_12='(39,12)', UT_39_13='(39,13)', UT_14_39='(14,39)', UT_39_14='(39,14)', UT_39_15='(39,15)', UT_16_39='(16,39)', UT_39_16='(39,16)', UT_39_17='(39,17)', UT_18_39='(18,39)', UT_39_18='(39,18)', UT_39_19='(39,19)', UT_20_39='(20,39)', UT_39_20='(39,20)', UT_39_21='(39,21)', UT_22_39='(22,39)', UT_39_22='(39,22)', UT_39_23='(39,23)', UT_24_39='(24,39)', UT_39_24='(39,24)', UT_39_25='(39,25)', UT_26_39='(26,39)', UT_39_26='(39,26)', UT_39_27='(39,27)', UT_28_39='(28,39)', UT_39_28='(39,28)', UT_39_29='(39,29)', UT_30_39='(30,39)', UT_39_30='(39,30)', UT_39_31='(39,31)', UT_32_39='(32,39)', UT_39_32='(39,32)', UT_39_33='(39,33)', UT_34_39='(34,39)', UT_39_34='(39,34)', UT_39_35='(39,35)', UT_36_39='(36,39)', UT_39_36='(39,36)', UT_39_37='(39,37)', UT_38_39='(38,39)', UT_39_38='(39,38)', UT_01_39='(1,39)', UT_03_39='(3,39)', UT_05_39='(5,39)', UT_07_39='(7,39)', UT_09_39='(9,39)', UT_11_39='(11,39)', UT_13_39='(13,39)', UT_15_39='(15,39)', UT_17_39='(17,39)', UT_19_39='(19,39)', UT_21_39='(21,39)', UT_23_39='(23,39)', UT_25_39='(25,39)', UT_27_39='(27,39)', UT_29_39='(29,39)', UT_31_39='(31,39)', UT_33_39='(33,39)', UT_35_39='(35,39)', UT_37_39='(37,39)', UT_39_39='(39,39)', UT_00_40='(0,40)', UT_02_40='(2,40)', UT_04_40='(4,40)', UT_06_40='(6,40)', UT_08_40='(8,40)', UT_10_40='(10,40)', UT_12_40='(12,40)', UT_14_40='(14,40)', UT_16_40='(16,40)', UT_18_40='(18,40)', UT_20_40='(20,40)', UT_22_40='(22,40)', UT_24_40='(24,40)', UT_26_40='(26,40)', UT_28_40='(28,40)', UT_30_40='(30,40)', UT_32_40='(32,40)', UT_34_40='(34,40)', UT_36_40='(36,40)', UT_38_40='(38,40)', UT_40_00='(40,0)', UT_01_40='(1,40)', UT_40_01='(40,1)', UT_40_02='(40,2)', UT_03_40='(3,40)', UT_40_03='(40,3)', UT_40_04='(40,4)', UT_05_40='(5,40)', UT_40_05='(40,5)', UT_40_06='(40,6)', UT_07_40='(7,40)', UT_40_07='(40,7)', UT_40_08='(40,8)', UT_09_40='(9,40)', UT_40_09='(40,9)', UT_40_10='(40,10)', UT_11_40='(11,40)', UT_40_11='(40,11)', UT_40_12='(40,12)', UT_13_40='(13,40)', UT_40_13='(40,13)', UT_40_14='(40,14)', UT_15_40='(15,40)', UT_40_15='(40,15)', UT_40_16='(40,16)', UT_17_40='(17,40)', UT_40_17='(40,17)', UT_40_18='(40,18)', UT_19_40='(19,40)', UT_40_19='(40,19)', UT_40_20='(40,20)', UT_21_40='(21,40)', UT_40_21='(40,21)', UT_40_22='(40,22)', UT_23_40='(23,40)', UT_40_23='(40,23)', UT_40_24='(40,24)', UT_25_40='(25,40)', UT_40_25='(40,25)', UT_40_26='(40,26)', UT_27_40='(27,40)', UT_40_27='(40,27)', UT_40_28='(40,28)', UT_29_40='(29,40)', UT_40_29='(40,29)', UT_40_30='(40,30)', UT_31_40='(31,40)', UT_40_31='(40,31)', UT_40_32='(40,32)', UT_33_40='(33,40)', UT_40_33='(40,33)', UT_40_34='(40,34)', UT_35_40='(35,40)', UT_40_35='(40,35)', UT_40_36='(40,36)', UT_37_40='(37,40)', UT_40_37='(40,37)', UT_40_38='(40,38)', UT_39_40='(39,40)', UT_40_39='(40,39)', UT_40_40='(40,40)', UT_00_41='(0,41)', UT_41_00='(41,0)', UT_41_01='(41,1)', UT_02_41='(2,41)', UT_41_02='(41,2)', UT_41_03='(41,3)', UT_04_41='(4,41)', UT_41_04='(41,4)', UT_41_05='(41,5)', UT_06_41='(6,41)', UT_41_06='(41,6)', UT_41_07='(41,7)', UT_08_41='(8,41)', UT_41_08='(41,8)', UT_41_09='(41,9)', UT_10_41='(10,41)', UT_41_10='(41,10)', UT_41_11='(41,11)', UT_12_41='(12,41)', UT_41_12='(41,12)', UT_41_13='(41,13)', UT_14_41='(14,41)', UT_41_14='(41,14)', UT_41_15='(41,15)', UT_16_41='(16,41)', UT_41_16='(41,16)', UT_41_17='(41,17)', UT_18_41='(18,41)', UT_41_18='(41,18)', UT_41_19='(41,19)', UT_20_41='(20,41)', UT_41_20='(41,20)', UT_41_21='(41,21)', UT_22_41='(22,41)', UT_41_22='(41,22)', UT_41_23='(41,23)', UT_24_41='(24,41)', UT_41_24='(41,24)', UT_41_25='(41,25)', UT_26_41='(26,41)', UT_41_26='(41,26)', UT_41_27='(41,27)', UT_28_41='(28,41)', UT_41_28='(41,28)', UT_41_29='(41,29)', UT_30_41='(30,41)', UT_41_30='(41,30)', UT_41_31='(41,31)', UT_32_41='(32,41)', UT_41_32='(41,32)', UT_41_33='(41,33)', UT_34_41='(34,41)', UT_41_34='(41,34)', UT_41_35='(41,35)', UT_36_41='(36,41)', UT_41_36='(41,36)', UT_41_37='(41,37)', UT_38_41='(38,41)', UT_41_38='(41,38)', UT_41_39='(41,39)', UT_40_41='(40,41)', UT_41_40='(41,40)', UT_01_41='(1,41)', UT_03_41='(3,41)', UT_05_41='(5,41)', UT_07_41='(7,41)', UT_09_41='(9,41)', UT_11_41='(11,41)', UT_13_41='(13,41)', UT_15_41='(15,41)', UT_17_41='(17,41)', UT_19_41='(19,41)', UT_21_41='(21,41)', UT_23_41='(23,41)', UT_25_41='(25,41)', UT_27_41='(27,41)', UT_29_41='(29,41)', UT_31_41='(31,41)', UT_33_41='(33,41)', UT_35_41='(35,41)', UT_37_41='(37,41)', UT_39_41='(39,41)', UT_41_41='(41,41)', UT_00_42='(0,42)', UT_02_42='(2,42)', UT_04_42='(4,42)', UT_06_42='(6,42)', UT_08_42='(8,42)', UT_10_42='(10,42)', UT_12_42='(12,42)', UT_14_42='(14,42)', UT_16_42='(16,42)', UT_18_42='(18,42)', UT_20_42='(20,42)', UT_22_42='(22,42)', UT_24_42='(24,42)', UT_26_42='(26,42)', UT_28_42='(28,42)', UT_30_42='(30,42)', UT_32_42='(32,42)', UT_34_42='(34,42)', UT_36_42='(36,42)', UT_38_42='(38,42)', UT_40_42='(40,42)', UT_42_00='(42,0)', UT_01_42='(1,42)', UT_42_01='(42,1)', UT_42_02='(42,2)', UT_03_42='(3,42)', UT_42_03='(42,3)', UT_42_04='(42,4)', UT_05_42='(5,42)', UT_42_05='(42,5)', UT_42_06='(42,6)', UT_07_42='(7,42)', UT_42_07='(42,7)', UT_42_08='(42,8)', UT_09_42='(9,42)', UT_42_09='(42,9)', UT_42_10='(42,10)', UT_11_42='(11,42)', UT_42_11='(42,11)', UT_42_12='(42,12)', UT_13_42='(13,42)', UT_42_13='(42,13)', UT_42_14='(42,14)', UT_15_42='(15,42)', UT_42_15='(42,15)', UT_42_16='(42,16)', UT_17_42='(17,42)', UT_42_17='(42,17)', UT_42_18='(42,18)', UT_19_42='(19,42)', UT_42_19='(42,19)', UT_42_20='(42,20)', UT_21_42='(21,42)', UT_42_21='(42,21)', UT_42_22='(42,22)', UT_23_42='(23,42)', UT_42_23='(42,23)', UT_42_24='(42,24)', UT_25_42='(25,42)', UT_42_25='(42,25)', UT_42_26='(42,26)', UT_27_42='(27,42)', UT_42_27='(42,27)', UT_42_28='(42,28)', UT_29_42='(29,42)', UT_42_29='(42,29)', UT_42_30='(42,30)', UT_31_42='(31,42)', UT_42_31='(42,31)', UT_42_32='(42,32)', UT_33_42='(33,42)', UT_42_33='(42,33)', UT_42_34='(42,34)', UT_35_42='(35,42)', UT_42_35='(42,35)', UT_42_36='(42,36)', UT_37_42='(37,42)', UT_42_37='(42,37)', UT_42_38='(42,38)', UT_39_42='(39,42)', UT_42_39='(42,39)', UT_42_40='(42,40)', UT_41_42='(41,42)', UT_42_41='(42,41)', UT_42_42='(42,42)', UT_00_43='(0,43)', UT_43_00='(43,0)', UT_43_01='(43,1)', UT_02_43='(2,43)', UT_43_02='(43,2)', UT_43_03='(43,3)', UT_04_43='(4,43)', UT_43_04='(43,4)', UT_43_05='(43,5)', UT_06_43='(6,43)', UT_43_06='(43,6)', UT_43_07='(43,7)', UT_08_43='(8,43)', UT_43_08='(43,8)', UT_43_09='(43,9)', UT_10_43='(10,43)', UT_43_10='(43,10)', UT_43_11='(43,11)', UT_12_43='(12,43)', UT_43_12='(43,12)', UT_43_13='(43,13)', UT_14_43='(14,43)', UT_43_14='(43,14)', UT_43_15='(43,15)', UT_16_43='(16,43)', UT_43_16='(43,16)', UT_43_17='(43,17)', UT_18_43='(18,43)', UT_43_18='(43,18)', UT_43_19='(43,19)', UT_20_43='(20,43)', UT_43_20='(43,20)', UT_43_21='(43,21)', UT_22_43='(22,43)', UT_43_22='(43,22)', UT_43_23='(43,23)', UT_24_43='(24,43)', UT_43_24='(43,24)', UT_43_25='(43,25)', UT_26_43='(26,43)', UT_43_26='(43,26)', UT_43_27='(43,27)', UT_28_43='(28,43)', UT_43_28='(43,28)', UT_43_29='(43,29)', UT_30_43='(30,43)', UT_43_30='(43,30)', UT_43_31='(43,31)', UT_32_43='(32,43)', UT_43_32='(43,32)', UT_43_33='(43,33)', UT_34_43='(34,43)', UT_43_34='(43,34)', UT_43_35='(43,35)', UT_36_43='(36,43)', UT_43_36='(43,36)', UT_43_37='(43,37)', UT_38_43='(38,43)', UT_43_38='(43,38)', UT_43_39='(43,39)', UT_40_43='(40,43)', UT_43_40='(43,40)', UT_43_41='(43,41)', UT_42_43='(42,43)', UT_43_42='(43,42)', UT_01_43='(1,43)', UT_03_43='(3,43)', UT_05_43='(5,43)', UT_07_43='(7,43)', UT_09_43='(9,43)', UT_11_43='(11,43)', UT_13_43='(13,43)', UT_15_43='(15,43)', UT_17_43='(17,43)', UT_19_43='(19,43)', UT_21_43='(21,43)', UT_23_43='(23,43)', UT_25_43='(25,43)', UT_27_43='(27,43)', UT_29_43='(29,43)', UT_31_43='(31,43)', UT_33_43='(33,43)', UT_35_43='(35,43)', UT_37_43='(37,43)', UT_39_43='(39,43)', UT_41_43='(41,43)', UT_43_43='(43,43)', UT_00_44='(0,44)', UT_02_44='(2,44)', UT_04_44='(4,44)', UT_06_44='(6,44)', UT_08_44='(8,44)', UT_10_44='(10,44)', UT_12_44='(12,44)', UT_14_44='(14,44)', UT_16_44='(16,44)', UT_18_44='(18,44)', UT_20_44='(20,44)', UT_22_44='(22,44)', UT_24_44='(24,44)', UT_26_44='(26,44)', UT_28_44='(28,44)', UT_30_44='(30,44)', UT_32_44='(32,44)', UT_34_44='(34,44)', UT_36_44='(36,44)', UT_38_44='(38,44)', UT_40_44='(40,44)', UT_42_44='(42,44)', UT_44_00='(44,0)', UT_01_44='(1,44)', UT_44_01='(44,1)', UT_44_02='(44,2)', UT_03_44='(3,44)', UT_44_03='(44,3)', UT_44_04='(44,4)', UT_05_44='(5,44)', UT_44_05='(44,5)', UT_44_06='(44,6)', UT_07_44='(7,44)', UT_44_07='(44,7)', UT_44_08='(44,8)', UT_09_44='(9,44)', UT_44_09='(44,9)', UT_44_10='(44,10)', UT_11_44='(11,44)', UT_44_11='(44,11)', UT_44_12='(44,12)', UT_13_44='(13,44)', UT_44_13='(44,13)', UT_44_14='(44,14)', UT_15_44='(15,44)', UT_44_15='(44,15)', UT_44_16='(44,16)', UT_17_44='(17,44)', UT_44_17='(44,17)', UT_44_18='(44,18)', UT_19_44='(19,44)', UT_44_19='(44,19)', UT_44_20='(44,20)', UT_21_44='(21,44)', UT_44_21='(44,21)', UT_44_22='(44,22)', UT_23_44='(23,44)', UT_44_23='(44,23)', UT_44_24='(44,24)', UT_25_44='(25,44)', UT_44_25='(44,25)', UT_44_26='(44,26)', UT_27_44='(27,44)', UT_44_27='(44,27)', UT_44_28='(44,28)', UT_29_44='(29,44)', UT_44_29='(44,29)', UT_44_30='(44,30)', UT_31_44='(31,44)', UT_44_31='(44,31)', UT_44_32='(44,32)', UT_33_44='(33,44)', UT_44_33='(44,33)', UT_44_34='(44,34)', UT_35_44='(35,44)', UT_44_35='(44,35)', UT_44_36='(44,36)', UT_37_44='(37,44)', UT_44_37='(44,37)', UT_44_38='(44,38)', UT_39_44='(39,44)', UT_44_39='(44,39)', UT_44_40='(44,40)', UT_41_44='(41,44)', UT_44_41='(44,41)', UT_44_42='(44,42)', UT_43_44='(43,44)', UT_44_43='(44,43)', UT_44_44='(44,44)', UT_00_45='(0,45)', UT_45_00='(45,0)', UT_45_01='(45,1)', UT_02_45='(2,45)', UT_45_02='(45,2)', UT_45_03='(45,3)', UT_04_45='(4,45)', UT_45_04='(45,4)', UT_45_05='(45,5)', UT_06_45='(6,45)', UT_45_06='(45,6)', UT_45_07='(45,7)', UT_08_45='(8,45)', UT_45_08='(45,8)', UT_45_09='(45,9)', UT_10_45='(10,45)', UT_45_10='(45,10)', UT_45_11='(45,11)', UT_12_45='(12,45)', UT_45_12='(45,12)', UT_45_13='(45,13)', UT_14_45='(14,45)', UT_45_14='(45,14)', UT_45_15='(45,15)', UT_16_45='(16,45)', UT_45_16='(45,16)', UT_45_17='(45,17)', UT_18_45='(18,45)', UT_45_18='(45,18)', UT_45_19='(45,19)', UT_20_45='(20,45)', UT_45_20='(45,20)', UT_45_21='(45,21)', UT_22_45='(22,45)', UT_45_22='(45,22)', UT_45_23='(45,23)', UT_24_45='(24,45)', UT_45_24='(45,24)', UT_45_25='(45,25)', UT_26_45='(26,45)', UT_45_26='(45,26)', UT_45_27='(45,27)', UT_28_45='(28,45)', UT_45_28='(45,28)', UT_45_29='(45,29)', UT_30_45='(30,45)', UT_45_30='(45,30)', UT_45_31='(45,31)', UT_32_45='(32,45)', UT_45_32='(45,32)', UT_45_33='(45,33)', UT_34_45='(34,45)', UT_45_34='(45,34)', UT_45_35='(45,35)', UT_36_45='(36,45)', UT_45_36='(45,36)', UT_45_37='(45,37)', UT_38_45='(38,45)', UT_45_38='(45,38)', UT_45_39='(45,39)', UT_40_45='(40,45)', UT_45_40='(45,40)', UT_45_41='(45,41)', UT_42_45='(42,45)', UT_45_42='(45,42)', UT_45_43='(45,43)', UT_44_45='(44,45)', UT_45_44='(45,44)', UT_01_45='(1,45)', UT_03_45='(3,45)', UT_05_45='(5,45)', UT_07_45='(7,45)', UT_09_45='(9,45)', UT_11_45='(11,45)', UT_13_45='(13,45)', UT_15_45='(15,45)', UT_17_45='(17,45)', UT_19_45='(19,45)', UT_21_45='(21,45)', UT_23_45='(23,45)', UT_25_45='(25,45)', UT_27_45='(27,45)', UT_29_45='(29,45)', UT_31_45='(31,45)', UT_33_45='(33,45)', UT_35_45='(35,45)', UT_37_45='(37,45)', UT_39_45='(39,45)', UT_41_45='(41,45)', UT_43_45='(43,45)', UT_45_45='(45,45)', UT_00_46='(0,46)', UT_02_46='(2,46)', UT_04_46='(4,46)', UT_06_46='(6,46)', UT_08_46='(8,46)', UT_10_46='(10,46)', UT_12_46='(12,46)', UT_14_46='(14,46)', UT_16_46='(16,46)', UT_18_46='(18,46)', UT_20_46='(20,46)', UT_22_46='(22,46)', UT_24_46='(24,46)', UT_26_46='(26,46)', UT_28_46='(28,46)', UT_30_46='(30,46)', UT_32_46='(32,46)', UT_34_46='(34,46)', UT_36_46='(36,46)', UT_38_46='(38,46)', UT_40_46='(40,46)', UT_42_46='(42,46)', UT_44_46='(44,46)', UT_46_00='(46,0)', UT_01_46='(1,46)', UT_46_01='(46,1)', UT_46_02='(46,2)', UT_03_46='(3,46)', UT_46_03='(46,3)', UT_46_04='(46,4)', UT_05_46='(5,46)', UT_46_05='(46,5)', UT_46_06='(46,6)', UT_07_46='(7,46)', UT_46_07='(46,7)', UT_46_08='(46,8)', UT_09_46='(9,46)', UT_46_09='(46,9)', UT_46_10='(46,10)', UT_11_46='(11,46)', UT_46_11='(46,11)', UT_46_12='(46,12)', UT_13_46='(13,46)', UT_46_13='(46,13)', UT_46_14='(46,14)', UT_15_46='(15,46)', UT_46_15='(46,15)', UT_46_16='(46,16)', UT_17_46='(17,46)', UT_46_17='(46,17)', UT_46_18='(46,18)', UT_19_46='(19,46)', UT_46_19='(46,19)', UT_46_20='(46,20)', UT_21_46='(21,46)', UT_46_21='(46,21)', UT_46_22='(46,22)', UT_23_46='(23,46)', UT_46_23='(46,23)', UT_46_24='(46,24)', UT_25_46='(25,46)', UT_46_25='(46,25)', UT_46_26='(46,26)', UT_27_46='(27,46)', UT_46_27='(46,27)', UT_46_28='(46,28)', UT_29_46='(29,46)', UT_46_29='(46,29)', UT_46_30='(46,30)', UT_31_46='(31,46)', UT_46_31='(46,31)', UT_46_32='(46,32)', UT_33_46='(33,46)', UT_46_33='(46,33)', UT_46_34='(46,34)', UT_35_46='(35,46)', UT_46_35='(46,35)', UT_46_36='(46,36)', UT_37_46='(37,46)', UT_46_37='(46,37)', UT_46_38='(46,38)', UT_39_46='(39,46)', UT_46_39='(46,39)', UT_46_40='(46,40)', UT_41_46='(41,46)', UT_46_41='(46,41)', UT_46_42='(46,42)', UT_43_46='(43,46)', UT_46_43='(46,43)', UT_46_44='(46,44)', UT_45_46='(45,46)', UT_46_45='(46,45)', UT_46_46='(46,46)', UT_00_47='(0,47)', UT_47_00='(47,0)', UT_47_01='(47,1)', UT_02_47='(2,47)', UT_47_02='(47,2)', UT_47_03='(47,3)', UT_04_47='(4,47)', UT_47_04='(47,4)', UT_47_05='(47,5)', UT_06_47='(6,47)', UT_47_06='(47,6)', UT_47_07='(47,7)', UT_08_47='(8,47)', UT_47_08='(47,8)', UT_47_09='(47,9)', UT_10_47='(10,47)', UT_47_10='(47,10)', UT_47_11='(47,11)', UT_12_47='(12,47)', UT_47_12='(47,12)', UT_47_13='(47,13)', UT_14_47='(14,47)', UT_47_14='(47,14)', UT_47_15='(47,15)', UT_16_47='(16,47)', UT_47_16='(47,16)', UT_47_17='(47,17)', UT_18_47='(18,47)', UT_47_18='(47,18)', UT_47_19='(47,19)', UT_20_47='(20,47)', UT_47_20='(47,20)', UT_47_21='(47,21)', UT_22_47='(22,47)', UT_47_22='(47,22)', UT_47_23='(47,23)', UT_24_47='(24,47)', UT_47_24='(47,24)', UT_47_25='(47,25)', UT_26_47='(26,47)', UT_47_26='(47,26)', UT_47_27='(47,27)', UT_28_47='(28,47)', UT_47_28='(47,28)', UT_47_29='(47,29)', UT_30_47='(30,47)', UT_47_30='(47,30)', UT_47_31='(47,31)', UT_32_47='(32,47)', UT_47_32='(47,32)', UT_47_33='(47,33)', UT_34_47='(34,47)', UT_47_34='(47,34)', UT_47_35='(47,35)', UT_36_47='(36,47)', UT_47_36='(47,36)', UT_47_37='(47,37)', UT_38_47='(38,47)', UT_47_38='(47,38)', UT_47_39='(47,39)', UT_40_47='(40,47)', UT_47_40='(47,40)', UT_47_41='(47,41)', UT_42_47='(42,47)', UT_47_42='(47,42)', UT_47_43='(47,43)', UT_44_47='(44,47)', UT_47_44='(47,44)', UT_47_45='(47,45)', UT_46_47='(46,47)', UT_47_46='(47,46)', UT_01_47='(1,47)', UT_03_47='(3,47)', UT_05_47='(5,47)', UT_07_47='(7,47)', UT_09_47='(9,47)', UT_11_47='(11,47)', UT_13_47='(13,47)', UT_15_47='(15,47)', UT_17_47='(17,47)', UT_19_47='(19,47)', UT_21_47='(21,47)', UT_23_47='(23,47)', UT_25_47='(25,47)', UT_27_47='(27,47)', UT_29_47='(29,47)', UT_31_47='(31,47)', UT_33_47='(33,47)', UT_35_47='(35,47)', UT_37_47='(37,47)', UT_39_47='(39,47)', UT_41_47='(41,47)', UT_43_47='(43,47)', UT_45_47='(45,47)', UT_47_47='(47,47)', UT_00_48='(0,48)', UT_02_48='(2,48)', UT_04_48='(4,48)', UT_06_48='(6,48)', UT_08_48='(8,48)', UT_10_48='(10,48)', UT_12_48='(12,48)', UT_14_48='(14,48)', UT_16_48='(16,48)', UT_18_48='(18,48)', UT_20_48='(20,48)', UT_22_48='(22,48)', UT_24_48='(24,48)', UT_26_48='(26,48)', UT_28_48='(28,48)', UT_30_48='(30,48)', UT_32_48='(32,48)', UT_34_48='(34,48)', UT_36_48='(36,48)', UT_38_48='(38,48)', UT_40_48='(40,48)', UT_42_48='(42,48)', UT_44_48='(44,48)', UT_46_48='(46,48)', UT_48_00='(48,0)', UT_01_48='(1,48)', UT_48_01='(48,1)', UT_48_02='(48,2)', UT_03_48='(3,48)', UT_48_03='(48,3)', UT_48_04='(48,4)', UT_05_48='(5,48)', UT_48_05='(48,5)', UT_48_06='(48,6)', UT_07_48='(7,48)', UT_48_07='(48,7)', UT_48_08='(48,8)', UT_09_48='(9,48)', UT_48_09='(48,9)', UT_48_10='(48,10)', UT_11_48='(11,48)', UT_48_11='(48,11)', UT_48_12='(48,12)', UT_13_48='(13,48)', UT_48_13='(48,13)', UT_48_14='(48,14)', UT_15_48='(15,48)', UT_48_15='(48,15)', UT_48_16='(48,16)', UT_17_48='(17,48)', UT_48_17='(48,17)', UT_48_18='(48,18)', UT_19_48='(19,48)', UT_48_19='(48,19)', UT_48_20='(48,20)', UT_21_48='(21,48)', UT_48_21='(48,21)', UT_48_22='(48,22)', UT_23_48='(23,48)', UT_48_23='(48,23)', UT_48_24='(48,24)', UT_25_48='(25,48)', UT_48_25='(48,25)', UT_48_26='(48,26)', UT_27_48='(27,48)', UT_48_27='(48,27)', UT_48_28='(48,28)', UT_29_48='(29,48)', UT_48_29='(48,29)', UT_48_30='(48,30)', UT_31_48='(31,48)', UT_48_31='(48,31)', UT_48_32='(48,32)', UT_33_48='(33,48)', UT_48_33='(48,33)', UT_48_34='(48,34)', UT_35_48='(35,48)', UT_48_35='(48,35)', UT_48_36='(48,36)', UT_37_48='(37,48)', UT_48_37='(48,37)', UT_48_38='(48,38)', UT_39_48='(39,48)', UT_48_39='(48,39)', UT_48_40='(48,40)', UT_41_48='(41,48)', UT_48_41='(48,41)', UT_48_42='(48,42)', UT_43_48='(43,48)', UT_48_43='(48,43)', UT_48_44='(48,44)', UT_45_48='(45,48)', UT_48_45='(48,45)', UT_48_46='(48,46)', UT_47_48='(47,48)', UT_48_47='(48,47)', UT_48_48='(48,48)', UT_00_49='(0,49)', UT_49_00='(49,0)', UT_49_01='(49,1)', UT_02_49='(2,49)', UT_49_02='(49,2)', UT_49_03='(49,3)', UT_04_49='(4,49)', UT_49_04='(49,4)', UT_49_05='(49,5)', UT_06_49='(6,49)', UT_49_06='(49,6)', UT_49_07='(49,7)', UT_08_49='(8,49)', UT_49_08='(49,8)', UT_49_09='(49,9)', UT_10_49='(10,49)', UT_49_10='(49,10)', UT_49_11='(49,11)', UT_12_49='(12,49)', UT_49_12='(49,12)', UT_49_13='(49,13)', UT_14_49='(14,49)', UT_49_14='(49,14)', UT_49_15='(49,15)', UT_16_49='(16,49)', UT_49_16='(49,16)', UT_49_17='(49,17)', UT_18_49='(18,49)', UT_49_18='(49,18)', UT_49_19='(49,19)', UT_20_49='(20,49)', UT_49_20='(49,20)', UT_49_21='(49,21)', UT_22_49='(22,49)', UT_49_22='(49,22)', UT_49_23='(49,23)', UT_24_49='(24,49)', UT_49_24='(49,24)', UT_49_25='(49,25)', UT_26_49='(26,49)', UT_49_26='(49,26)', UT_49_27='(49,27)', UT_28_49='(28,49)', UT_49_28='(49,28)', UT_49_29='(49,29)', UT_30_49='(30,49)', UT_49_30='(49,30)', UT_49_31='(49,31)', UT_32_49='(32,49)', UT_49_32='(49,32)', UT_49_33='(49,33)', UT_34_49='(34,49)', UT_49_34='(49,34)', UT_49_35='(49,35)', UT_36_49='(36,49)', UT_49_36='(49,36)', UT_49_37='(49,37)', UT_38_49='(38,49)', UT_49_38='(49,38)', UT_49_39='(49,39)', UT_40_49='(40,49)', UT_49_40='(49,40)', UT_49_41='(49,41)', UT_42_49='(42,49)', UT_49_42='(49,42)', UT_49_43='(49,43)', UT_44_49='(44,49)', UT_49_44='(49,44)', UT_49_45='(49,45)', UT_46_49='(46,49)', UT_49_46='(49,46)', UT_49_47='(49,47)', UT_48_49='(48,49)', UT_49_48='(49,48)', UT_01_49='(1,49)', UT_03_49='(3,49)', UT_05_49='(5,49)', UT_07_49='(7,49)', UT_09_49='(9,49)', UT_11_49='(11,49)', UT_13_49='(13,49)', UT_15_49='(15,49)', UT_17_49='(17,49)', UT_19_49='(19,49)', UT_21_49='(21,49)', UT_23_49='(23,49)', UT_25_49='(25,49)', UT_27_49='(27,49)', UT_29_49='(29,49)', UT_31_49='(31,49)', UT_33_49='(33,49)', UT_35_49='(35,49)', UT_37_49='(37,49)', UT_39_49='(39,49)', UT_41_49='(41,49)', UT_43_49='(43,49)', UT_45_49='(45,49)', UT_47_49='(47,49)', UT_49_49='(49,49)')` +public access to universal vocabulary for `MazeTokenizerModular` - `VOCAB_LIST: list[str] = ['', '', '', '', '', '', '', '', '<-->', ';', '', '(', ',', ')', '=', '||', ':', 'THEN', '-', '', 'TARGET_A', 'TARGET_B', 'TARGET_C', 'TARGET_D', 'TARGET_E', 'TARGET_F', 'TARGET_G', 'TARGET_H', 'TARGET_I', 'TARGET_J', 'TARGET_K', 'TARGET_L', 'TARGET_M', 'TARGET_N', 'TARGET_O', 'TARGET_P', 'TARGET_Q', 'TARGET_R', 'TARGET_S', 'TARGET_T', 'TARGET_U', 'TARGET_V', 'TARGET_W', 'TARGET_X', 'TARGET_Y', 'TARGET_Z', 'TARGET_NORTH', 'TARGET_SOUTH', 'TARGET_EAST', 'TARGET_WEST', 'TARGET_NORTHEAST', 'TARGET_NORTHWEST', 'TARGET_SOUTHEAST', 'TARGET_SOUTHWEST', 'TARGET_CENTER', 'NORTH', 'SOUTH', 'EAST', 'WEST', 'FORWARD', 'BACKWARD', 'LEFT', 'RIGHT', 'STAY', '+0', '+1', '+2', '+3', '+4', '+5', '+6', '+7', '+8', '+9', '+10', '+11', '+12', '+13', '+14', '+15', '+16', '+17', '+18', '+19', '+20', '+21', '+22', '+23', '+24', '+25', '+26', '+27', '+28', '+29', '+30', '+31', '+32', '+33', '+34', '+35', '+36', '+37', '+38', '+39', '+40', '+41', '+42', '+43', '+44', '+45', '+46', '+47', '+48', '+49', '+50', '+51', '+52', '+53', '+54', '+55', '+56', '+57', '+58', '+59', '+60', '+61', '+62', '+63', '+64', '+65', '+66', '+67', '+68', '+69', '+70', '+71', '+72', '+73', '+74', '+75', '+76', '+77', '+78', '+79', '+80', '+81', '+82', '+83', '+84', '+85', '+86', '+87', '+88', '+89', '+90', '+91', '+92', '+93', '+94', '+95', '+96', '+97', '+98', '+99', '+100', '+101', '+102', '+103', '+104', '+105', '+106', '+107', '+108', '+109', '+110', '+111', '+112', '+113', '+114', '+115', '+116', '+117', '+118', '+119', '+120', '+121', '+122', '+123', '+124', '+125', '+126', '+127', '+128', '+129', '+130', '+131', '+132', '+133', '+134', '+135', '+136', '+137', '+138', '+139', '+140', '+141', '+142', '+143', '+144', '+145', '+146', '+147', '+148', '+149', '+150', '+151', '+152', '+153', '+154', '+155', '+156', '+157', '+158', '+159', '+160', '+161', '+162', '+163', '+164', '+165', '+166', '+167', '+168', '+169', '+170', '+171', '+172', '+173', '+174', '+175', '+176', '+177', '+178', '+179', '+180', '+181', '+182', '+183', '+184', '+185', '+186', '+187', '+188', '+189', '+190', '+191', '+192', '+193', '+194', '+195', '+196', '+197', '+198', '+199', '+200', '+201', '+202', '+203', '+204', '+205', '+206', '+207', '+208', '+209', '+210', '+211', '+212', '+213', '+214', '+215', '+216', '+217', '+218', '+219', '+220', '+221', '+222', '+223', '+224', '+225', '+226', '+227', '+228', '+229', '+230', '+231', '+232', '+233', '+234', '+235', '+236', '+237', '+238', '+239', '+240', '+241', '+242', '+243', '+244', '+245', '+246', '+247', '+248', '+249', '+250', '+251', '+252', '+253', '+254', '+255', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '-256', '-255', '-254', '-253', '-252', '-251', '-250', '-249', '-248', '-247', '-246', '-245', '-244', '-243', '-242', '-241', '-240', '-239', '-238', '-237', '-236', '-235', '-234', '-233', '-232', '-231', '-230', '-229', '-228', '-227', '-226', '-225', '-224', '-223', '-222', '-221', '-220', '-219', '-218', '-217', '-216', '-215', '-214', '-213', '-212', '-211', '-210', '-209', '-208', '-207', '-206', '-205', '-204', '-203', '-202', '-201', '-200', '-199', '-198', '-197', '-196', '-195', '-194', '-193', '-192', '-191', '-190', '-189', '-188', '-187', '-186', '-185', '-184', '-183', '-182', '-181', '-180', '-179', '-178', '-177', '-176', '-175', '-174', '-173', '-172', '-171', '-170', '-169', '-168', '-167', '-166', '-165', '-164', '-163', '-162', '-161', '-160', '-159', '-158', '-157', '-156', '-155', '-154', '-153', '-152', '-151', '-150', '-149', '-148', '-147', '-146', '-145', '-144', '-143', '-142', '-141', '-140', '-139', '-138', '-137', '-136', '-135', '-134', '-133', '-132', '-131', '-130', '-129', '-128', '-127', '-126', '-125', '-124', '-123', '-122', '-121', '-120', '-119', '-118', '-117', '-116', '-115', '-114', '-113', '-112', '-111', '-110', '-109', '-108', '-107', '-106', '-105', '-104', '-103', '-102', '-101', '-100', '-99', '-98', '-97', '-96', '-95', '-94', '-93', '-92', '-91', '-90', '-89', '-88', '-87', '-86', '-85', '-84', '-83', '-82', '-81', '-80', '-79', '-78', '-77', '-76', '-75', '-74', '-73', '-72', '-71', '-70', '-69', '-68', '-67', '-66', '-65', '-64', '-63', '-62', '-61', '-60', '-59', '-58', '-57', '-56', '-55', '-54', '-53', '-52', '-51', '-50', '-49', '-48', '-47', '-46', '-45', '-44', '-43', '-42', '-41', '-40', '-39', '-38', '-37', '-36', '-35', '-34', '-33', '-32', '-31', '-30', '-29', '-28', '-27', '-26', '-25', '-24', '-23', '-22', '-21', '-20', '-19', '-18', '-17', '-16', '-15', '-14', '-13', '-12', '-11', '-10', '-9', '-8', '-7', '-6', '-5', '-4', '-3', '-2', '-1', 'STEP', 'ADJ_GROUP', '&', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '(0,0)', '(0,1)', '(1,0)', '(1,1)', '(0,2)', '(2,0)', '(1,2)', '(2,1)', '(2,2)', '(0,3)', '(3,0)', '(3,1)', '(2,3)', '(3,2)', '(1,3)', '(3,3)', '(0,4)', '(2,4)', '(4,0)', '(1,4)', '(4,1)', '(4,2)', '(3,4)', '(4,3)', '(4,4)', '(0,5)', '(5,0)', '(5,1)', '(2,5)', '(5,2)', '(5,3)', '(4,5)', '(5,4)', '(1,5)', '(3,5)', '(5,5)', '(0,6)', '(2,6)', '(4,6)', '(6,0)', '(1,6)', '(6,1)', '(6,2)', '(3,6)', '(6,3)', '(6,4)', '(5,6)', '(6,5)', '(6,6)', '(0,7)', '(7,0)', '(7,1)', '(2,7)', '(7,2)', '(7,3)', '(4,7)', '(7,4)', '(7,5)', '(6,7)', '(7,6)', '(1,7)', '(3,7)', '(5,7)', '(7,7)', '(0,8)', '(2,8)', '(4,8)', '(6,8)', '(8,0)', '(1,8)', '(8,1)', '(8,2)', '(3,8)', '(8,3)', '(8,4)', '(5,8)', '(8,5)', '(8,6)', '(7,8)', '(8,7)', '(8,8)', '(0,9)', '(9,0)', '(9,1)', '(2,9)', '(9,2)', '(9,3)', '(4,9)', '(9,4)', '(9,5)', '(6,9)', '(9,6)', '(9,7)', '(8,9)', '(9,8)', '(1,9)', '(3,9)', '(5,9)', '(7,9)', '(9,9)', '(0,10)', '(2,10)', '(4,10)', '(6,10)', '(8,10)', '(10,0)', '(1,10)', '(10,1)', '(10,2)', '(3,10)', '(10,3)', '(10,4)', '(5,10)', '(10,5)', '(10,6)', '(7,10)', '(10,7)', '(10,8)', '(9,10)', '(10,9)', '(10,10)', '(0,11)', '(11,0)', '(11,1)', '(2,11)', '(11,2)', '(11,3)', '(4,11)', '(11,4)', '(11,5)', '(6,11)', '(11,6)', '(11,7)', '(8,11)', '(11,8)', '(11,9)', '(10,11)', '(11,10)', '(1,11)', '(3,11)', '(5,11)', '(7,11)', '(9,11)', '(11,11)', '(0,12)', '(2,12)', '(4,12)', '(6,12)', '(8,12)', '(10,12)', '(12,0)', '(1,12)', '(12,1)', '(12,2)', '(3,12)', '(12,3)', '(12,4)', '(5,12)', '(12,5)', '(12,6)', '(7,12)', '(12,7)', '(12,8)', '(9,12)', '(12,9)', '(12,10)', '(11,12)', '(12,11)', '(12,12)', '(0,13)', '(13,0)', '(13,1)', '(2,13)', '(13,2)', '(13,3)', '(4,13)', '(13,4)', '(13,5)', '(6,13)', '(13,6)', '(13,7)', '(8,13)', '(13,8)', '(13,9)', '(10,13)', '(13,10)', '(13,11)', '(12,13)', '(13,12)', '(1,13)', '(3,13)', '(5,13)', '(7,13)', '(9,13)', '(11,13)', '(13,13)', '(0,14)', '(2,14)', '(4,14)', '(6,14)', '(8,14)', '(10,14)', '(12,14)', '(14,0)', '(1,14)', '(14,1)', '(14,2)', '(3,14)', '(14,3)', '(14,4)', '(5,14)', '(14,5)', '(14,6)', '(7,14)', '(14,7)', '(14,8)', '(9,14)', '(14,9)', '(14,10)', '(11,14)', '(14,11)', '(14,12)', '(13,14)', '(14,13)', '(14,14)', '(0,15)', '(15,0)', '(15,1)', '(2,15)', '(15,2)', '(15,3)', '(4,15)', '(15,4)', '(15,5)', '(6,15)', '(15,6)', '(15,7)', '(8,15)', '(15,8)', '(15,9)', '(10,15)', '(15,10)', '(15,11)', '(12,15)', '(15,12)', '(15,13)', '(14,15)', '(15,14)', '(1,15)', '(3,15)', '(5,15)', '(7,15)', '(9,15)', '(11,15)', '(13,15)', '(15,15)', '(0,16)', '(2,16)', '(4,16)', '(6,16)', '(8,16)', '(10,16)', '(12,16)', '(14,16)', '(16,0)', '(1,16)', '(16,1)', '(16,2)', '(3,16)', '(16,3)', '(16,4)', '(5,16)', '(16,5)', '(16,6)', '(7,16)', '(16,7)', '(16,8)', '(9,16)', '(16,9)', '(16,10)', '(11,16)', '(16,11)', '(16,12)', '(13,16)', '(16,13)', '(16,14)', '(15,16)', '(16,15)', '(16,16)', '(0,17)', '(17,0)', '(17,1)', '(2,17)', '(17,2)', '(17,3)', '(4,17)', '(17,4)', '(17,5)', '(6,17)', '(17,6)', '(17,7)', '(8,17)', '(17,8)', '(17,9)', '(10,17)', '(17,10)', '(17,11)', '(12,17)', '(17,12)', '(17,13)', '(14,17)', '(17,14)', '(17,15)', '(16,17)', '(17,16)', '(1,17)', '(3,17)', '(5,17)', '(7,17)', '(9,17)', '(11,17)', '(13,17)', '(15,17)', '(17,17)', '(0,18)', '(2,18)', '(4,18)', '(6,18)', '(8,18)', '(10,18)', '(12,18)', '(14,18)', '(16,18)', '(18,0)', '(1,18)', '(18,1)', '(18,2)', '(3,18)', '(18,3)', '(18,4)', '(5,18)', '(18,5)', '(18,6)', '(7,18)', '(18,7)', '(18,8)', '(9,18)', '(18,9)', '(18,10)', '(11,18)', '(18,11)', '(18,12)', '(13,18)', '(18,13)', '(18,14)', '(15,18)', '(18,15)', '(18,16)', '(17,18)', '(18,17)', '(18,18)', '(0,19)', '(19,0)', '(19,1)', '(2,19)', '(19,2)', '(19,3)', '(4,19)', '(19,4)', '(19,5)', '(6,19)', '(19,6)', '(19,7)', '(8,19)', '(19,8)', '(19,9)', '(10,19)', '(19,10)', '(19,11)', '(12,19)', '(19,12)', '(19,13)', '(14,19)', '(19,14)', '(19,15)', '(16,19)', '(19,16)', '(19,17)', '(18,19)', '(19,18)', '(1,19)', '(3,19)', '(5,19)', '(7,19)', '(9,19)', '(11,19)', '(13,19)', '(15,19)', '(17,19)', '(19,19)', '(0,20)', '(2,20)', '(4,20)', '(6,20)', '(8,20)', '(10,20)', '(12,20)', '(14,20)', '(16,20)', '(18,20)', '(20,0)', '(1,20)', '(20,1)', '(20,2)', '(3,20)', '(20,3)', '(20,4)', '(5,20)', '(20,5)', '(20,6)', '(7,20)', '(20,7)', '(20,8)', '(9,20)', '(20,9)', '(20,10)', '(11,20)', '(20,11)', '(20,12)', '(13,20)', '(20,13)', '(20,14)', '(15,20)', '(20,15)', '(20,16)', '(17,20)', '(20,17)', '(20,18)', '(19,20)', '(20,19)', '(20,20)', '(0,21)', '(21,0)', '(21,1)', '(2,21)', '(21,2)', '(21,3)', '(4,21)', '(21,4)', '(21,5)', '(6,21)', '(21,6)', '(21,7)', '(8,21)', '(21,8)', '(21,9)', '(10,21)', '(21,10)', '(21,11)', '(12,21)', '(21,12)', '(21,13)', '(14,21)', '(21,14)', '(21,15)', '(16,21)', '(21,16)', '(21,17)', '(18,21)', '(21,18)', '(21,19)', '(20,21)', '(21,20)', '(1,21)', '(3,21)', '(5,21)', '(7,21)', '(9,21)', '(11,21)', '(13,21)', '(15,21)', '(17,21)', '(19,21)', '(21,21)', '(0,22)', '(2,22)', '(4,22)', '(6,22)', '(8,22)', '(10,22)', '(12,22)', '(14,22)', '(16,22)', '(18,22)', '(20,22)', '(22,0)', '(1,22)', '(22,1)', '(22,2)', '(3,22)', '(22,3)', '(22,4)', '(5,22)', '(22,5)', '(22,6)', '(7,22)', '(22,7)', '(22,8)', '(9,22)', '(22,9)', '(22,10)', '(11,22)', '(22,11)', '(22,12)', '(13,22)', '(22,13)', '(22,14)', '(15,22)', '(22,15)', '(22,16)', '(17,22)', '(22,17)', '(22,18)', '(19,22)', '(22,19)', '(22,20)', '(21,22)', '(22,21)', '(22,22)', '(0,23)', '(23,0)', '(23,1)', '(2,23)', '(23,2)', '(23,3)', '(4,23)', '(23,4)', '(23,5)', '(6,23)', '(23,6)', '(23,7)', '(8,23)', '(23,8)', '(23,9)', '(10,23)', '(23,10)', '(23,11)', '(12,23)', '(23,12)', '(23,13)', '(14,23)', '(23,14)', '(23,15)', '(16,23)', '(23,16)', '(23,17)', '(18,23)', '(23,18)', '(23,19)', '(20,23)', '(23,20)', '(23,21)', '(22,23)', '(23,22)', '(1,23)', '(3,23)', '(5,23)', '(7,23)', '(9,23)', '(11,23)', '(13,23)', '(15,23)', '(17,23)', '(19,23)', '(21,23)', '(23,23)', '(0,24)', '(2,24)', '(4,24)', '(6,24)', '(8,24)', '(10,24)', '(12,24)', '(14,24)', '(16,24)', '(18,24)', '(20,24)', '(22,24)', '(24,0)', '(1,24)', '(24,1)', '(24,2)', '(3,24)', '(24,3)', '(24,4)', '(5,24)', '(24,5)', '(24,6)', '(7,24)', '(24,7)', '(24,8)', '(9,24)', '(24,9)', '(24,10)', '(11,24)', '(24,11)', '(24,12)', '(13,24)', '(24,13)', '(24,14)', '(15,24)', '(24,15)', '(24,16)', '(17,24)', '(24,17)', '(24,18)', '(19,24)', '(24,19)', '(24,20)', '(21,24)', '(24,21)', '(24,22)', '(23,24)', '(24,23)', '(24,24)', '(0,25)', '(25,0)', '(25,1)', '(2,25)', '(25,2)', '(25,3)', '(4,25)', '(25,4)', '(25,5)', '(6,25)', '(25,6)', '(25,7)', '(8,25)', '(25,8)', '(25,9)', '(10,25)', '(25,10)', '(25,11)', '(12,25)', '(25,12)', '(25,13)', '(14,25)', '(25,14)', '(25,15)', '(16,25)', '(25,16)', '(25,17)', '(18,25)', '(25,18)', '(25,19)', '(20,25)', '(25,20)', '(25,21)', '(22,25)', '(25,22)', '(25,23)', '(24,25)', '(25,24)', '(1,25)', '(3,25)', '(5,25)', '(7,25)', '(9,25)', '(11,25)', '(13,25)', '(15,25)', '(17,25)', '(19,25)', '(21,25)', '(23,25)', '(25,25)', '(0,26)', '(2,26)', '(4,26)', '(6,26)', '(8,26)', '(10,26)', '(12,26)', '(14,26)', '(16,26)', '(18,26)', '(20,26)', '(22,26)', '(24,26)', '(26,0)', '(1,26)', '(26,1)', '(26,2)', '(3,26)', '(26,3)', '(26,4)', '(5,26)', '(26,5)', '(26,6)', '(7,26)', '(26,7)', '(26,8)', '(9,26)', '(26,9)', '(26,10)', '(11,26)', '(26,11)', '(26,12)', '(13,26)', '(26,13)', '(26,14)', '(15,26)', '(26,15)', '(26,16)', '(17,26)', '(26,17)', '(26,18)', '(19,26)', '(26,19)', '(26,20)', '(21,26)', '(26,21)', '(26,22)', '(23,26)', '(26,23)', '(26,24)', '(25,26)', '(26,25)', '(26,26)', '(0,27)', '(27,0)', '(27,1)', '(2,27)', '(27,2)', '(27,3)', '(4,27)', '(27,4)', '(27,5)', '(6,27)', '(27,6)', '(27,7)', '(8,27)', '(27,8)', '(27,9)', '(10,27)', '(27,10)', '(27,11)', '(12,27)', '(27,12)', '(27,13)', '(14,27)', '(27,14)', '(27,15)', '(16,27)', '(27,16)', '(27,17)', '(18,27)', '(27,18)', '(27,19)', '(20,27)', '(27,20)', '(27,21)', '(22,27)', '(27,22)', '(27,23)', '(24,27)', '(27,24)', '(27,25)', '(26,27)', '(27,26)', '(1,27)', '(3,27)', '(5,27)', '(7,27)', '(9,27)', '(11,27)', '(13,27)', '(15,27)', '(17,27)', '(19,27)', '(21,27)', '(23,27)', '(25,27)', '(27,27)', '(0,28)', '(2,28)', '(4,28)', '(6,28)', '(8,28)', '(10,28)', '(12,28)', '(14,28)', '(16,28)', '(18,28)', '(20,28)', '(22,28)', '(24,28)', '(26,28)', '(28,0)', '(1,28)', '(28,1)', '(28,2)', '(3,28)', '(28,3)', '(28,4)', '(5,28)', '(28,5)', '(28,6)', '(7,28)', '(28,7)', '(28,8)', '(9,28)', '(28,9)', '(28,10)', '(11,28)', '(28,11)', '(28,12)', '(13,28)', '(28,13)', '(28,14)', '(15,28)', '(28,15)', '(28,16)', '(17,28)', '(28,17)', '(28,18)', '(19,28)', '(28,19)', '(28,20)', '(21,28)', '(28,21)', '(28,22)', '(23,28)', '(28,23)', '(28,24)', '(25,28)', '(28,25)', '(28,26)', '(27,28)', '(28,27)', '(28,28)', '(0,29)', '(29,0)', '(29,1)', '(2,29)', '(29,2)', '(29,3)', '(4,29)', '(29,4)', '(29,5)', '(6,29)', '(29,6)', '(29,7)', '(8,29)', '(29,8)', '(29,9)', '(10,29)', '(29,10)', '(29,11)', '(12,29)', '(29,12)', '(29,13)', '(14,29)', '(29,14)', '(29,15)', '(16,29)', '(29,16)', '(29,17)', '(18,29)', '(29,18)', '(29,19)', '(20,29)', '(29,20)', '(29,21)', '(22,29)', '(29,22)', '(29,23)', '(24,29)', '(29,24)', '(29,25)', '(26,29)', '(29,26)', '(29,27)', '(28,29)', '(29,28)', '(1,29)', '(3,29)', '(5,29)', '(7,29)', '(9,29)', '(11,29)', '(13,29)', '(15,29)', '(17,29)', '(19,29)', '(21,29)', '(23,29)', '(25,29)', '(27,29)', '(29,29)', '(0,30)', '(2,30)', '(4,30)', '(6,30)', '(8,30)', '(10,30)', '(12,30)', '(14,30)', '(16,30)', '(18,30)', '(20,30)', '(22,30)', '(24,30)', '(26,30)', '(28,30)', '(30,0)', '(1,30)', '(30,1)', '(30,2)', '(3,30)', '(30,3)', '(30,4)', '(5,30)', '(30,5)', '(30,6)', '(7,30)', '(30,7)', '(30,8)', '(9,30)', '(30,9)', '(30,10)', '(11,30)', '(30,11)', '(30,12)', '(13,30)', '(30,13)', '(30,14)', '(15,30)', '(30,15)', '(30,16)', '(17,30)', '(30,17)', '(30,18)', '(19,30)', '(30,19)', '(30,20)', '(21,30)', '(30,21)', '(30,22)', '(23,30)', '(30,23)', '(30,24)', '(25,30)', '(30,25)', '(30,26)', '(27,30)', '(30,27)', '(30,28)', '(29,30)', '(30,29)', '(30,30)', '(0,31)', '(31,0)', '(31,1)', '(2,31)', '(31,2)', '(31,3)', '(4,31)', '(31,4)', '(31,5)', '(6,31)', '(31,6)', '(31,7)', '(8,31)', '(31,8)', '(31,9)', '(10,31)', '(31,10)', '(31,11)', '(12,31)', '(31,12)', '(31,13)', '(14,31)', '(31,14)', '(31,15)', '(16,31)', '(31,16)', '(31,17)', '(18,31)', '(31,18)', '(31,19)', '(20,31)', '(31,20)', '(31,21)', '(22,31)', '(31,22)', '(31,23)', '(24,31)', '(31,24)', '(31,25)', '(26,31)', '(31,26)', '(31,27)', '(28,31)', '(31,28)', '(31,29)', '(30,31)', '(31,30)', '(1,31)', '(3,31)', '(5,31)', '(7,31)', '(9,31)', '(11,31)', '(13,31)', '(15,31)', '(17,31)', '(19,31)', '(21,31)', '(23,31)', '(25,31)', '(27,31)', '(29,31)', '(31,31)', '(0,32)', '(2,32)', '(4,32)', '(6,32)', '(8,32)', '(10,32)', '(12,32)', '(14,32)', '(16,32)', '(18,32)', '(20,32)', '(22,32)', '(24,32)', '(26,32)', '(28,32)', '(30,32)', '(32,0)', '(1,32)', '(32,1)', '(32,2)', '(3,32)', '(32,3)', '(32,4)', '(5,32)', '(32,5)', '(32,6)', '(7,32)', '(32,7)', '(32,8)', '(9,32)', '(32,9)', '(32,10)', '(11,32)', '(32,11)', '(32,12)', '(13,32)', '(32,13)', '(32,14)', '(15,32)', '(32,15)', '(32,16)', '(17,32)', '(32,17)', '(32,18)', '(19,32)', '(32,19)', '(32,20)', '(21,32)', '(32,21)', '(32,22)', '(23,32)', '(32,23)', '(32,24)', '(25,32)', '(32,25)', '(32,26)', '(27,32)', '(32,27)', '(32,28)', '(29,32)', '(32,29)', '(32,30)', '(31,32)', '(32,31)', '(32,32)', '(0,33)', '(33,0)', '(33,1)', '(2,33)', '(33,2)', '(33,3)', '(4,33)', '(33,4)', '(33,5)', '(6,33)', '(33,6)', '(33,7)', '(8,33)', '(33,8)', '(33,9)', '(10,33)', '(33,10)', '(33,11)', '(12,33)', '(33,12)', '(33,13)', '(14,33)', '(33,14)', '(33,15)', '(16,33)', '(33,16)', '(33,17)', '(18,33)', '(33,18)', '(33,19)', '(20,33)', '(33,20)', '(33,21)', '(22,33)', '(33,22)', '(33,23)', '(24,33)', '(33,24)', '(33,25)', '(26,33)', '(33,26)', '(33,27)', '(28,33)', '(33,28)', '(33,29)', '(30,33)', '(33,30)', '(33,31)', '(32,33)', '(33,32)', '(1,33)', '(3,33)', '(5,33)', '(7,33)', '(9,33)', '(11,33)', '(13,33)', '(15,33)', '(17,33)', '(19,33)', '(21,33)', '(23,33)', '(25,33)', '(27,33)', '(29,33)', '(31,33)', '(33,33)', '(0,34)', '(2,34)', '(4,34)', '(6,34)', '(8,34)', '(10,34)', '(12,34)', '(14,34)', '(16,34)', '(18,34)', '(20,34)', '(22,34)', '(24,34)', '(26,34)', '(28,34)', '(30,34)', '(32,34)', '(34,0)', '(1,34)', '(34,1)', '(34,2)', '(3,34)', '(34,3)', '(34,4)', '(5,34)', '(34,5)', '(34,6)', '(7,34)', '(34,7)', '(34,8)', '(9,34)', '(34,9)', '(34,10)', '(11,34)', '(34,11)', '(34,12)', '(13,34)', '(34,13)', '(34,14)', '(15,34)', '(34,15)', '(34,16)', '(17,34)', '(34,17)', '(34,18)', '(19,34)', '(34,19)', '(34,20)', '(21,34)', '(34,21)', '(34,22)', '(23,34)', '(34,23)', '(34,24)', '(25,34)', '(34,25)', '(34,26)', '(27,34)', '(34,27)', '(34,28)', '(29,34)', '(34,29)', '(34,30)', '(31,34)', '(34,31)', '(34,32)', '(33,34)', '(34,33)', '(34,34)', '(0,35)', '(35,0)', '(35,1)', '(2,35)', '(35,2)', '(35,3)', '(4,35)', '(35,4)', '(35,5)', '(6,35)', '(35,6)', '(35,7)', '(8,35)', '(35,8)', '(35,9)', '(10,35)', '(35,10)', '(35,11)', '(12,35)', '(35,12)', '(35,13)', '(14,35)', '(35,14)', '(35,15)', '(16,35)', '(35,16)', '(35,17)', '(18,35)', '(35,18)', '(35,19)', '(20,35)', '(35,20)', '(35,21)', '(22,35)', '(35,22)', '(35,23)', '(24,35)', '(35,24)', '(35,25)', '(26,35)', '(35,26)', '(35,27)', '(28,35)', '(35,28)', '(35,29)', '(30,35)', '(35,30)', '(35,31)', '(32,35)', '(35,32)', '(35,33)', '(34,35)', '(35,34)', '(1,35)', '(3,35)', '(5,35)', '(7,35)', '(9,35)', '(11,35)', '(13,35)', '(15,35)', '(17,35)', '(19,35)', '(21,35)', '(23,35)', '(25,35)', '(27,35)', '(29,35)', '(31,35)', '(33,35)', '(35,35)', '(0,36)', '(2,36)', '(4,36)', '(6,36)', '(8,36)', '(10,36)', '(12,36)', '(14,36)', '(16,36)', '(18,36)', '(20,36)', '(22,36)', '(24,36)', '(26,36)', '(28,36)', '(30,36)', '(32,36)', '(34,36)', '(36,0)', '(1,36)', '(36,1)', '(36,2)', '(3,36)', '(36,3)', '(36,4)', '(5,36)', '(36,5)', '(36,6)', '(7,36)', '(36,7)', '(36,8)', '(9,36)', '(36,9)', '(36,10)', '(11,36)', '(36,11)', '(36,12)', '(13,36)', '(36,13)', '(36,14)', '(15,36)', '(36,15)', '(36,16)', '(17,36)', '(36,17)', '(36,18)', '(19,36)', '(36,19)', '(36,20)', '(21,36)', '(36,21)', '(36,22)', '(23,36)', '(36,23)', '(36,24)', '(25,36)', '(36,25)', '(36,26)', '(27,36)', '(36,27)', '(36,28)', '(29,36)', '(36,29)', '(36,30)', '(31,36)', '(36,31)', '(36,32)', '(33,36)', '(36,33)', '(36,34)', '(35,36)', '(36,35)', '(36,36)', '(0,37)', '(37,0)', '(37,1)', '(2,37)', '(37,2)', '(37,3)', '(4,37)', '(37,4)', '(37,5)', '(6,37)', '(37,6)', '(37,7)', '(8,37)', '(37,8)', '(37,9)', '(10,37)', '(37,10)', '(37,11)', '(12,37)', '(37,12)', '(37,13)', '(14,37)', '(37,14)', '(37,15)', '(16,37)', '(37,16)', '(37,17)', '(18,37)', '(37,18)', '(37,19)', '(20,37)', '(37,20)', '(37,21)', '(22,37)', '(37,22)', '(37,23)', '(24,37)', '(37,24)', '(37,25)', '(26,37)', '(37,26)', '(37,27)', '(28,37)', '(37,28)', '(37,29)', '(30,37)', '(37,30)', '(37,31)', '(32,37)', '(37,32)', '(37,33)', '(34,37)', '(37,34)', '(37,35)', '(36,37)', '(37,36)', '(1,37)', '(3,37)', '(5,37)', '(7,37)', '(9,37)', '(11,37)', '(13,37)', '(15,37)', '(17,37)', '(19,37)', '(21,37)', '(23,37)', '(25,37)', '(27,37)', '(29,37)', '(31,37)', '(33,37)', '(35,37)', '(37,37)', '(0,38)', '(2,38)', '(4,38)', '(6,38)', '(8,38)', '(10,38)', '(12,38)', '(14,38)', '(16,38)', '(18,38)', '(20,38)', '(22,38)', '(24,38)', '(26,38)', '(28,38)', '(30,38)', '(32,38)', '(34,38)', '(36,38)', '(38,0)', '(1,38)', '(38,1)', '(38,2)', '(3,38)', '(38,3)', '(38,4)', '(5,38)', '(38,5)', '(38,6)', '(7,38)', '(38,7)', '(38,8)', '(9,38)', '(38,9)', '(38,10)', '(11,38)', '(38,11)', '(38,12)', '(13,38)', '(38,13)', '(38,14)', '(15,38)', '(38,15)', '(38,16)', '(17,38)', '(38,17)', '(38,18)', '(19,38)', '(38,19)', '(38,20)', '(21,38)', '(38,21)', '(38,22)', '(23,38)', '(38,23)', '(38,24)', '(25,38)', '(38,25)', '(38,26)', '(27,38)', '(38,27)', '(38,28)', '(29,38)', '(38,29)', '(38,30)', '(31,38)', '(38,31)', '(38,32)', '(33,38)', '(38,33)', '(38,34)', '(35,38)', '(38,35)', '(38,36)', '(37,38)', '(38,37)', '(38,38)', '(0,39)', '(39,0)', '(39,1)', '(2,39)', '(39,2)', '(39,3)', '(4,39)', '(39,4)', '(39,5)', '(6,39)', '(39,6)', '(39,7)', '(8,39)', '(39,8)', '(39,9)', '(10,39)', '(39,10)', '(39,11)', '(12,39)', '(39,12)', '(39,13)', '(14,39)', '(39,14)', '(39,15)', '(16,39)', '(39,16)', '(39,17)', '(18,39)', '(39,18)', '(39,19)', '(20,39)', '(39,20)', '(39,21)', '(22,39)', '(39,22)', '(39,23)', '(24,39)', '(39,24)', '(39,25)', '(26,39)', '(39,26)', '(39,27)', '(28,39)', '(39,28)', '(39,29)', '(30,39)', '(39,30)', '(39,31)', '(32,39)', '(39,32)', '(39,33)', '(34,39)', '(39,34)', '(39,35)', '(36,39)', '(39,36)', '(39,37)', '(38,39)', '(39,38)', '(1,39)', '(3,39)', '(5,39)', '(7,39)', '(9,39)', '(11,39)', '(13,39)', '(15,39)', '(17,39)', '(19,39)', '(21,39)', '(23,39)', '(25,39)', '(27,39)', '(29,39)', '(31,39)', '(33,39)', '(35,39)', '(37,39)', '(39,39)', '(0,40)', '(2,40)', '(4,40)', '(6,40)', '(8,40)', '(10,40)', '(12,40)', '(14,40)', '(16,40)', '(18,40)', '(20,40)', '(22,40)', '(24,40)', '(26,40)', '(28,40)', '(30,40)', '(32,40)', '(34,40)', '(36,40)', '(38,40)', '(40,0)', '(1,40)', '(40,1)', '(40,2)', '(3,40)', '(40,3)', '(40,4)', '(5,40)', '(40,5)', '(40,6)', '(7,40)', '(40,7)', '(40,8)', '(9,40)', '(40,9)', '(40,10)', '(11,40)', '(40,11)', '(40,12)', '(13,40)', '(40,13)', '(40,14)', '(15,40)', '(40,15)', '(40,16)', '(17,40)', '(40,17)', '(40,18)', '(19,40)', '(40,19)', '(40,20)', '(21,40)', '(40,21)', '(40,22)', '(23,40)', '(40,23)', '(40,24)', '(25,40)', '(40,25)', '(40,26)', '(27,40)', '(40,27)', '(40,28)', '(29,40)', '(40,29)', '(40,30)', '(31,40)', '(40,31)', '(40,32)', '(33,40)', '(40,33)', '(40,34)', '(35,40)', '(40,35)', '(40,36)', '(37,40)', '(40,37)', '(40,38)', '(39,40)', '(40,39)', '(40,40)', '(0,41)', '(41,0)', '(41,1)', '(2,41)', '(41,2)', '(41,3)', '(4,41)', '(41,4)', '(41,5)', '(6,41)', '(41,6)', '(41,7)', '(8,41)', '(41,8)', '(41,9)', '(10,41)', '(41,10)', '(41,11)', '(12,41)', '(41,12)', '(41,13)', '(14,41)', '(41,14)', '(41,15)', '(16,41)', '(41,16)', '(41,17)', '(18,41)', '(41,18)', '(41,19)', '(20,41)', '(41,20)', '(41,21)', '(22,41)', '(41,22)', '(41,23)', '(24,41)', '(41,24)', '(41,25)', '(26,41)', '(41,26)', '(41,27)', '(28,41)', '(41,28)', '(41,29)', '(30,41)', '(41,30)', '(41,31)', '(32,41)', '(41,32)', '(41,33)', '(34,41)', '(41,34)', '(41,35)', '(36,41)', '(41,36)', '(41,37)', '(38,41)', '(41,38)', '(41,39)', '(40,41)', '(41,40)', '(1,41)', '(3,41)', '(5,41)', '(7,41)', '(9,41)', '(11,41)', '(13,41)', '(15,41)', '(17,41)', '(19,41)', '(21,41)', '(23,41)', '(25,41)', '(27,41)', '(29,41)', '(31,41)', '(33,41)', '(35,41)', '(37,41)', '(39,41)', '(41,41)', '(0,42)', '(2,42)', '(4,42)', '(6,42)', '(8,42)', '(10,42)', '(12,42)', '(14,42)', '(16,42)', '(18,42)', '(20,42)', '(22,42)', '(24,42)', '(26,42)', '(28,42)', '(30,42)', '(32,42)', '(34,42)', '(36,42)', '(38,42)', '(40,42)', '(42,0)', '(1,42)', '(42,1)', '(42,2)', '(3,42)', '(42,3)', '(42,4)', '(5,42)', '(42,5)', '(42,6)', '(7,42)', '(42,7)', '(42,8)', '(9,42)', '(42,9)', '(42,10)', '(11,42)', '(42,11)', '(42,12)', '(13,42)', '(42,13)', '(42,14)', '(15,42)', '(42,15)', '(42,16)', '(17,42)', '(42,17)', '(42,18)', '(19,42)', '(42,19)', '(42,20)', '(21,42)', '(42,21)', '(42,22)', '(23,42)', '(42,23)', '(42,24)', '(25,42)', '(42,25)', '(42,26)', '(27,42)', '(42,27)', '(42,28)', '(29,42)', '(42,29)', '(42,30)', '(31,42)', '(42,31)', '(42,32)', '(33,42)', '(42,33)', '(42,34)', '(35,42)', '(42,35)', '(42,36)', '(37,42)', '(42,37)', '(42,38)', '(39,42)', '(42,39)', '(42,40)', '(41,42)', '(42,41)', '(42,42)', '(0,43)', '(43,0)', '(43,1)', '(2,43)', '(43,2)', '(43,3)', '(4,43)', '(43,4)', '(43,5)', '(6,43)', '(43,6)', '(43,7)', '(8,43)', '(43,8)', '(43,9)', '(10,43)', '(43,10)', '(43,11)', '(12,43)', '(43,12)', '(43,13)', '(14,43)', '(43,14)', '(43,15)', '(16,43)', '(43,16)', '(43,17)', '(18,43)', '(43,18)', '(43,19)', '(20,43)', '(43,20)', '(43,21)', '(22,43)', '(43,22)', '(43,23)', '(24,43)', '(43,24)', '(43,25)', '(26,43)', '(43,26)', '(43,27)', '(28,43)', '(43,28)', '(43,29)', '(30,43)', '(43,30)', '(43,31)', '(32,43)', '(43,32)', '(43,33)', '(34,43)', '(43,34)', '(43,35)', '(36,43)', '(43,36)', '(43,37)', '(38,43)', '(43,38)', '(43,39)', '(40,43)', '(43,40)', '(43,41)', '(42,43)', '(43,42)', '(1,43)', '(3,43)', '(5,43)', '(7,43)', '(9,43)', '(11,43)', '(13,43)', '(15,43)', '(17,43)', '(19,43)', '(21,43)', '(23,43)', '(25,43)', '(27,43)', '(29,43)', '(31,43)', '(33,43)', '(35,43)', '(37,43)', '(39,43)', '(41,43)', '(43,43)', '(0,44)', '(2,44)', '(4,44)', '(6,44)', '(8,44)', '(10,44)', '(12,44)', '(14,44)', '(16,44)', '(18,44)', '(20,44)', '(22,44)', '(24,44)', '(26,44)', '(28,44)', '(30,44)', '(32,44)', '(34,44)', '(36,44)', '(38,44)', '(40,44)', '(42,44)', '(44,0)', '(1,44)', '(44,1)', '(44,2)', '(3,44)', '(44,3)', '(44,4)', '(5,44)', '(44,5)', '(44,6)', '(7,44)', '(44,7)', '(44,8)', '(9,44)', '(44,9)', '(44,10)', '(11,44)', '(44,11)', '(44,12)', '(13,44)', '(44,13)', '(44,14)', '(15,44)', '(44,15)', '(44,16)', '(17,44)', '(44,17)', '(44,18)', '(19,44)', '(44,19)', '(44,20)', '(21,44)', '(44,21)', '(44,22)', '(23,44)', '(44,23)', '(44,24)', '(25,44)', '(44,25)', '(44,26)', '(27,44)', '(44,27)', '(44,28)', '(29,44)', '(44,29)', '(44,30)', '(31,44)', '(44,31)', '(44,32)', '(33,44)', '(44,33)', '(44,34)', '(35,44)', '(44,35)', '(44,36)', '(37,44)', '(44,37)', '(44,38)', '(39,44)', '(44,39)', '(44,40)', '(41,44)', '(44,41)', '(44,42)', '(43,44)', '(44,43)', '(44,44)', '(0,45)', '(45,0)', '(45,1)', '(2,45)', '(45,2)', '(45,3)', '(4,45)', '(45,4)', '(45,5)', '(6,45)', '(45,6)', '(45,7)', '(8,45)', '(45,8)', '(45,9)', '(10,45)', '(45,10)', '(45,11)', '(12,45)', '(45,12)', '(45,13)', '(14,45)', '(45,14)', '(45,15)', '(16,45)', '(45,16)', '(45,17)', '(18,45)', '(45,18)', '(45,19)', '(20,45)', '(45,20)', '(45,21)', '(22,45)', '(45,22)', '(45,23)', '(24,45)', '(45,24)', '(45,25)', '(26,45)', '(45,26)', '(45,27)', '(28,45)', '(45,28)', '(45,29)', '(30,45)', '(45,30)', '(45,31)', '(32,45)', '(45,32)', '(45,33)', '(34,45)', '(45,34)', '(45,35)', '(36,45)', '(45,36)', '(45,37)', '(38,45)', '(45,38)', '(45,39)', '(40,45)', '(45,40)', '(45,41)', '(42,45)', '(45,42)', '(45,43)', '(44,45)', '(45,44)', '(1,45)', '(3,45)', '(5,45)', '(7,45)', '(9,45)', '(11,45)', '(13,45)', '(15,45)', '(17,45)', '(19,45)', '(21,45)', '(23,45)', '(25,45)', '(27,45)', '(29,45)', '(31,45)', '(33,45)', '(35,45)', '(37,45)', '(39,45)', '(41,45)', '(43,45)', '(45,45)', '(0,46)', '(2,46)', '(4,46)', '(6,46)', '(8,46)', '(10,46)', '(12,46)', '(14,46)', '(16,46)', '(18,46)', '(20,46)', '(22,46)', '(24,46)', '(26,46)', '(28,46)', '(30,46)', '(32,46)', '(34,46)', '(36,46)', '(38,46)', '(40,46)', '(42,46)', '(44,46)', '(46,0)', '(1,46)', '(46,1)', '(46,2)', '(3,46)', '(46,3)', '(46,4)', '(5,46)', '(46,5)', '(46,6)', '(7,46)', '(46,7)', '(46,8)', '(9,46)', '(46,9)', '(46,10)', '(11,46)', '(46,11)', '(46,12)', '(13,46)', '(46,13)', '(46,14)', '(15,46)', '(46,15)', '(46,16)', '(17,46)', '(46,17)', '(46,18)', '(19,46)', '(46,19)', '(46,20)', '(21,46)', '(46,21)', '(46,22)', '(23,46)', '(46,23)', '(46,24)', '(25,46)', '(46,25)', '(46,26)', '(27,46)', '(46,27)', '(46,28)', '(29,46)', '(46,29)', '(46,30)', '(31,46)', '(46,31)', '(46,32)', '(33,46)', '(46,33)', '(46,34)', '(35,46)', '(46,35)', '(46,36)', '(37,46)', '(46,37)', '(46,38)', '(39,46)', '(46,39)', '(46,40)', '(41,46)', '(46,41)', '(46,42)', '(43,46)', '(46,43)', '(46,44)', '(45,46)', '(46,45)', '(46,46)', '(0,47)', '(47,0)', '(47,1)', '(2,47)', '(47,2)', '(47,3)', '(4,47)', '(47,4)', '(47,5)', '(6,47)', '(47,6)', '(47,7)', '(8,47)', '(47,8)', '(47,9)', '(10,47)', '(47,10)', '(47,11)', '(12,47)', '(47,12)', '(47,13)', '(14,47)', '(47,14)', '(47,15)', '(16,47)', '(47,16)', '(47,17)', '(18,47)', '(47,18)', '(47,19)', '(20,47)', '(47,20)', '(47,21)', '(22,47)', '(47,22)', '(47,23)', '(24,47)', '(47,24)', '(47,25)', '(26,47)', '(47,26)', '(47,27)', '(28,47)', '(47,28)', '(47,29)', '(30,47)', '(47,30)', '(47,31)', '(32,47)', '(47,32)', '(47,33)', '(34,47)', '(47,34)', '(47,35)', '(36,47)', '(47,36)', '(47,37)', '(38,47)', '(47,38)', '(47,39)', '(40,47)', '(47,40)', '(47,41)', '(42,47)', '(47,42)', '(47,43)', '(44,47)', '(47,44)', '(47,45)', '(46,47)', '(47,46)', '(1,47)', '(3,47)', '(5,47)', '(7,47)', '(9,47)', '(11,47)', '(13,47)', '(15,47)', '(17,47)', '(19,47)', '(21,47)', '(23,47)', '(25,47)', '(27,47)', '(29,47)', '(31,47)', '(33,47)', '(35,47)', '(37,47)', '(39,47)', '(41,47)', '(43,47)', '(45,47)', '(47,47)', '(0,48)', '(2,48)', '(4,48)', '(6,48)', '(8,48)', '(10,48)', '(12,48)', '(14,48)', '(16,48)', '(18,48)', '(20,48)', '(22,48)', '(24,48)', '(26,48)', '(28,48)', '(30,48)', '(32,48)', '(34,48)', '(36,48)', '(38,48)', '(40,48)', '(42,48)', '(44,48)', '(46,48)', '(48,0)', '(1,48)', '(48,1)', '(48,2)', '(3,48)', '(48,3)', '(48,4)', '(5,48)', '(48,5)', '(48,6)', '(7,48)', '(48,7)', '(48,8)', '(9,48)', '(48,9)', '(48,10)', '(11,48)', '(48,11)', '(48,12)', '(13,48)', '(48,13)', '(48,14)', '(15,48)', '(48,15)', '(48,16)', '(17,48)', '(48,17)', '(48,18)', '(19,48)', '(48,19)', '(48,20)', '(21,48)', '(48,21)', '(48,22)', '(23,48)', '(48,23)', '(48,24)', '(25,48)', '(48,25)', '(48,26)', '(27,48)', '(48,27)', '(48,28)', '(29,48)', '(48,29)', '(48,30)', '(31,48)', '(48,31)', '(48,32)', '(33,48)', '(48,33)', '(48,34)', '(35,48)', '(48,35)', '(48,36)', '(37,48)', '(48,37)', '(48,38)', '(39,48)', '(48,39)', '(48,40)', '(41,48)', '(48,41)', '(48,42)', '(43,48)', '(48,43)', '(48,44)', '(45,48)', '(48,45)', '(48,46)', '(47,48)', '(48,47)', '(48,48)', '(0,49)', '(49,0)', '(49,1)', '(2,49)', '(49,2)', '(49,3)', '(4,49)', '(49,4)', '(49,5)', '(6,49)', '(49,6)', '(49,7)', '(8,49)', '(49,8)', '(49,9)', '(10,49)', '(49,10)', '(49,11)', '(12,49)', '(49,12)', '(49,13)', '(14,49)', '(49,14)', '(49,15)', '(16,49)', '(49,16)', '(49,17)', '(18,49)', '(49,18)', '(49,19)', '(20,49)', '(49,20)', '(49,21)', '(22,49)', '(49,22)', '(49,23)', '(24,49)', '(49,24)', '(49,25)', '(26,49)', '(49,26)', '(49,27)', '(28,49)', '(49,28)', '(49,29)', '(30,49)', '(49,30)', '(49,31)', '(32,49)', '(49,32)', '(49,33)', '(34,49)', '(49,34)', '(49,35)', '(36,49)', '(49,36)', '(49,37)', '(38,49)', '(49,38)', '(49,39)', '(40,49)', '(49,40)', '(49,41)', '(42,49)', '(49,42)', '(49,43)', '(44,49)', '(49,44)', '(49,45)', '(46,49)', '(49,46)', '(49,47)', '(48,49)', '(49,48)', '(1,49)', '(3,49)', '(5,49)', '(7,49)', '(9,49)', '(11,49)', '(13,49)', '(15,49)', '(17,49)', '(19,49)', '(21,49)', '(23,49)', '(25,49)', '(27,49)', '(29,49)', '(31,49)', '(33,49)', '(35,49)', '(37,49)', '(39,49)', '(41,49)', '(43,49)', '(45,49)', '(47,49)', '(49,49)']` +list of `VOCAB` tokens, in order - `VOCAB_TOKEN_TO_INDEX: dict[str, int] = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '<-->': 8, ';': 9, '': 10, '(': 11, ',': 12, ')': 13, '=': 14, '||': 15, ':': 16, 'THEN': 17, '-': 18, '': 19, 'TARGET_A': 20, 'TARGET_B': 21, 'TARGET_C': 22, 'TARGET_D': 23, 'TARGET_E': 24, 'TARGET_F': 25, 'TARGET_G': 26, 'TARGET_H': 27, 'TARGET_I': 28, 'TARGET_J': 29, 'TARGET_K': 30, 'TARGET_L': 31, 'TARGET_M': 32, 'TARGET_N': 33, 'TARGET_O': 34, 'TARGET_P': 35, 'TARGET_Q': 36, 'TARGET_R': 37, 'TARGET_S': 38, 'TARGET_T': 39, 'TARGET_U': 40, 'TARGET_V': 41, 'TARGET_W': 42, 'TARGET_X': 43, 'TARGET_Y': 44, 'TARGET_Z': 45, 'TARGET_NORTH': 46, 'TARGET_SOUTH': 47, 'TARGET_EAST': 48, 'TARGET_WEST': 49, 'TARGET_NORTHEAST': 50, 'TARGET_NORTHWEST': 51, 'TARGET_SOUTHEAST': 52, 'TARGET_SOUTHWEST': 53, 'TARGET_CENTER': 54, 'NORTH': 55, 'SOUTH': 56, 'EAST': 57, 'WEST': 58, 'FORWARD': 59, 'BACKWARD': 60, 'LEFT': 61, 'RIGHT': 62, 'STAY': 63, '+0': 64, '+1': 65, '+2': 66, '+3': 67, '+4': 68, '+5': 69, '+6': 70, '+7': 71, '+8': 72, '+9': 73, '+10': 74, '+11': 75, '+12': 76, '+13': 77, '+14': 78, '+15': 79, '+16': 80, '+17': 81, '+18': 82, '+19': 83, '+20': 84, '+21': 85, '+22': 86, '+23': 87, '+24': 88, '+25': 89, '+26': 90, '+27': 91, '+28': 92, '+29': 93, '+30': 94, '+31': 95, '+32': 96, '+33': 97, '+34': 98, '+35': 99, '+36': 100, '+37': 101, '+38': 102, '+39': 103, '+40': 104, '+41': 105, '+42': 106, '+43': 107, '+44': 108, '+45': 109, '+46': 110, '+47': 111, '+48': 112, '+49': 113, '+50': 114, '+51': 115, '+52': 116, '+53': 117, '+54': 118, '+55': 119, '+56': 120, '+57': 121, '+58': 122, '+59': 123, '+60': 124, '+61': 125, '+62': 126, '+63': 127, '+64': 128, '+65': 129, '+66': 130, '+67': 131, '+68': 132, '+69': 133, '+70': 134, '+71': 135, '+72': 136, '+73': 137, '+74': 138, '+75': 139, '+76': 140, '+77': 141, '+78': 142, '+79': 143, '+80': 144, '+81': 145, '+82': 146, '+83': 147, '+84': 148, '+85': 149, '+86': 150, '+87': 151, '+88': 152, '+89': 153, '+90': 154, '+91': 155, '+92': 156, '+93': 157, '+94': 158, '+95': 159, '+96': 160, '+97': 161, '+98': 162, '+99': 163, '+100': 164, '+101': 165, '+102': 166, '+103': 167, '+104': 168, '+105': 169, '+106': 170, '+107': 171, '+108': 172, '+109': 173, '+110': 174, '+111': 175, '+112': 176, '+113': 177, '+114': 178, '+115': 179, '+116': 180, '+117': 181, '+118': 182, '+119': 183, '+120': 184, '+121': 185, '+122': 186, '+123': 187, '+124': 188, '+125': 189, '+126': 190, '+127': 191, '+128': 192, '+129': 193, '+130': 194, '+131': 195, '+132': 196, '+133': 197, '+134': 198, '+135': 199, '+136': 200, '+137': 201, '+138': 202, '+139': 203, '+140': 204, '+141': 205, '+142': 206, '+143': 207, '+144': 208, '+145': 209, '+146': 210, '+147': 211, '+148': 212, '+149': 213, '+150': 214, '+151': 215, '+152': 216, '+153': 217, '+154': 218, '+155': 219, '+156': 220, '+157': 221, '+158': 222, '+159': 223, '+160': 224, '+161': 225, '+162': 226, '+163': 227, '+164': 228, '+165': 229, '+166': 230, '+167': 231, '+168': 232, '+169': 233, '+170': 234, '+171': 235, '+172': 236, '+173': 237, '+174': 238, '+175': 239, '+176': 240, '+177': 241, '+178': 242, '+179': 243, '+180': 244, '+181': 245, '+182': 246, '+183': 247, '+184': 248, '+185': 249, '+186': 250, '+187': 251, '+188': 252, '+189': 253, '+190': 254, '+191': 255, '+192': 256, '+193': 257, '+194': 258, '+195': 259, '+196': 260, '+197': 261, '+198': 262, '+199': 263, '+200': 264, '+201': 265, '+202': 266, '+203': 267, '+204': 268, '+205': 269, '+206': 270, '+207': 271, '+208': 272, '+209': 273, '+210': 274, '+211': 275, '+212': 276, '+213': 277, '+214': 278, '+215': 279, '+216': 280, '+217': 281, '+218': 282, '+219': 283, '+220': 284, '+221': 285, '+222': 286, '+223': 287, '+224': 288, '+225': 289, '+226': 290, '+227': 291, '+228': 292, '+229': 293, '+230': 294, '+231': 295, '+232': 296, '+233': 297, '+234': 298, '+235': 299, '+236': 300, '+237': 301, '+238': 302, '+239': 303, '+240': 304, '+241': 305, '+242': 306, '+243': 307, '+244': 308, '+245': 309, '+246': 310, '+247': 311, '+248': 312, '+249': 313, '+250': 314, '+251': 315, '+252': 316, '+253': 317, '+254': 318, '+255': 319, '0': 320, '1': 321, '2': 322, '3': 323, '4': 324, '5': 325, '6': 326, '7': 327, '8': 328, '9': 329, '10': 330, '11': 331, '12': 332, '13': 333, '14': 334, '15': 335, '16': 336, '17': 337, '18': 338, '19': 339, '20': 340, '21': 341, '22': 342, '23': 343, '24': 344, '25': 345, '26': 346, '27': 347, '28': 348, '29': 349, '30': 350, '31': 351, '32': 352, '33': 353, '34': 354, '35': 355, '36': 356, '37': 357, '38': 358, '39': 359, '40': 360, '41': 361, '42': 362, '43': 363, '44': 364, '45': 365, '46': 366, '47': 367, '48': 368, '49': 369, '50': 370, '51': 371, '52': 372, '53': 373, '54': 374, '55': 375, '56': 376, '57': 377, '58': 378, '59': 379, '60': 380, '61': 381, '62': 382, '63': 383, '64': 384, '65': 385, '66': 386, '67': 387, '68': 388, '69': 389, '70': 390, '71': 391, '72': 392, '73': 393, '74': 394, '75': 395, '76': 396, '77': 397, '78': 398, '79': 399, '80': 400, '81': 401, '82': 402, '83': 403, '84': 404, '85': 405, '86': 406, '87': 407, '88': 408, '89': 409, '90': 410, '91': 411, '92': 412, '93': 413, '94': 414, '95': 415, '96': 416, '97': 417, '98': 418, '99': 419, '100': 420, '101': 421, '102': 422, '103': 423, '104': 424, '105': 425, '106': 426, '107': 427, '108': 428, '109': 429, '110': 430, '111': 431, '112': 432, '113': 433, '114': 434, '115': 435, '116': 436, '117': 437, '118': 438, '119': 439, '120': 440, '121': 441, '122': 442, '123': 443, '124': 444, '125': 445, '126': 446, '127': 447, '-256': 448, '-255': 449, '-254': 450, '-253': 451, '-252': 452, '-251': 453, '-250': 454, '-249': 455, '-248': 456, '-247': 457, '-246': 458, '-245': 459, '-244': 460, '-243': 461, '-242': 462, '-241': 463, '-240': 464, '-239': 465, '-238': 466, '-237': 467, '-236': 468, '-235': 469, '-234': 470, '-233': 471, '-232': 472, '-231': 473, '-230': 474, '-229': 475, '-228': 476, '-227': 477, '-226': 478, '-225': 479, '-224': 480, '-223': 481, '-222': 482, '-221': 483, '-220': 484, '-219': 485, '-218': 486, '-217': 487, '-216': 488, '-215': 489, '-214': 490, '-213': 491, '-212': 492, '-211': 493, '-210': 494, '-209': 495, '-208': 496, '-207': 497, '-206': 498, '-205': 499, '-204': 500, '-203': 501, '-202': 502, '-201': 503, '-200': 504, '-199': 505, '-198': 506, '-197': 507, '-196': 508, '-195': 509, '-194': 510, '-193': 511, '-192': 512, '-191': 513, '-190': 514, '-189': 515, '-188': 516, '-187': 517, '-186': 518, '-185': 519, '-184': 520, '-183': 521, '-182': 522, '-181': 523, '-180': 524, '-179': 525, '-178': 526, '-177': 527, '-176': 528, '-175': 529, '-174': 530, '-173': 531, '-172': 532, '-171': 533, '-170': 534, '-169': 535, '-168': 536, '-167': 537, '-166': 538, '-165': 539, '-164': 540, '-163': 541, '-162': 542, '-161': 543, '-160': 544, '-159': 545, '-158': 546, '-157': 547, '-156': 548, '-155': 549, '-154': 550, '-153': 551, '-152': 552, '-151': 553, '-150': 554, '-149': 555, '-148': 556, '-147': 557, '-146': 558, '-145': 559, '-144': 560, '-143': 561, '-142': 562, '-141': 563, '-140': 564, '-139': 565, '-138': 566, '-137': 567, '-136': 568, '-135': 569, '-134': 570, '-133': 571, '-132': 572, '-131': 573, '-130': 574, '-129': 575, '-128': 576, '-127': 577, '-126': 578, '-125': 579, '-124': 580, '-123': 581, '-122': 582, '-121': 583, '-120': 584, '-119': 585, '-118': 586, '-117': 587, '-116': 588, '-115': 589, '-114': 590, '-113': 591, '-112': 592, '-111': 593, '-110': 594, '-109': 595, '-108': 596, '-107': 597, '-106': 598, '-105': 599, '-104': 600, '-103': 601, '-102': 602, '-101': 603, '-100': 604, '-99': 605, '-98': 606, '-97': 607, '-96': 608, '-95': 609, '-94': 610, '-93': 611, '-92': 612, '-91': 613, '-90': 614, '-89': 615, '-88': 616, '-87': 617, '-86': 618, '-85': 619, '-84': 620, '-83': 621, '-82': 622, '-81': 623, '-80': 624, '-79': 625, '-78': 626, '-77': 627, '-76': 628, '-75': 629, '-74': 630, '-73': 631, '-72': 632, '-71': 633, '-70': 634, '-69': 635, '-68': 636, '-67': 637, '-66': 638, '-65': 639, '-64': 640, '-63': 641, '-62': 642, '-61': 643, '-60': 644, '-59': 645, '-58': 646, '-57': 647, '-56': 648, '-55': 649, '-54': 650, '-53': 651, '-52': 652, '-51': 653, '-50': 654, '-49': 655, '-48': 656, '-47': 657, '-46': 658, '-45': 659, '-44': 660, '-43': 661, '-42': 662, '-41': 663, '-40': 664, '-39': 665, '-38': 666, '-37': 667, '-36': 668, '-35': 669, '-34': 670, '-33': 671, '-32': 672, '-31': 673, '-30': 674, '-29': 675, '-28': 676, '-27': 677, '-26': 678, '-25': 679, '-24': 680, '-23': 681, '-22': 682, '-21': 683, '-20': 684, '-19': 685, '-18': 686, '-17': 687, '-16': 688, '-15': 689, '-14': 690, '-13': 691, '-12': 692, '-11': 693, '-10': 694, '-9': 695, '-8': 696, '-7': 697, '-6': 698, '-5': 699, '-4': 700, '-3': 701, '-2': 702, '-1': 703, 'STEP': 704, 'ADJ_GROUP': 705, '&': 706, '': 707, '': 708, '': 709, '': 710, '': 711, '': 712, '': 713, '': 714, '': 715, '': 716, '': 717, '': 718, '': 719, '': 720, '': 721, '': 722, '': 723, '': 724, '': 725, '': 726, '': 727, '': 728, '': 729, '': 730, '': 731, '': 732, '': 733, '': 734, '': 735, '': 736, '': 737, '': 738, '': 739, '': 740, '': 741, '': 742, '': 743, '': 744, '': 745, '': 746, '': 747, '': 748, '': 749, '': 750, '': 751, '': 752, '': 753, '': 754, '': 755, '': 756, '': 757, '': 758, '': 759, '': 760, '': 761, '': 762, '': 763, '': 764, '': 765, '': 766, '': 767, '': 768, '': 769, '': 770, '': 771, '': 772, '': 773, '': 774, '': 775, '': 776, '': 777, '': 778, '': 779, '': 780, '': 781, '': 782, '': 783, '': 784, '': 785, '': 786, '': 787, '': 788, '': 789, '': 790, '': 791, '': 792, '': 793, '': 794, '': 795, '': 796, '': 797, '': 798, '': 799, '': 800, '': 801, '': 802, '': 803, '': 804, '': 805, '': 806, '': 807, '': 808, '': 809, '': 810, '': 811, '': 812, '': 813, '': 814, '': 815, '': 816, '': 817, '': 818, '': 819, '': 820, '': 821, '': 822, '': 823, '': 824, '': 825, '': 826, '': 827, '': 828, '': 829, '': 830, '': 831, '': 832, '': 833, '': 834, '': 835, '': 836, '': 837, '': 838, '': 839, '': 840, '': 841, '': 842, '': 843, '': 844, '': 845, '': 846, '': 847, '': 848, '': 849, '': 850, '': 851, '': 852, '': 853, '': 854, '': 855, '': 856, '': 857, '': 858, '': 859, '': 860, '': 861, '': 862, '': 863, '': 864, '': 865, '': 866, '': 867, '': 868, '': 869, '': 870, '': 871, '': 872, '': 873, '': 874, '': 875, '': 876, '': 877, '': 878, '': 879, '': 880, '': 881, '': 882, '': 883, '': 884, '': 885, '': 886, '': 887, '': 888, '': 889, '': 890, '': 891, '': 892, '': 893, '': 894, '': 895, '': 896, '': 897, '': 898, '': 899, '': 900, '': 901, '': 902, '': 903, '': 904, '': 905, '': 906, '': 907, '': 908, '': 909, '': 910, '': 911, '': 912, '': 913, '': 914, '': 915, '': 916, '': 917, '': 918, '': 919, '': 920, '': 921, '': 922, '': 923, '': 924, '': 925, '': 926, '': 927, '': 928, '': 929, '': 930, '': 931, '': 932, '': 933, '': 934, '': 935, '': 936, '': 937, '': 938, '': 939, '': 940, '': 941, '': 942, '': 943, '': 944, '': 945, '': 946, '': 947, '': 948, '': 949, '': 950, '': 951, '': 952, '': 953, '': 954, '': 955, '': 956, '': 957, '': 958, '': 959, '': 960, '': 961, '': 962, '': 963, '': 964, '': 965, '': 966, '': 967, '': 968, '': 969, '': 970, '': 971, '': 972, '': 973, '': 974, '': 975, '': 976, '': 977, '': 978, '': 979, '': 980, '': 981, '': 982, '': 983, '': 984, '': 985, '': 986, '': 987, '': 988, '': 989, '': 990, '': 991, '': 992, '': 993, '': 994, '': 995, '': 996, '': 997, '': 998, '': 999, '': 1000, '': 1001, '': 1002, '': 1003, '': 1004, '': 1005, '': 1006, '': 1007, '': 1008, '': 1009, '': 1010, '': 1011, '': 1012, '': 1013, '': 1014, '': 1015, '': 1016, '': 1017, '': 1018, '': 1019, '': 1020, '': 1021, '': 1022, '': 1023, '': 1024, '': 1025, '': 1026, '': 1027, '': 1028, '': 1029, '': 1030, '': 1031, '': 1032, '': 1033, '': 1034, '': 1035, '': 1036, '': 1037, '': 1038, '': 1039, '': 1040, '': 1041, '': 1042, '': 1043, '': 1044, '': 1045, '': 1046, '': 1047, '': 1048, '': 1049, '': 1050, '': 1051, '': 1052, '': 1053, '': 1054, '': 1055, '': 1056, '': 1057, '': 1058, '': 1059, '': 1060, '': 1061, '': 1062, '': 1063, '': 1064, '': 1065, '': 1066, '': 1067, '': 1068, '': 1069, '': 1070, '': 1071, '': 1072, '': 1073, '': 1074, '': 1075, '': 1076, '': 1077, '': 1078, '': 1079, '': 1080, '': 1081, '': 1082, '': 1083, '': 1084, '': 1085, '': 1086, '': 1087, '': 1088, '': 1089, '': 1090, '': 1091, '': 1092, '': 1093, '': 1094, '': 1095, '': 1096, '': 1097, '': 1098, '': 1099, '': 1100, '': 1101, '': 1102, '': 1103, '': 1104, '': 1105, '': 1106, '': 1107, '': 1108, '': 1109, '': 1110, '': 1111, '': 1112, '': 1113, '': 1114, '': 1115, '': 1116, '': 1117, '': 1118, '': 1119, '': 1120, '': 1121, '': 1122, '': 1123, '': 1124, '': 1125, '': 1126, '': 1127, '': 1128, '': 1129, '': 1130, '': 1131, '': 1132, '': 1133, '': 1134, '': 1135, '': 1136, '': 1137, '': 1138, '': 1139, '': 1140, '': 1141, '': 1142, '': 1143, '': 1144, '': 1145, '': 1146, '': 1147, '': 1148, '': 1149, '': 1150, '': 1151, '': 1152, '': 1153, '': 1154, '': 1155, '': 1156, '': 1157, '': 1158, '': 1159, '': 1160, '': 1161, '': 1162, '': 1163, '': 1164, '': 1165, '': 1166, '': 1167, '': 1168, '': 1169, '': 1170, '': 1171, '': 1172, '': 1173, '': 1174, '': 1175, '': 1176, '': 1177, '': 1178, '': 1179, '': 1180, '': 1181, '': 1182, '': 1183, '': 1184, '': 1185, '': 1186, '': 1187, '': 1188, '': 1189, '': 1190, '': 1191, '': 1192, '': 1193, '': 1194, '': 1195, '': 1196, '': 1197, '': 1198, '': 1199, '': 1200, '': 1201, '': 1202, '': 1203, '': 1204, '': 1205, '': 1206, '': 1207, '': 1208, '': 1209, '': 1210, '': 1211, '': 1212, '': 1213, '': 1214, '': 1215, '': 1216, '': 1217, '': 1218, '': 1219, '': 1220, '': 1221, '': 1222, '': 1223, '': 1224, '': 1225, '': 1226, '': 1227, '': 1228, '': 1229, '': 1230, '': 1231, '': 1232, '': 1233, '': 1234, '': 1235, '': 1236, '': 1237, '': 1238, '': 1239, '': 1240, '': 1241, '': 1242, '': 1243, '': 1244, '': 1245, '': 1246, '': 1247, '': 1248, '': 1249, '': 1250, '': 1251, '': 1252, '': 1253, '': 1254, '': 1255, '': 1256, '': 1257, '': 1258, '': 1259, '': 1260, '': 1261, '': 1262, '': 1263, '': 1264, '': 1265, '': 1266, '': 1267, '': 1268, '': 1269, '': 1270, '': 1271, '': 1272, '': 1273, '': 1274, '': 1275, '': 1276, '': 1277, '': 1278, '': 1279, '': 1280, '': 1281, '': 1282, '': 1283, '': 1284, '': 1285, '': 1286, '': 1287, '': 1288, '': 1289, '': 1290, '': 1291, '': 1292, '': 1293, '': 1294, '': 1295, '': 1296, '': 1297, '': 1298, '': 1299, '': 1300, '': 1301, '': 1302, '': 1303, '': 1304, '': 1305, '': 1306, '': 1307, '': 1308, '': 1309, '': 1310, '': 1311, '': 1312, '': 1313, '': 1314, '': 1315, '': 1316, '': 1317, '': 1318, '': 1319, '': 1320, '': 1321, '': 1322, '': 1323, '': 1324, '': 1325, '': 1326, '': 1327, '': 1328, '': 1329, '': 1330, '': 1331, '': 1332, '': 1333, '': 1334, '': 1335, '': 1336, '': 1337, '': 1338, '': 1339, '': 1340, '': 1341, '': 1342, '': 1343, '': 1344, '': 1345, '': 1346, '': 1347, '': 1348, '': 1349, '': 1350, '': 1351, '': 1352, '': 1353, '': 1354, '': 1355, '': 1356, '': 1357, '': 1358, '': 1359, '': 1360, '': 1361, '': 1362, '': 1363, '': 1364, '': 1365, '': 1366, '': 1367, '': 1368, '': 1369, '': 1370, '': 1371, '': 1372, '': 1373, '': 1374, '': 1375, '': 1376, '': 1377, '': 1378, '': 1379, '': 1380, '': 1381, '': 1382, '': 1383, '': 1384, '': 1385, '': 1386, '': 1387, '': 1388, '': 1389, '': 1390, '': 1391, '': 1392, '': 1393, '': 1394, '': 1395, '': 1396, '': 1397, '': 1398, '': 1399, '': 1400, '': 1401, '': 1402, '': 1403, '': 1404, '': 1405, '': 1406, '': 1407, '': 1408, '': 1409, '': 1410, '': 1411, '': 1412, '': 1413, '': 1414, '': 1415, '': 1416, '': 1417, '': 1418, '': 1419, '': 1420, '': 1421, '': 1422, '': 1423, '': 1424, '': 1425, '': 1426, '': 1427, '': 1428, '': 1429, '': 1430, '': 1431, '': 1432, '': 1433, '': 1434, '': 1435, '': 1436, '': 1437, '': 1438, '': 1439, '': 1440, '': 1441, '': 1442, '': 1443, '': 1444, '': 1445, '': 1446, '': 1447, '': 1448, '': 1449, '': 1450, '': 1451, '': 1452, '': 1453, '': 1454, '': 1455, '': 1456, '': 1457, '': 1458, '': 1459, '': 1460, '': 1461, '': 1462, '': 1463, '': 1464, '': 1465, '': 1466, '': 1467, '': 1468, '': 1469, '': 1470, '': 1471, '': 1472, '': 1473, '': 1474, '': 1475, '': 1476, '': 1477, '': 1478, '': 1479, '': 1480, '': 1481, '': 1482, '': 1483, '': 1484, '': 1485, '': 1486, '': 1487, '': 1488, '': 1489, '': 1490, '': 1491, '': 1492, '': 1493, '': 1494, '': 1495, '': 1496, '': 1497, '': 1498, '': 1499, '': 1500, '': 1501, '': 1502, '': 1503, '': 1504, '': 1505, '': 1506, '': 1507, '': 1508, '': 1509, '': 1510, '': 1511, '': 1512, '': 1513, '': 1514, '': 1515, '': 1516, '': 1517, '': 1518, '': 1519, '': 1520, '': 1521, '': 1522, '': 1523, '': 1524, '': 1525, '': 1526, '': 1527, '': 1528, '': 1529, '': 1530, '': 1531, '': 1532, '': 1533, '': 1534, '': 1535, '': 1536, '': 1537, '': 1538, '': 1539, '': 1540, '': 1541, '': 1542, '': 1543, '': 1544, '': 1545, '': 1546, '': 1547, '': 1548, '': 1549, '': 1550, '': 1551, '': 1552, '': 1553, '': 1554, '': 1555, '': 1556, '': 1557, '': 1558, '': 1559, '': 1560, '': 1561, '': 1562, '': 1563, '': 1564, '': 1565, '': 1566, '': 1567, '': 1568, '': 1569, '': 1570, '': 1571, '': 1572, '': 1573, '': 1574, '': 1575, '': 1576, '': 1577, '': 1578, '': 1579, '': 1580, '': 1581, '': 1582, '': 1583, '': 1584, '': 1585, '': 1586, '': 1587, '': 1588, '': 1589, '': 1590, '': 1591, '': 1592, '': 1593, '': 1594, '': 1595, '(0,0)': 1596, '(0,1)': 1597, '(1,0)': 1598, '(1,1)': 1599, '(0,2)': 1600, '(2,0)': 1601, '(1,2)': 1602, '(2,1)': 1603, '(2,2)': 1604, '(0,3)': 1605, '(3,0)': 1606, '(3,1)': 1607, '(2,3)': 1608, '(3,2)': 1609, '(1,3)': 1610, '(3,3)': 1611, '(0,4)': 1612, '(2,4)': 1613, '(4,0)': 1614, '(1,4)': 1615, '(4,1)': 1616, '(4,2)': 1617, '(3,4)': 1618, '(4,3)': 1619, '(4,4)': 1620, '(0,5)': 1621, '(5,0)': 1622, '(5,1)': 1623, '(2,5)': 1624, '(5,2)': 1625, '(5,3)': 1626, '(4,5)': 1627, '(5,4)': 1628, '(1,5)': 1629, '(3,5)': 1630, '(5,5)': 1631, '(0,6)': 1632, '(2,6)': 1633, '(4,6)': 1634, '(6,0)': 1635, '(1,6)': 1636, '(6,1)': 1637, '(6,2)': 1638, '(3,6)': 1639, '(6,3)': 1640, '(6,4)': 1641, '(5,6)': 1642, '(6,5)': 1643, '(6,6)': 1644, '(0,7)': 1645, '(7,0)': 1646, '(7,1)': 1647, '(2,7)': 1648, '(7,2)': 1649, '(7,3)': 1650, '(4,7)': 1651, '(7,4)': 1652, '(7,5)': 1653, '(6,7)': 1654, '(7,6)': 1655, '(1,7)': 1656, '(3,7)': 1657, '(5,7)': 1658, '(7,7)': 1659, '(0,8)': 1660, '(2,8)': 1661, '(4,8)': 1662, '(6,8)': 1663, '(8,0)': 1664, '(1,8)': 1665, '(8,1)': 1666, '(8,2)': 1667, '(3,8)': 1668, '(8,3)': 1669, '(8,4)': 1670, '(5,8)': 1671, '(8,5)': 1672, '(8,6)': 1673, '(7,8)': 1674, '(8,7)': 1675, '(8,8)': 1676, '(0,9)': 1677, '(9,0)': 1678, '(9,1)': 1679, '(2,9)': 1680, '(9,2)': 1681, '(9,3)': 1682, '(4,9)': 1683, '(9,4)': 1684, '(9,5)': 1685, '(6,9)': 1686, '(9,6)': 1687, '(9,7)': 1688, '(8,9)': 1689, '(9,8)': 1690, '(1,9)': 1691, '(3,9)': 1692, '(5,9)': 1693, '(7,9)': 1694, '(9,9)': 1695, '(0,10)': 1696, '(2,10)': 1697, '(4,10)': 1698, '(6,10)': 1699, '(8,10)': 1700, '(10,0)': 1701, '(1,10)': 1702, '(10,1)': 1703, '(10,2)': 1704, '(3,10)': 1705, '(10,3)': 1706, '(10,4)': 1707, '(5,10)': 1708, '(10,5)': 1709, '(10,6)': 1710, '(7,10)': 1711, '(10,7)': 1712, '(10,8)': 1713, '(9,10)': 1714, '(10,9)': 1715, '(10,10)': 1716, '(0,11)': 1717, '(11,0)': 1718, '(11,1)': 1719, '(2,11)': 1720, '(11,2)': 1721, '(11,3)': 1722, '(4,11)': 1723, '(11,4)': 1724, '(11,5)': 1725, '(6,11)': 1726, '(11,6)': 1727, '(11,7)': 1728, '(8,11)': 1729, '(11,8)': 1730, '(11,9)': 1731, '(10,11)': 1732, '(11,10)': 1733, '(1,11)': 1734, '(3,11)': 1735, '(5,11)': 1736, '(7,11)': 1737, '(9,11)': 1738, '(11,11)': 1739, '(0,12)': 1740, '(2,12)': 1741, '(4,12)': 1742, '(6,12)': 1743, '(8,12)': 1744, '(10,12)': 1745, '(12,0)': 1746, '(1,12)': 1747, '(12,1)': 1748, '(12,2)': 1749, '(3,12)': 1750, '(12,3)': 1751, '(12,4)': 1752, '(5,12)': 1753, '(12,5)': 1754, '(12,6)': 1755, '(7,12)': 1756, '(12,7)': 1757, '(12,8)': 1758, '(9,12)': 1759, '(12,9)': 1760, '(12,10)': 1761, '(11,12)': 1762, '(12,11)': 1763, '(12,12)': 1764, '(0,13)': 1765, '(13,0)': 1766, '(13,1)': 1767, '(2,13)': 1768, '(13,2)': 1769, '(13,3)': 1770, '(4,13)': 1771, '(13,4)': 1772, '(13,5)': 1773, '(6,13)': 1774, '(13,6)': 1775, '(13,7)': 1776, '(8,13)': 1777, '(13,8)': 1778, '(13,9)': 1779, '(10,13)': 1780, '(13,10)': 1781, '(13,11)': 1782, '(12,13)': 1783, '(13,12)': 1784, '(1,13)': 1785, '(3,13)': 1786, '(5,13)': 1787, '(7,13)': 1788, '(9,13)': 1789, '(11,13)': 1790, '(13,13)': 1791, '(0,14)': 1792, '(2,14)': 1793, '(4,14)': 1794, '(6,14)': 1795, '(8,14)': 1796, '(10,14)': 1797, '(12,14)': 1798, '(14,0)': 1799, '(1,14)': 1800, '(14,1)': 1801, '(14,2)': 1802, '(3,14)': 1803, '(14,3)': 1804, '(14,4)': 1805, '(5,14)': 1806, '(14,5)': 1807, '(14,6)': 1808, '(7,14)': 1809, '(14,7)': 1810, '(14,8)': 1811, '(9,14)': 1812, '(14,9)': 1813, '(14,10)': 1814, '(11,14)': 1815, '(14,11)': 1816, '(14,12)': 1817, '(13,14)': 1818, '(14,13)': 1819, '(14,14)': 1820, '(0,15)': 1821, '(15,0)': 1822, '(15,1)': 1823, '(2,15)': 1824, '(15,2)': 1825, '(15,3)': 1826, '(4,15)': 1827, '(15,4)': 1828, '(15,5)': 1829, '(6,15)': 1830, '(15,6)': 1831, '(15,7)': 1832, '(8,15)': 1833, '(15,8)': 1834, '(15,9)': 1835, '(10,15)': 1836, '(15,10)': 1837, '(15,11)': 1838, '(12,15)': 1839, '(15,12)': 1840, '(15,13)': 1841, '(14,15)': 1842, '(15,14)': 1843, '(1,15)': 1844, '(3,15)': 1845, '(5,15)': 1846, '(7,15)': 1847, '(9,15)': 1848, '(11,15)': 1849, '(13,15)': 1850, '(15,15)': 1851, '(0,16)': 1852, '(2,16)': 1853, '(4,16)': 1854, '(6,16)': 1855, '(8,16)': 1856, '(10,16)': 1857, '(12,16)': 1858, '(14,16)': 1859, '(16,0)': 1860, '(1,16)': 1861, '(16,1)': 1862, '(16,2)': 1863, '(3,16)': 1864, '(16,3)': 1865, '(16,4)': 1866, '(5,16)': 1867, '(16,5)': 1868, '(16,6)': 1869, '(7,16)': 1870, '(16,7)': 1871, '(16,8)': 1872, '(9,16)': 1873, '(16,9)': 1874, '(16,10)': 1875, '(11,16)': 1876, '(16,11)': 1877, '(16,12)': 1878, '(13,16)': 1879, '(16,13)': 1880, '(16,14)': 1881, '(15,16)': 1882, '(16,15)': 1883, '(16,16)': 1884, '(0,17)': 1885, '(17,0)': 1886, '(17,1)': 1887, '(2,17)': 1888, '(17,2)': 1889, '(17,3)': 1890, '(4,17)': 1891, '(17,4)': 1892, '(17,5)': 1893, '(6,17)': 1894, '(17,6)': 1895, '(17,7)': 1896, '(8,17)': 1897, '(17,8)': 1898, '(17,9)': 1899, '(10,17)': 1900, '(17,10)': 1901, '(17,11)': 1902, '(12,17)': 1903, '(17,12)': 1904, '(17,13)': 1905, '(14,17)': 1906, '(17,14)': 1907, '(17,15)': 1908, '(16,17)': 1909, '(17,16)': 1910, '(1,17)': 1911, '(3,17)': 1912, '(5,17)': 1913, '(7,17)': 1914, '(9,17)': 1915, '(11,17)': 1916, '(13,17)': 1917, '(15,17)': 1918, '(17,17)': 1919, '(0,18)': 1920, '(2,18)': 1921, '(4,18)': 1922, '(6,18)': 1923, '(8,18)': 1924, '(10,18)': 1925, '(12,18)': 1926, '(14,18)': 1927, '(16,18)': 1928, '(18,0)': 1929, '(1,18)': 1930, '(18,1)': 1931, '(18,2)': 1932, '(3,18)': 1933, '(18,3)': 1934, '(18,4)': 1935, '(5,18)': 1936, '(18,5)': 1937, '(18,6)': 1938, '(7,18)': 1939, '(18,7)': 1940, '(18,8)': 1941, '(9,18)': 1942, '(18,9)': 1943, '(18,10)': 1944, '(11,18)': 1945, '(18,11)': 1946, '(18,12)': 1947, '(13,18)': 1948, '(18,13)': 1949, '(18,14)': 1950, '(15,18)': 1951, '(18,15)': 1952, '(18,16)': 1953, '(17,18)': 1954, '(18,17)': 1955, '(18,18)': 1956, '(0,19)': 1957, '(19,0)': 1958, '(19,1)': 1959, '(2,19)': 1960, '(19,2)': 1961, '(19,3)': 1962, '(4,19)': 1963, '(19,4)': 1964, '(19,5)': 1965, '(6,19)': 1966, '(19,6)': 1967, '(19,7)': 1968, '(8,19)': 1969, '(19,8)': 1970, '(19,9)': 1971, '(10,19)': 1972, '(19,10)': 1973, '(19,11)': 1974, '(12,19)': 1975, '(19,12)': 1976, '(19,13)': 1977, '(14,19)': 1978, '(19,14)': 1979, '(19,15)': 1980, '(16,19)': 1981, '(19,16)': 1982, '(19,17)': 1983, '(18,19)': 1984, '(19,18)': 1985, '(1,19)': 1986, '(3,19)': 1987, '(5,19)': 1988, '(7,19)': 1989, '(9,19)': 1990, '(11,19)': 1991, '(13,19)': 1992, '(15,19)': 1993, '(17,19)': 1994, '(19,19)': 1995, '(0,20)': 1996, '(2,20)': 1997, '(4,20)': 1998, '(6,20)': 1999, '(8,20)': 2000, '(10,20)': 2001, '(12,20)': 2002, '(14,20)': 2003, '(16,20)': 2004, '(18,20)': 2005, '(20,0)': 2006, '(1,20)': 2007, '(20,1)': 2008, '(20,2)': 2009, '(3,20)': 2010, '(20,3)': 2011, '(20,4)': 2012, '(5,20)': 2013, '(20,5)': 2014, '(20,6)': 2015, '(7,20)': 2016, '(20,7)': 2017, '(20,8)': 2018, '(9,20)': 2019, '(20,9)': 2020, '(20,10)': 2021, '(11,20)': 2022, '(20,11)': 2023, '(20,12)': 2024, '(13,20)': 2025, '(20,13)': 2026, '(20,14)': 2027, '(15,20)': 2028, '(20,15)': 2029, '(20,16)': 2030, '(17,20)': 2031, '(20,17)': 2032, '(20,18)': 2033, '(19,20)': 2034, '(20,19)': 2035, '(20,20)': 2036, '(0,21)': 2037, '(21,0)': 2038, '(21,1)': 2039, '(2,21)': 2040, '(21,2)': 2041, '(21,3)': 2042, '(4,21)': 2043, '(21,4)': 2044, '(21,5)': 2045, '(6,21)': 2046, '(21,6)': 2047, '(21,7)': 2048, '(8,21)': 2049, '(21,8)': 2050, '(21,9)': 2051, '(10,21)': 2052, '(21,10)': 2053, '(21,11)': 2054, '(12,21)': 2055, '(21,12)': 2056, '(21,13)': 2057, '(14,21)': 2058, '(21,14)': 2059, '(21,15)': 2060, '(16,21)': 2061, '(21,16)': 2062, '(21,17)': 2063, '(18,21)': 2064, '(21,18)': 2065, '(21,19)': 2066, '(20,21)': 2067, '(21,20)': 2068, '(1,21)': 2069, '(3,21)': 2070, '(5,21)': 2071, '(7,21)': 2072, '(9,21)': 2073, '(11,21)': 2074, '(13,21)': 2075, '(15,21)': 2076, '(17,21)': 2077, '(19,21)': 2078, '(21,21)': 2079, '(0,22)': 2080, '(2,22)': 2081, '(4,22)': 2082, '(6,22)': 2083, '(8,22)': 2084, '(10,22)': 2085, '(12,22)': 2086, '(14,22)': 2087, '(16,22)': 2088, '(18,22)': 2089, '(20,22)': 2090, '(22,0)': 2091, '(1,22)': 2092, '(22,1)': 2093, '(22,2)': 2094, '(3,22)': 2095, '(22,3)': 2096, '(22,4)': 2097, '(5,22)': 2098, '(22,5)': 2099, '(22,6)': 2100, '(7,22)': 2101, '(22,7)': 2102, '(22,8)': 2103, '(9,22)': 2104, '(22,9)': 2105, '(22,10)': 2106, '(11,22)': 2107, '(22,11)': 2108, '(22,12)': 2109, '(13,22)': 2110, '(22,13)': 2111, '(22,14)': 2112, '(15,22)': 2113, '(22,15)': 2114, '(22,16)': 2115, '(17,22)': 2116, '(22,17)': 2117, '(22,18)': 2118, '(19,22)': 2119, '(22,19)': 2120, '(22,20)': 2121, '(21,22)': 2122, '(22,21)': 2123, '(22,22)': 2124, '(0,23)': 2125, '(23,0)': 2126, '(23,1)': 2127, '(2,23)': 2128, '(23,2)': 2129, '(23,3)': 2130, '(4,23)': 2131, '(23,4)': 2132, '(23,5)': 2133, '(6,23)': 2134, '(23,6)': 2135, '(23,7)': 2136, '(8,23)': 2137, '(23,8)': 2138, '(23,9)': 2139, '(10,23)': 2140, '(23,10)': 2141, '(23,11)': 2142, '(12,23)': 2143, '(23,12)': 2144, '(23,13)': 2145, '(14,23)': 2146, '(23,14)': 2147, '(23,15)': 2148, '(16,23)': 2149, '(23,16)': 2150, '(23,17)': 2151, '(18,23)': 2152, '(23,18)': 2153, '(23,19)': 2154, '(20,23)': 2155, '(23,20)': 2156, '(23,21)': 2157, '(22,23)': 2158, '(23,22)': 2159, '(1,23)': 2160, '(3,23)': 2161, '(5,23)': 2162, '(7,23)': 2163, '(9,23)': 2164, '(11,23)': 2165, '(13,23)': 2166, '(15,23)': 2167, '(17,23)': 2168, '(19,23)': 2169, '(21,23)': 2170, '(23,23)': 2171, '(0,24)': 2172, '(2,24)': 2173, '(4,24)': 2174, '(6,24)': 2175, '(8,24)': 2176, '(10,24)': 2177, '(12,24)': 2178, '(14,24)': 2179, '(16,24)': 2180, '(18,24)': 2181, '(20,24)': 2182, '(22,24)': 2183, '(24,0)': 2184, '(1,24)': 2185, '(24,1)': 2186, '(24,2)': 2187, '(3,24)': 2188, '(24,3)': 2189, '(24,4)': 2190, '(5,24)': 2191, '(24,5)': 2192, '(24,6)': 2193, '(7,24)': 2194, '(24,7)': 2195, '(24,8)': 2196, '(9,24)': 2197, '(24,9)': 2198, '(24,10)': 2199, '(11,24)': 2200, '(24,11)': 2201, '(24,12)': 2202, '(13,24)': 2203, '(24,13)': 2204, '(24,14)': 2205, '(15,24)': 2206, '(24,15)': 2207, '(24,16)': 2208, '(17,24)': 2209, '(24,17)': 2210, '(24,18)': 2211, '(19,24)': 2212, '(24,19)': 2213, '(24,20)': 2214, '(21,24)': 2215, '(24,21)': 2216, '(24,22)': 2217, '(23,24)': 2218, '(24,23)': 2219, '(24,24)': 2220, '(0,25)': 2221, '(25,0)': 2222, '(25,1)': 2223, '(2,25)': 2224, '(25,2)': 2225, '(25,3)': 2226, '(4,25)': 2227, '(25,4)': 2228, '(25,5)': 2229, '(6,25)': 2230, '(25,6)': 2231, '(25,7)': 2232, '(8,25)': 2233, '(25,8)': 2234, '(25,9)': 2235, '(10,25)': 2236, '(25,10)': 2237, '(25,11)': 2238, '(12,25)': 2239, '(25,12)': 2240, '(25,13)': 2241, '(14,25)': 2242, '(25,14)': 2243, '(25,15)': 2244, '(16,25)': 2245, '(25,16)': 2246, '(25,17)': 2247, '(18,25)': 2248, '(25,18)': 2249, '(25,19)': 2250, '(20,25)': 2251, '(25,20)': 2252, '(25,21)': 2253, '(22,25)': 2254, '(25,22)': 2255, '(25,23)': 2256, '(24,25)': 2257, '(25,24)': 2258, '(1,25)': 2259, '(3,25)': 2260, '(5,25)': 2261, '(7,25)': 2262, '(9,25)': 2263, '(11,25)': 2264, '(13,25)': 2265, '(15,25)': 2266, '(17,25)': 2267, '(19,25)': 2268, '(21,25)': 2269, '(23,25)': 2270, '(25,25)': 2271, '(0,26)': 2272, '(2,26)': 2273, '(4,26)': 2274, '(6,26)': 2275, '(8,26)': 2276, '(10,26)': 2277, '(12,26)': 2278, '(14,26)': 2279, '(16,26)': 2280, '(18,26)': 2281, '(20,26)': 2282, '(22,26)': 2283, '(24,26)': 2284, '(26,0)': 2285, '(1,26)': 2286, '(26,1)': 2287, '(26,2)': 2288, '(3,26)': 2289, '(26,3)': 2290, '(26,4)': 2291, '(5,26)': 2292, '(26,5)': 2293, '(26,6)': 2294, '(7,26)': 2295, '(26,7)': 2296, '(26,8)': 2297, '(9,26)': 2298, '(26,9)': 2299, '(26,10)': 2300, '(11,26)': 2301, '(26,11)': 2302, '(26,12)': 2303, '(13,26)': 2304, '(26,13)': 2305, '(26,14)': 2306, '(15,26)': 2307, '(26,15)': 2308, '(26,16)': 2309, '(17,26)': 2310, '(26,17)': 2311, '(26,18)': 2312, '(19,26)': 2313, '(26,19)': 2314, '(26,20)': 2315, '(21,26)': 2316, '(26,21)': 2317, '(26,22)': 2318, '(23,26)': 2319, '(26,23)': 2320, '(26,24)': 2321, '(25,26)': 2322, '(26,25)': 2323, '(26,26)': 2324, '(0,27)': 2325, '(27,0)': 2326, '(27,1)': 2327, '(2,27)': 2328, '(27,2)': 2329, '(27,3)': 2330, '(4,27)': 2331, '(27,4)': 2332, '(27,5)': 2333, '(6,27)': 2334, '(27,6)': 2335, '(27,7)': 2336, '(8,27)': 2337, '(27,8)': 2338, '(27,9)': 2339, '(10,27)': 2340, '(27,10)': 2341, '(27,11)': 2342, '(12,27)': 2343, '(27,12)': 2344, '(27,13)': 2345, '(14,27)': 2346, '(27,14)': 2347, '(27,15)': 2348, '(16,27)': 2349, '(27,16)': 2350, '(27,17)': 2351, '(18,27)': 2352, '(27,18)': 2353, '(27,19)': 2354, '(20,27)': 2355, '(27,20)': 2356, '(27,21)': 2357, '(22,27)': 2358, '(27,22)': 2359, '(27,23)': 2360, '(24,27)': 2361, '(27,24)': 2362, '(27,25)': 2363, '(26,27)': 2364, '(27,26)': 2365, '(1,27)': 2366, '(3,27)': 2367, '(5,27)': 2368, '(7,27)': 2369, '(9,27)': 2370, '(11,27)': 2371, '(13,27)': 2372, '(15,27)': 2373, '(17,27)': 2374, '(19,27)': 2375, '(21,27)': 2376, '(23,27)': 2377, '(25,27)': 2378, '(27,27)': 2379, '(0,28)': 2380, '(2,28)': 2381, '(4,28)': 2382, '(6,28)': 2383, '(8,28)': 2384, '(10,28)': 2385, '(12,28)': 2386, '(14,28)': 2387, '(16,28)': 2388, '(18,28)': 2389, '(20,28)': 2390, '(22,28)': 2391, '(24,28)': 2392, '(26,28)': 2393, '(28,0)': 2394, '(1,28)': 2395, '(28,1)': 2396, '(28,2)': 2397, '(3,28)': 2398, '(28,3)': 2399, '(28,4)': 2400, '(5,28)': 2401, '(28,5)': 2402, '(28,6)': 2403, '(7,28)': 2404, '(28,7)': 2405, '(28,8)': 2406, '(9,28)': 2407, '(28,9)': 2408, '(28,10)': 2409, '(11,28)': 2410, '(28,11)': 2411, '(28,12)': 2412, '(13,28)': 2413, '(28,13)': 2414, '(28,14)': 2415, '(15,28)': 2416, '(28,15)': 2417, '(28,16)': 2418, '(17,28)': 2419, '(28,17)': 2420, '(28,18)': 2421, '(19,28)': 2422, '(28,19)': 2423, '(28,20)': 2424, '(21,28)': 2425, '(28,21)': 2426, '(28,22)': 2427, '(23,28)': 2428, '(28,23)': 2429, '(28,24)': 2430, '(25,28)': 2431, '(28,25)': 2432, '(28,26)': 2433, '(27,28)': 2434, '(28,27)': 2435, '(28,28)': 2436, '(0,29)': 2437, '(29,0)': 2438, '(29,1)': 2439, '(2,29)': 2440, '(29,2)': 2441, '(29,3)': 2442, '(4,29)': 2443, '(29,4)': 2444, '(29,5)': 2445, '(6,29)': 2446, '(29,6)': 2447, '(29,7)': 2448, '(8,29)': 2449, '(29,8)': 2450, '(29,9)': 2451, '(10,29)': 2452, '(29,10)': 2453, '(29,11)': 2454, '(12,29)': 2455, '(29,12)': 2456, '(29,13)': 2457, '(14,29)': 2458, '(29,14)': 2459, '(29,15)': 2460, '(16,29)': 2461, '(29,16)': 2462, '(29,17)': 2463, '(18,29)': 2464, '(29,18)': 2465, '(29,19)': 2466, '(20,29)': 2467, '(29,20)': 2468, '(29,21)': 2469, '(22,29)': 2470, '(29,22)': 2471, '(29,23)': 2472, '(24,29)': 2473, '(29,24)': 2474, '(29,25)': 2475, '(26,29)': 2476, '(29,26)': 2477, '(29,27)': 2478, '(28,29)': 2479, '(29,28)': 2480, '(1,29)': 2481, '(3,29)': 2482, '(5,29)': 2483, '(7,29)': 2484, '(9,29)': 2485, '(11,29)': 2486, '(13,29)': 2487, '(15,29)': 2488, '(17,29)': 2489, '(19,29)': 2490, '(21,29)': 2491, '(23,29)': 2492, '(25,29)': 2493, '(27,29)': 2494, '(29,29)': 2495, '(0,30)': 2496, '(2,30)': 2497, '(4,30)': 2498, '(6,30)': 2499, '(8,30)': 2500, '(10,30)': 2501, '(12,30)': 2502, '(14,30)': 2503, '(16,30)': 2504, '(18,30)': 2505, '(20,30)': 2506, '(22,30)': 2507, '(24,30)': 2508, '(26,30)': 2509, '(28,30)': 2510, '(30,0)': 2511, '(1,30)': 2512, '(30,1)': 2513, '(30,2)': 2514, '(3,30)': 2515, '(30,3)': 2516, '(30,4)': 2517, '(5,30)': 2518, '(30,5)': 2519, '(30,6)': 2520, '(7,30)': 2521, '(30,7)': 2522, '(30,8)': 2523, '(9,30)': 2524, '(30,9)': 2525, '(30,10)': 2526, '(11,30)': 2527, '(30,11)': 2528, '(30,12)': 2529, '(13,30)': 2530, '(30,13)': 2531, '(30,14)': 2532, '(15,30)': 2533, '(30,15)': 2534, '(30,16)': 2535, '(17,30)': 2536, '(30,17)': 2537, '(30,18)': 2538, '(19,30)': 2539, '(30,19)': 2540, '(30,20)': 2541, '(21,30)': 2542, '(30,21)': 2543, '(30,22)': 2544, '(23,30)': 2545, '(30,23)': 2546, '(30,24)': 2547, '(25,30)': 2548, '(30,25)': 2549, '(30,26)': 2550, '(27,30)': 2551, '(30,27)': 2552, '(30,28)': 2553, '(29,30)': 2554, '(30,29)': 2555, '(30,30)': 2556, '(0,31)': 2557, '(31,0)': 2558, '(31,1)': 2559, '(2,31)': 2560, '(31,2)': 2561, '(31,3)': 2562, '(4,31)': 2563, '(31,4)': 2564, '(31,5)': 2565, '(6,31)': 2566, '(31,6)': 2567, '(31,7)': 2568, '(8,31)': 2569, '(31,8)': 2570, '(31,9)': 2571, '(10,31)': 2572, '(31,10)': 2573, '(31,11)': 2574, '(12,31)': 2575, '(31,12)': 2576, '(31,13)': 2577, '(14,31)': 2578, '(31,14)': 2579, '(31,15)': 2580, '(16,31)': 2581, '(31,16)': 2582, '(31,17)': 2583, '(18,31)': 2584, '(31,18)': 2585, '(31,19)': 2586, '(20,31)': 2587, '(31,20)': 2588, '(31,21)': 2589, '(22,31)': 2590, '(31,22)': 2591, '(31,23)': 2592, '(24,31)': 2593, '(31,24)': 2594, '(31,25)': 2595, '(26,31)': 2596, '(31,26)': 2597, '(31,27)': 2598, '(28,31)': 2599, '(31,28)': 2600, '(31,29)': 2601, '(30,31)': 2602, '(31,30)': 2603, '(1,31)': 2604, '(3,31)': 2605, '(5,31)': 2606, '(7,31)': 2607, '(9,31)': 2608, '(11,31)': 2609, '(13,31)': 2610, '(15,31)': 2611, '(17,31)': 2612, '(19,31)': 2613, '(21,31)': 2614, '(23,31)': 2615, '(25,31)': 2616, '(27,31)': 2617, '(29,31)': 2618, '(31,31)': 2619, '(0,32)': 2620, '(2,32)': 2621, '(4,32)': 2622, '(6,32)': 2623, '(8,32)': 2624, '(10,32)': 2625, '(12,32)': 2626, '(14,32)': 2627, '(16,32)': 2628, '(18,32)': 2629, '(20,32)': 2630, '(22,32)': 2631, '(24,32)': 2632, '(26,32)': 2633, '(28,32)': 2634, '(30,32)': 2635, '(32,0)': 2636, '(1,32)': 2637, '(32,1)': 2638, '(32,2)': 2639, '(3,32)': 2640, '(32,3)': 2641, '(32,4)': 2642, '(5,32)': 2643, '(32,5)': 2644, '(32,6)': 2645, '(7,32)': 2646, '(32,7)': 2647, '(32,8)': 2648, '(9,32)': 2649, '(32,9)': 2650, '(32,10)': 2651, '(11,32)': 2652, '(32,11)': 2653, '(32,12)': 2654, '(13,32)': 2655, '(32,13)': 2656, '(32,14)': 2657, '(15,32)': 2658, '(32,15)': 2659, '(32,16)': 2660, '(17,32)': 2661, '(32,17)': 2662, '(32,18)': 2663, '(19,32)': 2664, '(32,19)': 2665, '(32,20)': 2666, '(21,32)': 2667, '(32,21)': 2668, '(32,22)': 2669, '(23,32)': 2670, '(32,23)': 2671, '(32,24)': 2672, '(25,32)': 2673, '(32,25)': 2674, '(32,26)': 2675, '(27,32)': 2676, '(32,27)': 2677, '(32,28)': 2678, '(29,32)': 2679, '(32,29)': 2680, '(32,30)': 2681, '(31,32)': 2682, '(32,31)': 2683, '(32,32)': 2684, '(0,33)': 2685, '(33,0)': 2686, '(33,1)': 2687, '(2,33)': 2688, '(33,2)': 2689, '(33,3)': 2690, '(4,33)': 2691, '(33,4)': 2692, '(33,5)': 2693, '(6,33)': 2694, '(33,6)': 2695, '(33,7)': 2696, '(8,33)': 2697, '(33,8)': 2698, '(33,9)': 2699, '(10,33)': 2700, '(33,10)': 2701, '(33,11)': 2702, '(12,33)': 2703, '(33,12)': 2704, '(33,13)': 2705, '(14,33)': 2706, '(33,14)': 2707, '(33,15)': 2708, '(16,33)': 2709, '(33,16)': 2710, '(33,17)': 2711, '(18,33)': 2712, '(33,18)': 2713, '(33,19)': 2714, '(20,33)': 2715, '(33,20)': 2716, '(33,21)': 2717, '(22,33)': 2718, '(33,22)': 2719, '(33,23)': 2720, '(24,33)': 2721, '(33,24)': 2722, '(33,25)': 2723, '(26,33)': 2724, '(33,26)': 2725, '(33,27)': 2726, '(28,33)': 2727, '(33,28)': 2728, '(33,29)': 2729, '(30,33)': 2730, '(33,30)': 2731, '(33,31)': 2732, '(32,33)': 2733, '(33,32)': 2734, '(1,33)': 2735, '(3,33)': 2736, '(5,33)': 2737, '(7,33)': 2738, '(9,33)': 2739, '(11,33)': 2740, '(13,33)': 2741, '(15,33)': 2742, '(17,33)': 2743, '(19,33)': 2744, '(21,33)': 2745, '(23,33)': 2746, '(25,33)': 2747, '(27,33)': 2748, '(29,33)': 2749, '(31,33)': 2750, '(33,33)': 2751, '(0,34)': 2752, '(2,34)': 2753, '(4,34)': 2754, '(6,34)': 2755, '(8,34)': 2756, '(10,34)': 2757, '(12,34)': 2758, '(14,34)': 2759, '(16,34)': 2760, '(18,34)': 2761, '(20,34)': 2762, '(22,34)': 2763, '(24,34)': 2764, '(26,34)': 2765, '(28,34)': 2766, '(30,34)': 2767, '(32,34)': 2768, '(34,0)': 2769, '(1,34)': 2770, '(34,1)': 2771, '(34,2)': 2772, '(3,34)': 2773, '(34,3)': 2774, '(34,4)': 2775, '(5,34)': 2776, '(34,5)': 2777, '(34,6)': 2778, '(7,34)': 2779, '(34,7)': 2780, '(34,8)': 2781, '(9,34)': 2782, '(34,9)': 2783, '(34,10)': 2784, '(11,34)': 2785, '(34,11)': 2786, '(34,12)': 2787, '(13,34)': 2788, '(34,13)': 2789, '(34,14)': 2790, '(15,34)': 2791, '(34,15)': 2792, '(34,16)': 2793, '(17,34)': 2794, '(34,17)': 2795, '(34,18)': 2796, '(19,34)': 2797, '(34,19)': 2798, '(34,20)': 2799, '(21,34)': 2800, '(34,21)': 2801, '(34,22)': 2802, '(23,34)': 2803, '(34,23)': 2804, '(34,24)': 2805, '(25,34)': 2806, '(34,25)': 2807, '(34,26)': 2808, '(27,34)': 2809, '(34,27)': 2810, '(34,28)': 2811, '(29,34)': 2812, '(34,29)': 2813, '(34,30)': 2814, '(31,34)': 2815, '(34,31)': 2816, '(34,32)': 2817, '(33,34)': 2818, '(34,33)': 2819, '(34,34)': 2820, '(0,35)': 2821, '(35,0)': 2822, '(35,1)': 2823, '(2,35)': 2824, '(35,2)': 2825, '(35,3)': 2826, '(4,35)': 2827, '(35,4)': 2828, '(35,5)': 2829, '(6,35)': 2830, '(35,6)': 2831, '(35,7)': 2832, '(8,35)': 2833, '(35,8)': 2834, '(35,9)': 2835, '(10,35)': 2836, '(35,10)': 2837, '(35,11)': 2838, '(12,35)': 2839, '(35,12)': 2840, '(35,13)': 2841, '(14,35)': 2842, '(35,14)': 2843, '(35,15)': 2844, '(16,35)': 2845, '(35,16)': 2846, '(35,17)': 2847, '(18,35)': 2848, '(35,18)': 2849, '(35,19)': 2850, '(20,35)': 2851, '(35,20)': 2852, '(35,21)': 2853, '(22,35)': 2854, '(35,22)': 2855, '(35,23)': 2856, '(24,35)': 2857, '(35,24)': 2858, '(35,25)': 2859, '(26,35)': 2860, '(35,26)': 2861, '(35,27)': 2862, '(28,35)': 2863, '(35,28)': 2864, '(35,29)': 2865, '(30,35)': 2866, '(35,30)': 2867, '(35,31)': 2868, '(32,35)': 2869, '(35,32)': 2870, '(35,33)': 2871, '(34,35)': 2872, '(35,34)': 2873, '(1,35)': 2874, '(3,35)': 2875, '(5,35)': 2876, '(7,35)': 2877, '(9,35)': 2878, '(11,35)': 2879, '(13,35)': 2880, '(15,35)': 2881, '(17,35)': 2882, '(19,35)': 2883, '(21,35)': 2884, '(23,35)': 2885, '(25,35)': 2886, '(27,35)': 2887, '(29,35)': 2888, '(31,35)': 2889, '(33,35)': 2890, '(35,35)': 2891, '(0,36)': 2892, '(2,36)': 2893, '(4,36)': 2894, '(6,36)': 2895, '(8,36)': 2896, '(10,36)': 2897, '(12,36)': 2898, '(14,36)': 2899, '(16,36)': 2900, '(18,36)': 2901, '(20,36)': 2902, '(22,36)': 2903, '(24,36)': 2904, '(26,36)': 2905, '(28,36)': 2906, '(30,36)': 2907, '(32,36)': 2908, '(34,36)': 2909, '(36,0)': 2910, '(1,36)': 2911, '(36,1)': 2912, '(36,2)': 2913, '(3,36)': 2914, '(36,3)': 2915, '(36,4)': 2916, '(5,36)': 2917, '(36,5)': 2918, '(36,6)': 2919, '(7,36)': 2920, '(36,7)': 2921, '(36,8)': 2922, '(9,36)': 2923, '(36,9)': 2924, '(36,10)': 2925, '(11,36)': 2926, '(36,11)': 2927, '(36,12)': 2928, '(13,36)': 2929, '(36,13)': 2930, '(36,14)': 2931, '(15,36)': 2932, '(36,15)': 2933, '(36,16)': 2934, '(17,36)': 2935, '(36,17)': 2936, '(36,18)': 2937, '(19,36)': 2938, '(36,19)': 2939, '(36,20)': 2940, '(21,36)': 2941, '(36,21)': 2942, '(36,22)': 2943, '(23,36)': 2944, '(36,23)': 2945, '(36,24)': 2946, '(25,36)': 2947, '(36,25)': 2948, '(36,26)': 2949, '(27,36)': 2950, '(36,27)': 2951, '(36,28)': 2952, '(29,36)': 2953, '(36,29)': 2954, '(36,30)': 2955, '(31,36)': 2956, '(36,31)': 2957, '(36,32)': 2958, '(33,36)': 2959, '(36,33)': 2960, '(36,34)': 2961, '(35,36)': 2962, '(36,35)': 2963, '(36,36)': 2964, '(0,37)': 2965, '(37,0)': 2966, '(37,1)': 2967, '(2,37)': 2968, '(37,2)': 2969, '(37,3)': 2970, '(4,37)': 2971, '(37,4)': 2972, '(37,5)': 2973, '(6,37)': 2974, '(37,6)': 2975, '(37,7)': 2976, '(8,37)': 2977, '(37,8)': 2978, '(37,9)': 2979, '(10,37)': 2980, '(37,10)': 2981, '(37,11)': 2982, '(12,37)': 2983, '(37,12)': 2984, '(37,13)': 2985, '(14,37)': 2986, '(37,14)': 2987, '(37,15)': 2988, '(16,37)': 2989, '(37,16)': 2990, '(37,17)': 2991, '(18,37)': 2992, '(37,18)': 2993, '(37,19)': 2994, '(20,37)': 2995, '(37,20)': 2996, '(37,21)': 2997, '(22,37)': 2998, '(37,22)': 2999, '(37,23)': 3000, '(24,37)': 3001, '(37,24)': 3002, '(37,25)': 3003, '(26,37)': 3004, '(37,26)': 3005, '(37,27)': 3006, '(28,37)': 3007, '(37,28)': 3008, '(37,29)': 3009, '(30,37)': 3010, '(37,30)': 3011, '(37,31)': 3012, '(32,37)': 3013, '(37,32)': 3014, '(37,33)': 3015, '(34,37)': 3016, '(37,34)': 3017, '(37,35)': 3018, '(36,37)': 3019, '(37,36)': 3020, '(1,37)': 3021, '(3,37)': 3022, '(5,37)': 3023, '(7,37)': 3024, '(9,37)': 3025, '(11,37)': 3026, '(13,37)': 3027, '(15,37)': 3028, '(17,37)': 3029, '(19,37)': 3030, '(21,37)': 3031, '(23,37)': 3032, '(25,37)': 3033, '(27,37)': 3034, '(29,37)': 3035, '(31,37)': 3036, '(33,37)': 3037, '(35,37)': 3038, '(37,37)': 3039, '(0,38)': 3040, '(2,38)': 3041, '(4,38)': 3042, '(6,38)': 3043, '(8,38)': 3044, '(10,38)': 3045, '(12,38)': 3046, '(14,38)': 3047, '(16,38)': 3048, '(18,38)': 3049, '(20,38)': 3050, '(22,38)': 3051, '(24,38)': 3052, '(26,38)': 3053, '(28,38)': 3054, '(30,38)': 3055, '(32,38)': 3056, '(34,38)': 3057, '(36,38)': 3058, '(38,0)': 3059, '(1,38)': 3060, '(38,1)': 3061, '(38,2)': 3062, '(3,38)': 3063, '(38,3)': 3064, '(38,4)': 3065, '(5,38)': 3066, '(38,5)': 3067, '(38,6)': 3068, '(7,38)': 3069, '(38,7)': 3070, '(38,8)': 3071, '(9,38)': 3072, '(38,9)': 3073, '(38,10)': 3074, '(11,38)': 3075, '(38,11)': 3076, '(38,12)': 3077, '(13,38)': 3078, '(38,13)': 3079, '(38,14)': 3080, '(15,38)': 3081, '(38,15)': 3082, '(38,16)': 3083, '(17,38)': 3084, '(38,17)': 3085, '(38,18)': 3086, '(19,38)': 3087, '(38,19)': 3088, '(38,20)': 3089, '(21,38)': 3090, '(38,21)': 3091, '(38,22)': 3092, '(23,38)': 3093, '(38,23)': 3094, '(38,24)': 3095, '(25,38)': 3096, '(38,25)': 3097, '(38,26)': 3098, '(27,38)': 3099, '(38,27)': 3100, '(38,28)': 3101, '(29,38)': 3102, '(38,29)': 3103, '(38,30)': 3104, '(31,38)': 3105, '(38,31)': 3106, '(38,32)': 3107, '(33,38)': 3108, '(38,33)': 3109, '(38,34)': 3110, '(35,38)': 3111, '(38,35)': 3112, '(38,36)': 3113, '(37,38)': 3114, '(38,37)': 3115, '(38,38)': 3116, '(0,39)': 3117, '(39,0)': 3118, '(39,1)': 3119, '(2,39)': 3120, '(39,2)': 3121, '(39,3)': 3122, '(4,39)': 3123, '(39,4)': 3124, '(39,5)': 3125, '(6,39)': 3126, '(39,6)': 3127, '(39,7)': 3128, '(8,39)': 3129, '(39,8)': 3130, '(39,9)': 3131, '(10,39)': 3132, '(39,10)': 3133, '(39,11)': 3134, '(12,39)': 3135, '(39,12)': 3136, '(39,13)': 3137, '(14,39)': 3138, '(39,14)': 3139, '(39,15)': 3140, '(16,39)': 3141, '(39,16)': 3142, '(39,17)': 3143, '(18,39)': 3144, '(39,18)': 3145, '(39,19)': 3146, '(20,39)': 3147, '(39,20)': 3148, '(39,21)': 3149, '(22,39)': 3150, '(39,22)': 3151, '(39,23)': 3152, '(24,39)': 3153, '(39,24)': 3154, '(39,25)': 3155, '(26,39)': 3156, '(39,26)': 3157, '(39,27)': 3158, '(28,39)': 3159, '(39,28)': 3160, '(39,29)': 3161, '(30,39)': 3162, '(39,30)': 3163, '(39,31)': 3164, '(32,39)': 3165, '(39,32)': 3166, '(39,33)': 3167, '(34,39)': 3168, '(39,34)': 3169, '(39,35)': 3170, '(36,39)': 3171, '(39,36)': 3172, '(39,37)': 3173, '(38,39)': 3174, '(39,38)': 3175, '(1,39)': 3176, '(3,39)': 3177, '(5,39)': 3178, '(7,39)': 3179, '(9,39)': 3180, '(11,39)': 3181, '(13,39)': 3182, '(15,39)': 3183, '(17,39)': 3184, '(19,39)': 3185, '(21,39)': 3186, '(23,39)': 3187, '(25,39)': 3188, '(27,39)': 3189, '(29,39)': 3190, '(31,39)': 3191, '(33,39)': 3192, '(35,39)': 3193, '(37,39)': 3194, '(39,39)': 3195, '(0,40)': 3196, '(2,40)': 3197, '(4,40)': 3198, '(6,40)': 3199, '(8,40)': 3200, '(10,40)': 3201, '(12,40)': 3202, '(14,40)': 3203, '(16,40)': 3204, '(18,40)': 3205, '(20,40)': 3206, '(22,40)': 3207, '(24,40)': 3208, '(26,40)': 3209, '(28,40)': 3210, '(30,40)': 3211, '(32,40)': 3212, '(34,40)': 3213, '(36,40)': 3214, '(38,40)': 3215, '(40,0)': 3216, '(1,40)': 3217, '(40,1)': 3218, '(40,2)': 3219, '(3,40)': 3220, '(40,3)': 3221, '(40,4)': 3222, '(5,40)': 3223, '(40,5)': 3224, '(40,6)': 3225, '(7,40)': 3226, '(40,7)': 3227, '(40,8)': 3228, '(9,40)': 3229, '(40,9)': 3230, '(40,10)': 3231, '(11,40)': 3232, '(40,11)': 3233, '(40,12)': 3234, '(13,40)': 3235, '(40,13)': 3236, '(40,14)': 3237, '(15,40)': 3238, '(40,15)': 3239, '(40,16)': 3240, '(17,40)': 3241, '(40,17)': 3242, '(40,18)': 3243, '(19,40)': 3244, '(40,19)': 3245, '(40,20)': 3246, '(21,40)': 3247, '(40,21)': 3248, '(40,22)': 3249, '(23,40)': 3250, '(40,23)': 3251, '(40,24)': 3252, '(25,40)': 3253, '(40,25)': 3254, '(40,26)': 3255, '(27,40)': 3256, '(40,27)': 3257, '(40,28)': 3258, '(29,40)': 3259, '(40,29)': 3260, '(40,30)': 3261, '(31,40)': 3262, '(40,31)': 3263, '(40,32)': 3264, '(33,40)': 3265, '(40,33)': 3266, '(40,34)': 3267, '(35,40)': 3268, '(40,35)': 3269, '(40,36)': 3270, '(37,40)': 3271, '(40,37)': 3272, '(40,38)': 3273, '(39,40)': 3274, '(40,39)': 3275, '(40,40)': 3276, '(0,41)': 3277, '(41,0)': 3278, '(41,1)': 3279, '(2,41)': 3280, '(41,2)': 3281, '(41,3)': 3282, '(4,41)': 3283, '(41,4)': 3284, '(41,5)': 3285, '(6,41)': 3286, '(41,6)': 3287, '(41,7)': 3288, '(8,41)': 3289, '(41,8)': 3290, '(41,9)': 3291, '(10,41)': 3292, '(41,10)': 3293, '(41,11)': 3294, '(12,41)': 3295, '(41,12)': 3296, '(41,13)': 3297, '(14,41)': 3298, '(41,14)': 3299, '(41,15)': 3300, '(16,41)': 3301, '(41,16)': 3302, '(41,17)': 3303, '(18,41)': 3304, '(41,18)': 3305, '(41,19)': 3306, '(20,41)': 3307, '(41,20)': 3308, '(41,21)': 3309, '(22,41)': 3310, '(41,22)': 3311, '(41,23)': 3312, '(24,41)': 3313, '(41,24)': 3314, '(41,25)': 3315, '(26,41)': 3316, '(41,26)': 3317, '(41,27)': 3318, '(28,41)': 3319, '(41,28)': 3320, '(41,29)': 3321, '(30,41)': 3322, '(41,30)': 3323, '(41,31)': 3324, '(32,41)': 3325, '(41,32)': 3326, '(41,33)': 3327, '(34,41)': 3328, '(41,34)': 3329, '(41,35)': 3330, '(36,41)': 3331, '(41,36)': 3332, '(41,37)': 3333, '(38,41)': 3334, '(41,38)': 3335, '(41,39)': 3336, '(40,41)': 3337, '(41,40)': 3338, '(1,41)': 3339, '(3,41)': 3340, '(5,41)': 3341, '(7,41)': 3342, '(9,41)': 3343, '(11,41)': 3344, '(13,41)': 3345, '(15,41)': 3346, '(17,41)': 3347, '(19,41)': 3348, '(21,41)': 3349, '(23,41)': 3350, '(25,41)': 3351, '(27,41)': 3352, '(29,41)': 3353, '(31,41)': 3354, '(33,41)': 3355, '(35,41)': 3356, '(37,41)': 3357, '(39,41)': 3358, '(41,41)': 3359, '(0,42)': 3360, '(2,42)': 3361, '(4,42)': 3362, '(6,42)': 3363, '(8,42)': 3364, '(10,42)': 3365, '(12,42)': 3366, '(14,42)': 3367, '(16,42)': 3368, '(18,42)': 3369, '(20,42)': 3370, '(22,42)': 3371, '(24,42)': 3372, '(26,42)': 3373, '(28,42)': 3374, '(30,42)': 3375, '(32,42)': 3376, '(34,42)': 3377, '(36,42)': 3378, '(38,42)': 3379, '(40,42)': 3380, '(42,0)': 3381, '(1,42)': 3382, '(42,1)': 3383, '(42,2)': 3384, '(3,42)': 3385, '(42,3)': 3386, '(42,4)': 3387, '(5,42)': 3388, '(42,5)': 3389, '(42,6)': 3390, '(7,42)': 3391, '(42,7)': 3392, '(42,8)': 3393, '(9,42)': 3394, '(42,9)': 3395, '(42,10)': 3396, '(11,42)': 3397, '(42,11)': 3398, '(42,12)': 3399, '(13,42)': 3400, '(42,13)': 3401, '(42,14)': 3402, '(15,42)': 3403, '(42,15)': 3404, '(42,16)': 3405, '(17,42)': 3406, '(42,17)': 3407, '(42,18)': 3408, '(19,42)': 3409, '(42,19)': 3410, '(42,20)': 3411, '(21,42)': 3412, '(42,21)': 3413, '(42,22)': 3414, '(23,42)': 3415, '(42,23)': 3416, '(42,24)': 3417, '(25,42)': 3418, '(42,25)': 3419, '(42,26)': 3420, '(27,42)': 3421, '(42,27)': 3422, '(42,28)': 3423, '(29,42)': 3424, '(42,29)': 3425, '(42,30)': 3426, '(31,42)': 3427, '(42,31)': 3428, '(42,32)': 3429, '(33,42)': 3430, '(42,33)': 3431, '(42,34)': 3432, '(35,42)': 3433, '(42,35)': 3434, '(42,36)': 3435, '(37,42)': 3436, '(42,37)': 3437, '(42,38)': 3438, '(39,42)': 3439, '(42,39)': 3440, '(42,40)': 3441, '(41,42)': 3442, '(42,41)': 3443, '(42,42)': 3444, '(0,43)': 3445, '(43,0)': 3446, '(43,1)': 3447, '(2,43)': 3448, '(43,2)': 3449, '(43,3)': 3450, '(4,43)': 3451, '(43,4)': 3452, '(43,5)': 3453, '(6,43)': 3454, '(43,6)': 3455, '(43,7)': 3456, '(8,43)': 3457, '(43,8)': 3458, '(43,9)': 3459, '(10,43)': 3460, '(43,10)': 3461, '(43,11)': 3462, '(12,43)': 3463, '(43,12)': 3464, '(43,13)': 3465, '(14,43)': 3466, '(43,14)': 3467, '(43,15)': 3468, '(16,43)': 3469, '(43,16)': 3470, '(43,17)': 3471, '(18,43)': 3472, '(43,18)': 3473, '(43,19)': 3474, '(20,43)': 3475, '(43,20)': 3476, '(43,21)': 3477, '(22,43)': 3478, '(43,22)': 3479, '(43,23)': 3480, '(24,43)': 3481, '(43,24)': 3482, '(43,25)': 3483, '(26,43)': 3484, '(43,26)': 3485, '(43,27)': 3486, '(28,43)': 3487, '(43,28)': 3488, '(43,29)': 3489, '(30,43)': 3490, '(43,30)': 3491, '(43,31)': 3492, '(32,43)': 3493, '(43,32)': 3494, '(43,33)': 3495, '(34,43)': 3496, '(43,34)': 3497, '(43,35)': 3498, '(36,43)': 3499, '(43,36)': 3500, '(43,37)': 3501, '(38,43)': 3502, '(43,38)': 3503, '(43,39)': 3504, '(40,43)': 3505, '(43,40)': 3506, '(43,41)': 3507, '(42,43)': 3508, '(43,42)': 3509, '(1,43)': 3510, '(3,43)': 3511, '(5,43)': 3512, '(7,43)': 3513, '(9,43)': 3514, '(11,43)': 3515, '(13,43)': 3516, '(15,43)': 3517, '(17,43)': 3518, '(19,43)': 3519, '(21,43)': 3520, '(23,43)': 3521, '(25,43)': 3522, '(27,43)': 3523, '(29,43)': 3524, '(31,43)': 3525, '(33,43)': 3526, '(35,43)': 3527, '(37,43)': 3528, '(39,43)': 3529, '(41,43)': 3530, '(43,43)': 3531, '(0,44)': 3532, '(2,44)': 3533, '(4,44)': 3534, '(6,44)': 3535, '(8,44)': 3536, '(10,44)': 3537, '(12,44)': 3538, '(14,44)': 3539, '(16,44)': 3540, '(18,44)': 3541, '(20,44)': 3542, '(22,44)': 3543, '(24,44)': 3544, '(26,44)': 3545, '(28,44)': 3546, '(30,44)': 3547, '(32,44)': 3548, '(34,44)': 3549, '(36,44)': 3550, '(38,44)': 3551, '(40,44)': 3552, '(42,44)': 3553, '(44,0)': 3554, '(1,44)': 3555, '(44,1)': 3556, '(44,2)': 3557, '(3,44)': 3558, '(44,3)': 3559, '(44,4)': 3560, '(5,44)': 3561, '(44,5)': 3562, '(44,6)': 3563, '(7,44)': 3564, '(44,7)': 3565, '(44,8)': 3566, '(9,44)': 3567, '(44,9)': 3568, '(44,10)': 3569, '(11,44)': 3570, '(44,11)': 3571, '(44,12)': 3572, '(13,44)': 3573, '(44,13)': 3574, '(44,14)': 3575, '(15,44)': 3576, '(44,15)': 3577, '(44,16)': 3578, '(17,44)': 3579, '(44,17)': 3580, '(44,18)': 3581, '(19,44)': 3582, '(44,19)': 3583, '(44,20)': 3584, '(21,44)': 3585, '(44,21)': 3586, '(44,22)': 3587, '(23,44)': 3588, '(44,23)': 3589, '(44,24)': 3590, '(25,44)': 3591, '(44,25)': 3592, '(44,26)': 3593, '(27,44)': 3594, '(44,27)': 3595, '(44,28)': 3596, '(29,44)': 3597, '(44,29)': 3598, '(44,30)': 3599, '(31,44)': 3600, '(44,31)': 3601, '(44,32)': 3602, '(33,44)': 3603, '(44,33)': 3604, '(44,34)': 3605, '(35,44)': 3606, '(44,35)': 3607, '(44,36)': 3608, '(37,44)': 3609, '(44,37)': 3610, '(44,38)': 3611, '(39,44)': 3612, '(44,39)': 3613, '(44,40)': 3614, '(41,44)': 3615, '(44,41)': 3616, '(44,42)': 3617, '(43,44)': 3618, '(44,43)': 3619, '(44,44)': 3620, '(0,45)': 3621, '(45,0)': 3622, '(45,1)': 3623, '(2,45)': 3624, '(45,2)': 3625, '(45,3)': 3626, '(4,45)': 3627, '(45,4)': 3628, '(45,5)': 3629, '(6,45)': 3630, '(45,6)': 3631, '(45,7)': 3632, '(8,45)': 3633, '(45,8)': 3634, '(45,9)': 3635, '(10,45)': 3636, '(45,10)': 3637, '(45,11)': 3638, '(12,45)': 3639, '(45,12)': 3640, '(45,13)': 3641, '(14,45)': 3642, '(45,14)': 3643, '(45,15)': 3644, '(16,45)': 3645, '(45,16)': 3646, '(45,17)': 3647, '(18,45)': 3648, '(45,18)': 3649, '(45,19)': 3650, '(20,45)': 3651, '(45,20)': 3652, '(45,21)': 3653, '(22,45)': 3654, '(45,22)': 3655, '(45,23)': 3656, '(24,45)': 3657, '(45,24)': 3658, '(45,25)': 3659, '(26,45)': 3660, '(45,26)': 3661, '(45,27)': 3662, '(28,45)': 3663, '(45,28)': 3664, '(45,29)': 3665, '(30,45)': 3666, '(45,30)': 3667, '(45,31)': 3668, '(32,45)': 3669, '(45,32)': 3670, '(45,33)': 3671, '(34,45)': 3672, '(45,34)': 3673, '(45,35)': 3674, '(36,45)': 3675, '(45,36)': 3676, '(45,37)': 3677, '(38,45)': 3678, '(45,38)': 3679, '(45,39)': 3680, '(40,45)': 3681, '(45,40)': 3682, '(45,41)': 3683, '(42,45)': 3684, '(45,42)': 3685, '(45,43)': 3686, '(44,45)': 3687, '(45,44)': 3688, '(1,45)': 3689, '(3,45)': 3690, '(5,45)': 3691, '(7,45)': 3692, '(9,45)': 3693, '(11,45)': 3694, '(13,45)': 3695, '(15,45)': 3696, '(17,45)': 3697, '(19,45)': 3698, '(21,45)': 3699, '(23,45)': 3700, '(25,45)': 3701, '(27,45)': 3702, '(29,45)': 3703, '(31,45)': 3704, '(33,45)': 3705, '(35,45)': 3706, '(37,45)': 3707, '(39,45)': 3708, '(41,45)': 3709, '(43,45)': 3710, '(45,45)': 3711, '(0,46)': 3712, '(2,46)': 3713, '(4,46)': 3714, '(6,46)': 3715, '(8,46)': 3716, '(10,46)': 3717, '(12,46)': 3718, '(14,46)': 3719, '(16,46)': 3720, '(18,46)': 3721, '(20,46)': 3722, '(22,46)': 3723, '(24,46)': 3724, '(26,46)': 3725, '(28,46)': 3726, '(30,46)': 3727, '(32,46)': 3728, '(34,46)': 3729, '(36,46)': 3730, '(38,46)': 3731, '(40,46)': 3732, '(42,46)': 3733, '(44,46)': 3734, '(46,0)': 3735, '(1,46)': 3736, '(46,1)': 3737, '(46,2)': 3738, '(3,46)': 3739, '(46,3)': 3740, '(46,4)': 3741, '(5,46)': 3742, '(46,5)': 3743, '(46,6)': 3744, '(7,46)': 3745, '(46,7)': 3746, '(46,8)': 3747, '(9,46)': 3748, '(46,9)': 3749, '(46,10)': 3750, '(11,46)': 3751, '(46,11)': 3752, '(46,12)': 3753, '(13,46)': 3754, '(46,13)': 3755, '(46,14)': 3756, '(15,46)': 3757, '(46,15)': 3758, '(46,16)': 3759, '(17,46)': 3760, '(46,17)': 3761, '(46,18)': 3762, '(19,46)': 3763, '(46,19)': 3764, '(46,20)': 3765, '(21,46)': 3766, '(46,21)': 3767, '(46,22)': 3768, '(23,46)': 3769, '(46,23)': 3770, '(46,24)': 3771, '(25,46)': 3772, '(46,25)': 3773, '(46,26)': 3774, '(27,46)': 3775, '(46,27)': 3776, '(46,28)': 3777, '(29,46)': 3778, '(46,29)': 3779, '(46,30)': 3780, '(31,46)': 3781, '(46,31)': 3782, '(46,32)': 3783, '(33,46)': 3784, '(46,33)': 3785, '(46,34)': 3786, '(35,46)': 3787, '(46,35)': 3788, '(46,36)': 3789, '(37,46)': 3790, '(46,37)': 3791, '(46,38)': 3792, '(39,46)': 3793, '(46,39)': 3794, '(46,40)': 3795, '(41,46)': 3796, '(46,41)': 3797, '(46,42)': 3798, '(43,46)': 3799, '(46,43)': 3800, '(46,44)': 3801, '(45,46)': 3802, '(46,45)': 3803, '(46,46)': 3804, '(0,47)': 3805, '(47,0)': 3806, '(47,1)': 3807, '(2,47)': 3808, '(47,2)': 3809, '(47,3)': 3810, '(4,47)': 3811, '(47,4)': 3812, '(47,5)': 3813, '(6,47)': 3814, '(47,6)': 3815, '(47,7)': 3816, '(8,47)': 3817, '(47,8)': 3818, '(47,9)': 3819, '(10,47)': 3820, '(47,10)': 3821, '(47,11)': 3822, '(12,47)': 3823, '(47,12)': 3824, '(47,13)': 3825, '(14,47)': 3826, '(47,14)': 3827, '(47,15)': 3828, '(16,47)': 3829, '(47,16)': 3830, '(47,17)': 3831, '(18,47)': 3832, '(47,18)': 3833, '(47,19)': 3834, '(20,47)': 3835, '(47,20)': 3836, '(47,21)': 3837, '(22,47)': 3838, '(47,22)': 3839, '(47,23)': 3840, '(24,47)': 3841, '(47,24)': 3842, '(47,25)': 3843, '(26,47)': 3844, '(47,26)': 3845, '(47,27)': 3846, '(28,47)': 3847, '(47,28)': 3848, '(47,29)': 3849, '(30,47)': 3850, '(47,30)': 3851, '(47,31)': 3852, '(32,47)': 3853, '(47,32)': 3854, '(47,33)': 3855, '(34,47)': 3856, '(47,34)': 3857, '(47,35)': 3858, '(36,47)': 3859, '(47,36)': 3860, '(47,37)': 3861, '(38,47)': 3862, '(47,38)': 3863, '(47,39)': 3864, '(40,47)': 3865, '(47,40)': 3866, '(47,41)': 3867, '(42,47)': 3868, '(47,42)': 3869, '(47,43)': 3870, '(44,47)': 3871, '(47,44)': 3872, '(47,45)': 3873, '(46,47)': 3874, '(47,46)': 3875, '(1,47)': 3876, '(3,47)': 3877, '(5,47)': 3878, '(7,47)': 3879, '(9,47)': 3880, '(11,47)': 3881, '(13,47)': 3882, '(15,47)': 3883, '(17,47)': 3884, '(19,47)': 3885, '(21,47)': 3886, '(23,47)': 3887, '(25,47)': 3888, '(27,47)': 3889, '(29,47)': 3890, '(31,47)': 3891, '(33,47)': 3892, '(35,47)': 3893, '(37,47)': 3894, '(39,47)': 3895, '(41,47)': 3896, '(43,47)': 3897, '(45,47)': 3898, '(47,47)': 3899, '(0,48)': 3900, '(2,48)': 3901, '(4,48)': 3902, '(6,48)': 3903, '(8,48)': 3904, '(10,48)': 3905, '(12,48)': 3906, '(14,48)': 3907, '(16,48)': 3908, '(18,48)': 3909, '(20,48)': 3910, '(22,48)': 3911, '(24,48)': 3912, '(26,48)': 3913, '(28,48)': 3914, '(30,48)': 3915, '(32,48)': 3916, '(34,48)': 3917, '(36,48)': 3918, '(38,48)': 3919, '(40,48)': 3920, '(42,48)': 3921, '(44,48)': 3922, '(46,48)': 3923, '(48,0)': 3924, '(1,48)': 3925, '(48,1)': 3926, '(48,2)': 3927, '(3,48)': 3928, '(48,3)': 3929, '(48,4)': 3930, '(5,48)': 3931, '(48,5)': 3932, '(48,6)': 3933, '(7,48)': 3934, '(48,7)': 3935, '(48,8)': 3936, '(9,48)': 3937, '(48,9)': 3938, '(48,10)': 3939, '(11,48)': 3940, '(48,11)': 3941, '(48,12)': 3942, '(13,48)': 3943, '(48,13)': 3944, '(48,14)': 3945, '(15,48)': 3946, '(48,15)': 3947, '(48,16)': 3948, '(17,48)': 3949, '(48,17)': 3950, '(48,18)': 3951, '(19,48)': 3952, '(48,19)': 3953, '(48,20)': 3954, '(21,48)': 3955, '(48,21)': 3956, '(48,22)': 3957, '(23,48)': 3958, '(48,23)': 3959, '(48,24)': 3960, '(25,48)': 3961, '(48,25)': 3962, '(48,26)': 3963, '(27,48)': 3964, '(48,27)': 3965, '(48,28)': 3966, '(29,48)': 3967, '(48,29)': 3968, '(48,30)': 3969, '(31,48)': 3970, '(48,31)': 3971, '(48,32)': 3972, '(33,48)': 3973, '(48,33)': 3974, '(48,34)': 3975, '(35,48)': 3976, '(48,35)': 3977, '(48,36)': 3978, '(37,48)': 3979, '(48,37)': 3980, '(48,38)': 3981, '(39,48)': 3982, '(48,39)': 3983, '(48,40)': 3984, '(41,48)': 3985, '(48,41)': 3986, '(48,42)': 3987, '(43,48)': 3988, '(48,43)': 3989, '(48,44)': 3990, '(45,48)': 3991, '(48,45)': 3992, '(48,46)': 3993, '(47,48)': 3994, '(48,47)': 3995, '(48,48)': 3996, '(0,49)': 3997, '(49,0)': 3998, '(49,1)': 3999, '(2,49)': 4000, '(49,2)': 4001, '(49,3)': 4002, '(4,49)': 4003, '(49,4)': 4004, '(49,5)': 4005, '(6,49)': 4006, '(49,6)': 4007, '(49,7)': 4008, '(8,49)': 4009, '(49,8)': 4010, '(49,9)': 4011, '(10,49)': 4012, '(49,10)': 4013, '(49,11)': 4014, '(12,49)': 4015, '(49,12)': 4016, '(49,13)': 4017, '(14,49)': 4018, '(49,14)': 4019, '(49,15)': 4020, '(16,49)': 4021, '(49,16)': 4022, '(49,17)': 4023, '(18,49)': 4024, '(49,18)': 4025, '(49,19)': 4026, '(20,49)': 4027, '(49,20)': 4028, '(49,21)': 4029, '(22,49)': 4030, '(49,22)': 4031, '(49,23)': 4032, '(24,49)': 4033, '(49,24)': 4034, '(49,25)': 4035, '(26,49)': 4036, '(49,26)': 4037, '(49,27)': 4038, '(28,49)': 4039, '(49,28)': 4040, '(49,29)': 4041, '(30,49)': 4042, '(49,30)': 4043, '(49,31)': 4044, '(32,49)': 4045, '(49,32)': 4046, '(49,33)': 4047, '(34,49)': 4048, '(49,34)': 4049, '(49,35)': 4050, '(36,49)': 4051, '(49,36)': 4052, '(49,37)': 4053, '(38,49)': 4054, '(49,38)': 4055, '(49,39)': 4056, '(40,49)': 4057, '(49,40)': 4058, '(49,41)': 4059, '(42,49)': 4060, '(49,42)': 4061, '(49,43)': 4062, '(44,49)': 4063, '(49,44)': 4064, '(49,45)': 4065, '(46,49)': 4066, '(49,46)': 4067, '(49,47)': 4068, '(48,49)': 4069, '(49,48)': 4070, '(1,49)': 4071, '(3,49)': 4072, '(5,49)': 4073, '(7,49)': 4074, '(9,49)': 4075, '(11,49)': 4076, '(13,49)': 4077, '(15,49)': 4078, '(17,49)': 4079, '(19,49)': 4080, '(21,49)': 4081, '(23,49)': 4082, '(25,49)': 4083, '(27,49)': 4084, '(29,49)': 4085, '(31,49)': 4086, '(33,49)': 4087, '(35,49)': 4088, '(37,49)': 4089, '(39,49)': 4090, '(41,49)': 4091, '(43,49)': 4092, '(45,49)': 4093, '(47,49)': 4094, '(49,49)': 4095}` +map of `VOCAB` tokens to their indices - `CARDINAL_MAP: dict[tuple[int, int], str] = {(-1, 0): 'NORTH', (1, 0): 'SOUTH', (0, -1): 'WEST', (0, 1): 'EAST'}` +map of cardinal directions to appropriate tokens @@ -2193,7 +2201,7 @@ a maze dataset class. This is a collection of solved mazes, and should be initia return the dataset as tokens according to the passed `maze_tokenizer` -the `maze_tokenizer` should be either a `MazeTokenizer` or a `ModularMazeTokenizer` +the `maze_tokenizer` should be either a `MazeTokenizer` or a `MazeTokenizerModular` if `join_tokens_individual_maze` is True, then the tokens of each maze are joined with a space, and the result is a list of strings. @@ -3991,7 +3999,7 @@ a maze dataset class. This is a collection of solved mazes, and should be initia return the dataset as tokens according to the passed `maze_tokenizer` -the `maze_tokenizer` should be either a `MazeTokenizer` or a `ModularMazeTokenizer` +the `maze_tokenizer` should be either a `MazeTokenizer` or a `MazeTokenizerModular` if `join_tokens_individual_maze` is True, then the tokens of each maze are joined with a space, and the result is a list of strings. @@ -4752,7 +4760,7 @@ dfs and then percolation (adds cycles) helper function to get a maze already with a solution -- `numpy_rng = Generator(PCG64) at 0x1BCBFFCA5E0` +- `numpy_rng = Generator(PCG64) at 0x1674FA9E5E0` @@ -4818,7 +4826,7 @@ generation functions have signature `(grid_shape: Coord, **kwargs) -> LatticeMaz -- `numpy_rng = Generator(PCG64) at 0x1BCBFFCA5E0` +- `numpy_rng = Generator(PCG64) at 0x1674FA9E5E0` @@ -5029,7 +5037,7 @@ docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) ### `class SolvedMaze(maze_dataset.maze.lattice_maze.TargetedLatticeMaze):` { #SolvedMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1109-L1247) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1116-L1254) Stores a maze and a solution @@ -5047,7 +5055,7 @@ Stores a maze and a solution ) ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1115-L1158) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1122-L1165) @@ -5063,14 +5071,14 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1170-L1175) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1177-L1182) - `maze: maze_dataset.maze.lattice_maze.LatticeMaze ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1178-L1184) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1185-L1191) @@ -5085,7 +5093,7 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1186-L1194) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1193-L1201) @@ -5100,7 +5108,7 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1196-L1212) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1203-L1219) solves the given targeted lattice maze and returns a SolvedMaze @@ -5115,7 +5123,7 @@ solves the given targeted lattice maze and returns a SolvedMaze ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1214-L1237) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1221-L1244) coordinates and their indicies from the solution where a fork is present @@ -5130,7 +5138,7 @@ coordinates and their indicies from the solution where a fork is present ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1239-L1247) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1246-L1254) coordinates from the solution where there is only a single (non-backtracking) point to move to @@ -5217,7 +5225,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class TargetedLatticeMaze(maze_dataset.maze.lattice_maze.LatticeMaze):` { #TargetedLatticeMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1036-L1106) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1043-L1113) A LatticeMaze with a start and end position @@ -5253,7 +5261,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1073-L1078) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1080-L1085) @@ -5264,7 +5272,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1087-L1092) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1094-L1099) @@ -5280,7 +5288,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1094-L1106) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1101-L1113) @@ -5359,7 +5367,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class LatticeMaze(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #LatticeMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L101-L1033) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L101-L1040) lattice maze (nodes on a lattice, connections only to neighboring nodes) @@ -5585,12 +5593,13 @@ TODO: other connected components? allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L368-L477) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L368-L484) return a path between randomly chosen start and end nodes within the connected component @@ -5612,7 +5621,10 @@ Note that setting special conditions on start and end positions might cause the (defaults to `False`) - `deadend_end : bool` whether to ***force*** the end position to be a deadend (defaults to `False`) - (defaults to `False`) + (defaults to `False`) + - `endpoints_not_equal : bool` + whether to ensure tha the start and end point are not the same + (defaults to `False`) ### Returns: - `CoordArray` @@ -5632,7 +5644,7 @@ Note that setting special conditions on start and end positions might cause the ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L482-L485) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L489-L492) @@ -5646,7 +5658,7 @@ Note that setting special conditions on start and end positions might cause the ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L487-L526) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L494-L533) create a LatticeMaze from a list of connections @@ -5661,7 +5673,7 @@ create a LatticeMaze from a list of connections ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L528-L547) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L535-L554) @@ -5675,7 +5687,7 @@ create a LatticeMaze from a list of connections ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L596-L604) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L603-L611) serialize maze and solution to tokens @@ -5691,7 +5703,7 @@ serialize maze and solution to tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L705-L731) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L712-L738) Constructs a maze from a tokenization. @@ -5708,7 +5720,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L762-L816) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L769-L823) @@ -5722,7 +5734,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L866-L981) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L873-L988) @@ -5733,7 +5745,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L998-L1019) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1005-L1026) return an ASCII grid of the maze @@ -5745,7 +5757,7 @@ return an ASCII grid of the maze ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1021-L1033) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1028-L1040) @@ -5934,7 +5946,7 @@ docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) # `maze_dataset.maze.lattice_maze` { #maze_dataset.maze.lattice_maze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L0-L1350) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L0-L1357) @@ -6072,7 +6084,7 @@ map ascii characters to pixel colors ### `class LatticeMaze(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #LatticeMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L101-L1033) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L101-L1040) lattice maze (nodes on a lattice, connections only to neighboring nodes) @@ -6298,12 +6310,13 @@ TODO: other connected components? allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L368-L477) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L368-L484) return a path between randomly chosen start and end nodes within the connected component @@ -6325,7 +6338,10 @@ Note that setting special conditions on start and end positions might cause the (defaults to `False`) - `deadend_end : bool` whether to ***force*** the end position to be a deadend (defaults to `False`) - (defaults to `False`) + (defaults to `False`) + - `endpoints_not_equal : bool` + whether to ensure tha the start and end point are not the same + (defaults to `False`) ### Returns: - `CoordArray` @@ -6345,7 +6361,7 @@ Note that setting special conditions on start and end positions might cause the ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L482-L485) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L489-L492) @@ -6359,7 +6375,7 @@ Note that setting special conditions on start and end positions might cause the ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L487-L526) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L494-L533) create a LatticeMaze from a list of connections @@ -6374,7 +6390,7 @@ create a LatticeMaze from a list of connections ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L528-L547) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L535-L554) @@ -6388,7 +6404,7 @@ create a LatticeMaze from a list of connections ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L596-L604) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L603-L611) serialize maze and solution to tokens @@ -6404,7 +6420,7 @@ serialize maze and solution to tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L705-L731) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L712-L738) Constructs a maze from a tokenization. @@ -6421,7 +6437,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L762-L816) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L769-L823) @@ -6435,7 +6451,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L866-L981) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L873-L988) @@ -6446,7 +6462,7 @@ Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L998-L1019) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1005-L1026) return an ASCII grid of the maze @@ -6458,7 +6474,7 @@ return an ASCII grid of the maze ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1021-L1033) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1028-L1040) @@ -6511,7 +6527,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class TargetedLatticeMaze(LatticeMaze):` { #TargetedLatticeMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1036-L1106) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1043-L1113) A LatticeMaze with a start and end position @@ -6547,7 +6563,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1073-L1078) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1080-L1085) @@ -6558,7 +6574,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1087-L1092) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1094-L1099) @@ -6574,7 +6590,7 @@ A LatticeMaze with a start and end position ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1094-L1106) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1101-L1113) @@ -6653,7 +6669,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class SolvedMaze(TargetedLatticeMaze):` { #SolvedMaze } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1109-L1247) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1116-L1254) Stores a maze and a solution @@ -6671,7 +6687,7 @@ Stores a maze and a solution ) ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1115-L1158) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1122-L1165) @@ -6687,14 +6703,14 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1170-L1175) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1177-L1182) - `maze: maze_dataset.maze.lattice_maze.LatticeMaze ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1178-L1184) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1185-L1191) @@ -6709,7 +6725,7 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1186-L1194) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1193-L1201) @@ -6724,7 +6740,7 @@ Stores a maze and a solution ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1196-L1212) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1203-L1219) solves the given targeted lattice maze and returns a SolvedMaze @@ -6739,7 +6755,7 @@ solves the given targeted lattice maze and returns a SolvedMaze ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1214-L1237) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1221-L1244) coordinates and their indicies from the solution where a fork is present @@ -6754,7 +6770,7 @@ coordinates and their indicies from the solution where a fork is present ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1239-L1247) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1246-L1254) coordinates from the solution where there is only a single (non-backtracking) point to move to @@ -6847,7 +6863,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1250-L1260) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1257-L1267) Detects the type of pixels data by checking for the presence of start and end pixels @@ -8849,10 +8865,14 @@ turning a maze into text ### `class TokenizationMode(enum.Enum):` { #TokenizationMode } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L68-L89) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L68-L93) -LEGACY: mode of tokenization +legacy tokenization modes + +> [!CAUTION] +> Legacy mode of tokenization. will still be around in future releases, but is no longer recommended for use. +> Use `MazeTokenizerModular` instead. ### Abbreviations: - `AOTP`: Ajacency list, Origin, Target, Path @@ -8888,7 +8908,7 @@ LEGACY: mode of tokenization ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L88-L89) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L92-L93) @@ -8901,21 +8921,23 @@ LEGACY: mode of tokenization ### `class _TokenizerElement(muutils.json_serialize.serializable_dataclass.SerializableDataclass, abc.ABC):` { #_TokenizerElement } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L458-L673) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L462-L680) Superclass for tokenizer elements. Subclasses contain modular functionality for maze tokenization. ### Development -Due to the functionality of `ALL_TOKENIZERS`, `_TokenizerElement` subclasses may only contain fields of type `utils.FiniteValued`. -Implementing a subclass with an `int` or `float`-typed field, for example, is not supported. -In the event that adding such fields is deemed necessary, `ALL_TOKENIZERS` must be updated. +> [!TIP] +> Due to the functionality of `get_all_tokenizers()`, `_TokenizerElement` subclasses +> may only contain fields of type `utils.FiniteValued`. +> Implementing a subclass with an `int` or `float`-typed field, for example, is not supported. +> In the event that adding such fields is deemed necessary, `get_all_tokenizers()` must be updated. - `name: str ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L480-L489) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L487-L496) @@ -8929,7 +8951,7 @@ In the event that adding such fields is deemed necessary, `ALL_TOKENIZERS` must ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L524-L580) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L531-L587) Returns a list of all `_TokenizerElement` instances contained in the subtree. @@ -8946,7 +8968,7 @@ which sit inside a `tuple` without further nesting. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L582-L602) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L589-L609) Returns a string representation of the tree of tokenizer elements contained in `self`. @@ -8962,7 +8984,7 @@ Returns a string representation of the tree of tokenizer elements contained in ` ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L604-L629) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L611-L636) Returns a dictionary representation of the tree of tokenizer elements contained in `self`. @@ -8974,7 +8996,7 @@ Returns a dictionary representation of the tree of tokenizer elements contained ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L631-L635) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L638-L642) Returns the binding used in `MazeTokenizerModular` for that type of `_TokenizerElement`. @@ -8986,7 +9008,7 @@ Returns the binding used in `MazeTokenizerModular` for that type of `_TokenizerE ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L637-L642) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L644-L649) Converts a maze element into a list of tokens. @@ -9000,7 +9022,7 @@ Those subclasses which do produce tokens should override this method. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L644-L673) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L651-L680) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -9079,7 +9101,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class MazeTokenizerModular(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #MazeTokenizerModular } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1882-L2174) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1903-L2195) Tokenizer for mazes @@ -9115,7 +9137,7 @@ Tokenizer for mazes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1904-L1908) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1925-L1929) @@ -9126,7 +9148,7 @@ Tokenizer for mazes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1914-L1924) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1935-L1945) filename-safe base64 encoding of the hash @@ -9134,7 +9156,7 @@ filename-safe base64 encoding of the hash - `tokenizer_elements: list[maze_dataset.tokenization.maze_tokenizer._TokenizerElement] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1928-L1930) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1949-L1951) @@ -9145,7 +9167,7 @@ filename-safe base64 encoding of the hash ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1932-L1947) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1953-L1968) Returns a string representation of the tree of tokenizer elements contained in `self`. @@ -9156,7 +9178,7 @@ Returns a string representation of the tree of tokenizer elements contained in ` - `tokenizer_element_tree_concrete ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1949-L1954) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1970-L1975) Property wrapper for `tokenizer_element_tree` so that it can be used in `properties_to_serialize`. @@ -9168,7 +9190,7 @@ Property wrapper for `tokenizer_element_tree` so that it can be used in `propert ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1956-L1960) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1977-L1981) Nested dictionary of the internal `TokenizerElement`s. @@ -9176,7 +9198,7 @@ Nested dictionary of the internal `TokenizerElement`s. - `name: str ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1962-L1965) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1983-L1986) Serializes MazeTokenizer into a key for encoding in zanj @@ -9188,7 +9210,7 @@ Serializes MazeTokenizer into a key for encoding in zanj ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1967-L1974) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1988-L1995) Single-level dictionary of the internal `TokenizerElement`s. @@ -9203,7 +9225,7 @@ Single-level dictionary of the internal `TokenizerElement`s. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1993-L2009) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2014-L2030) Returns True if the `MazeTokenizerModular` instance contains ALL of the items specified in `elements`. @@ -9223,7 +9245,7 @@ If a class is provided, then comparison isdone via `isinstance`. I.e., any insta ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2011-L2016) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2032-L2037) Returns `True` if `self` is a valid tokenizer. @@ -9236,7 +9258,7 @@ Evaluates the validity of all of `self.tokenizer_elements` according to each one ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2018-L2025) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2039-L2046) Returns if `self` has identical stringification behavior as any legacy `MazeTokenizer`. @@ -9248,12 +9270,12 @@ Returns if `self` has identical stringification behavior as any legacy `MazeToke ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2027-L2054) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2048-L2075) -Returns if the tokenizer is returned by `all_tokenizers._get_all_tokenizers`, the set of tested and reliable tokenizers. +Returns if the tokenizer is returned by `all_tokenizers.get_all_tokenizers`, the set of tested and reliable tokenizers. -Since evaluating `all_tokenizers._get_all_tokenizers` is expensive, +Since evaluating `all_tokenizers.get_all_tokenizers` is expensive, instead checks for membership of `self`'s hash in `get_all_tokenizer_hashes()`. if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tested. @@ -9265,7 +9287,7 @@ if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2056-L2057) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2077-L2078) @@ -9276,7 +9298,7 @@ if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2059-L2060) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2080-L2081) @@ -9290,7 +9312,7 @@ if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2065-L2080) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2086-L2101) Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent `MazeTokenizerModular` instance. @@ -9305,7 +9327,7 @@ Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent `MazeToken ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2084-L2094) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2105-L2115) Infers most `MazeTokenizerModular` parameters from a full sequence of tokens. @@ -9313,7 +9335,7 @@ Infers most `MazeTokenizerModular` parameters from a full sequence of tokens. - `token_arr: list[str] | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2096-L2099) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2117-L2120) map from index to token @@ -9321,7 +9343,7 @@ map from index to token - `tokenizer_map: dict[str, int] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2101-L2104) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2122-L2125) map from token to index @@ -9329,7 +9351,7 @@ map from token to index - `vocab_size: int ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2106-L2109) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2127-L2130) Number of tokens in the static vocab @@ -9337,14 +9359,14 @@ Number of tokens in the static vocab - `n_tokens: int ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2111-L2115) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2132-L2136) - `padding_token_index: int ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2117-L2119) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2138-L2140) @@ -9355,7 +9377,7 @@ Number of tokens in the static vocab ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2124-L2129) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2145-L2150) Converts maze into a list of tokens. @@ -9370,7 +9392,7 @@ Converts maze into a list of tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2131-L2136) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2152-L2157) @@ -9384,7 +9406,7 @@ Converts maze into a list of tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2138-L2147) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2159-L2168) @@ -9395,7 +9417,7 @@ Converts maze into a list of tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2149-L2160) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2170-L2181) encode a string or list of strings into a list of tokens @@ -9407,7 +9429,7 @@ encode a string or list of strings into a list of tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2162-L2174) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2183-L2195) decode a list of tokens into a string or list of strings @@ -9461,13 +9483,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class PromptSequencers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #PromptSequencers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1648-L1879) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1667-L1900) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PromptSequencer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'prompt_sequencer'` @@ -9477,7 +9496,7 @@ ABC for namespaces ### `class PromptSequencers.AOTP(maze_dataset.tokenization.maze_tokenizer.PromptSequencers._PromptSequencer):` { #PromptSequencers.AOTP } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1801-L1843) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1822-L1864) Sequences a prompt as [adjacency list, origin, target, path]. @@ -9573,7 +9592,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class PromptSequencers.AOP(maze_dataset.tokenization.maze_tokenizer.PromptSequencers._PromptSequencer):` { #PromptSequencers.AOP } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1845-L1879) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1866-L1900) Sequences a prompt as [adjacency list, origin, path]. @@ -9662,13 +9681,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class CoordTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #CoordTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L722-L772) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L729-L781) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_CoordTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'coord_tokenizer'` @@ -9678,7 +9694,7 @@ ABC for namespaces ### `class CoordTokenizers.UT(maze_dataset.tokenization.maze_tokenizer.CoordTokenizers._CoordTokenizer):` { #CoordTokenizers.UT } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L743-L748) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L752-L757) Unique token coordinate tokenizer. @@ -9704,7 +9720,7 @@ Unique token coordinate tokenizer. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L747-L748) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L756-L757) Converts a maze element into a list of tokens. @@ -9768,7 +9784,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class CoordTokenizers.CTT(maze_dataset.tokenization.maze_tokenizer.CoordTokenizers._CoordTokenizer):` { #CoordTokenizers.CTT } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L750-L772) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L759-L781) Coordinate tuple tokenizer @@ -9817,7 +9833,7 @@ Coordinate tuple tokenizer ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L765-L772) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L774-L781) Converts a maze element into a list of tokens. @@ -9881,13 +9897,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class AdjListTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #AdjListTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1017-L1255) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1026-L1266) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_AdjListTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'adj_list_tokenizer'` @@ -9897,7 +9910,7 @@ ABC for namespaces ### `class AdjListTokenizers.AdjListCoord(maze_dataset.tokenization.maze_tokenizer.AdjListTokenizers._AdjListTokenizer):` { #AdjListTokenizers.AdjListCoord } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1197-L1223) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1208-L1234) Represents an edge group as tokens for the leading coord followed by coord tokens for the other group members. @@ -9987,7 +10000,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class AdjListTokenizers.AdjListCardinal(maze_dataset.tokenization.maze_tokenizer.AdjListTokenizers._AdjListTokenizer):` { #AdjListTokenizers.AdjListCardinal } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1225-L1255) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1236-L1266) Represents an edge group as coord tokens for the leading coord and cardinal tokens relative to the leading coord for the other group members. @@ -10080,10 +10093,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeGroupings(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #EdgeGroupings } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L775-L880) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L784-L889) -Namespace for `EdgeGrouping` subclass hierarchy used by `AdjListTokenizer`. +Namespace for `_EdgeGrouping` subclass hierarchy used by `_AdjListTokenizer`. - `key = 'edge_grouping'` @@ -10093,7 +10106,7 @@ Namespace for `EdgeGrouping` subclass hierarchy used by `AdjListTokenizer`. ### `class EdgeGroupings.Ungrouped(maze_dataset.tokenization.maze_tokenizer.EdgeGroupings._EdgeGrouping):` { #EdgeGroupings.Ungrouped } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L817-L838) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L826-L847) No grouping occurs, each edge is tokenized individually. @@ -10177,7 +10190,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeGroupings.ByLeadingCoord(maze_dataset.tokenization.maze_tokenizer.EdgeGroupings._EdgeGrouping):` { #EdgeGroupings.ByLeadingCoord } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L840-L880) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L849-L889) All edges with the same leading coord are grouped together. @@ -10227,7 +10240,7 @@ Edge tokenizations contain 2 parts: a connector (or wall) token and a coord or c ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L841-L880) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L850-L889) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -10314,10 +10327,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgePermuters(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #EdgePermuters } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L883-L953) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L892-L962) -Namespace for `EdgePermuter` subclass hierarchy used by `AdjListTokenizer`. +Namespace for `_EdgePermuter` subclass hierarchy used by `_AdjListTokenizer`. - `key = 'edge_permuter'` @@ -10327,7 +10340,7 @@ Namespace for `EdgePermuter` subclass hierarchy used by `AdjListTokenizer`. ### `class EdgePermuters.SortedCoords(maze_dataset.tokenization.maze_tokenizer.EdgePermuters._EdgePermuter):` { #EdgePermuters.SortedCoords } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L917-L933) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L926-L942) returns a sorted representation. useful for checking consistency @@ -10401,7 +10414,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgePermuters.RandomCoords(maze_dataset.tokenization.maze_tokenizer.EdgePermuters._EdgePermuter):` { #EdgePermuters.RandomCoords } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L935-L942) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L944-L951) Permutes each edge randomly. @@ -10475,7 +10488,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgePermuters.BothCoords(maze_dataset.tokenization.maze_tokenizer.EdgePermuters._EdgePermuter):` { #EdgePermuters.BothCoords } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L944-L953) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L953-L962) Includes both possible permutations of every edge in the output. @@ -10551,10 +10564,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeSubsets(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #EdgeSubsets } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L956-L1014) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L965-L1023) -Namespace for `EdgeSubset` subclass hierarchy used by `AdjListTokenizer`. +Namespace for `_EdgeSubset` subclass hierarchy used by `_AdjListTokenizer`. - `key = 'edge_subset'` @@ -10564,7 +10577,7 @@ Namespace for `EdgeSubset` subclass hierarchy used by `AdjListTokenizer`. ### `class EdgeSubsets.AllLatticeEdges(maze_dataset.tokenization.maze_tokenizer.EdgeSubsets._EdgeSubset):` { #EdgeSubsets.AllLatticeEdges } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L983-L991) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L992-L1000) All 2n**2-2n edges of the lattice are tokenized. @@ -10639,7 +10652,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeSubsets.ConnectionEdges(maze_dataset.tokenization.maze_tokenizer.EdgeSubsets._EdgeSubset):` { #EdgeSubsets.ConnectionEdges } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L993-L1014) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1002-L1023) Only edges which contain a connection are tokenized. @@ -10724,13 +10737,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class TargetTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #TargetTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1258-L1307) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1269-L1320) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_TargetTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'target_tokenizer'` @@ -10740,7 +10750,7 @@ ABC for namespaces ### `class TargetTokenizers.Unlabeled(maze_dataset.tokenization.maze_tokenizer.TargetTokenizers._TargetTokenizer):` { #TargetTokenizers.Unlabeled } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1278-L1307) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1291-L1320) Targets are simply listed as coord tokens. @@ -10774,7 +10784,7 @@ Targets are simply listed as coord tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1286-L1303) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1299-L1316) Returns tokens representing the target. @@ -10786,7 +10796,7 @@ Returns tokens representing the target. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1305-L1307) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1318-L1320) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -10872,13 +10882,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #StepSizes } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1310-L1401) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1323-L1416) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepSize` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'step_size'` @@ -10888,7 +10895,7 @@ ABC for namespaces ### `class StepSizes.Singles(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` { #StepSizes.Singles } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1339-L1348) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1354-L1363) Every coord in `maze.solution` is represented. @@ -10964,7 +10971,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes.Straightaways(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` { #StepSizes.Straightaways } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1350-L1368) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1365-L1383) Only coords where the path turns are represented in the path. @@ -10989,7 +10996,7 @@ specified by the coords at the turns. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1351-L1368) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1366-L1383) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -11077,7 +11084,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes.Forks(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` { #StepSizes.Forks } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1370-L1380) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1385-L1395) Only coords at forks, where the path has >=2 options for the next step are included. @@ -11154,7 +11161,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes.ForksAndStraightaways(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` { #StepSizes.ForksAndStraightaways } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1382-L1401) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1397-L1416) Includes the union of the coords included by `Forks` and `Straightaways`. @@ -11178,7 +11185,7 @@ See documentation for those classes for details. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1383-L1401) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1398-L1416) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -11266,13 +11273,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #StepTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1404-L1522) - +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1419-L1539) -ABC for namespaces -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'step_tokenizers'` @@ -11287,7 +11291,7 @@ ABC for namespaces ### `class StepTokenizers.Coord(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` { #StepTokenizers.Coord } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1440-L1453) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1457-L1470) A direct tokenization of the end position coord represents the step. @@ -11316,7 +11320,7 @@ A direct tokenization of the end position coord represents the step. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1446-L1453) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1463-L1470) Tokenizes a single step in the solution. @@ -11383,7 +11387,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers.Cardinal(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` { #StepTokenizers.Cardinal } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1455-L1467) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1472-L1484) A step is tokenized with a cardinal direction token. @@ -11413,7 +11417,7 @@ It is the direction of the step from the starting position along the solution. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1462-L1467) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1479-L1484) Tokenizes a single step in the solution. @@ -11480,7 +11484,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers.Relative(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` { #StepTokenizers.Relative } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1469-L1495) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1486-L1512) Tokenizes a solution step using relative first-person directions (right, left, forward, etc.). @@ -11511,7 +11515,7 @@ Similarly to `Cardinal`, the direction is that of the step from the starting pos ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1476-L1495) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1493-L1512) Tokenizes a single step in the solution. @@ -11578,7 +11582,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers.Distance(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` { #StepTokenizers.Distance } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1497-L1510) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1514-L1527) A count of the number of individual steps from the starting point to the end point. @@ -11610,7 +11614,7 @@ This constraint is enforced in `_PathTokenizer.is_valid`. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1506-L1510) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1523-L1527) Tokenizes a single step in the solution. @@ -11677,13 +11681,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class PathTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` { #PathTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1525-L1645) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1542-L1664) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PathTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'path_tokenizer'` @@ -11693,7 +11694,7 @@ ABC for namespaces ### `class PathTokenizers.StepSequence(maze_dataset.tokenization.maze_tokenizer.PathTokenizers._PathTokenizer, abc.ABC):` { #PathTokenizers.StepSequence } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1543-L1645) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1562-L1664) Any `PathTokenizer` where the tokenization may be assembled from token subsequences, each of which represents a step along the path. @@ -11758,7 +11759,7 @@ Allows for a sequence of leading and trailing tokens which don't fit the step pa ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1569-L1581) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1588-L1600) Returns tokens representing the solution path. @@ -11770,7 +11771,7 @@ Returns tokens representing the solution path. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1634-L1645) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1653-L1664) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -11869,14 +11870,14 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L107-L125) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L111-L129) ### `class MazeTokenizer(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #MazeTokenizer } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L138-L455) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L142-L459) LEGACY Tokenizer for mazes @@ -11943,14 +11944,14 @@ Prepend `_` to the name to get a guaranteed type, and cause an exception if `max - `name: str ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L197-L202) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L201-L206) - `node_strings_map: Optional[Mapping[tuple[int, int], list[str]]] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L220-L229) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L224-L233) map a coordinate to a token @@ -11958,35 +11959,35 @@ map a coordinate to a token - `token_arr: list[str] | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L274-L278) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L278-L282) - `tokenizer_map: dict[str, int] | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L285-L289) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L289-L293) - `vocab_size: int | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L295-L299) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L299-L303) - `n_tokens: int | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L306-L310) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L310-L314) - `padding_token_index: int | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L316-L320) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L320-L324) @@ -12001,7 +12002,7 @@ map a coordinate to a token ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L325-L349) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L329-L353) @@ -12015,7 +12016,7 @@ map a coordinate to a token ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L351-L356) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L355-L360) @@ -12026,7 +12027,7 @@ map a coordinate to a token ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L358-L369) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L362-L373) encode a string or list of strings into a list of tokens @@ -12042,7 +12043,7 @@ encode a string or list of strings into a list of tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L371-L384) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L375-L388) decode a list of tokens into a string or list of strings @@ -12050,14 +12051,14 @@ decode a list of tokens into a string or list of strings - `coordinate_tokens_coords: dict[tuple[int, int], int] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L389-L410) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L393-L414) - `coordinate_tokens_ids: dict[str, int] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L412-L422) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L416-L426) @@ -12068,7 +12069,7 @@ decode a list of tokens into a string or list of strings ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L427-L433) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L431-L437) returns a summary of the tokenization mode @@ -12080,7 +12081,7 @@ returns a summary of the tokenization mode ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L435-L441) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L439-L445) returns true if a tokenization mode is Adjacency list, Origin, Target, Path @@ -12092,7 +12093,7 @@ returns true if a tokenization mode is Adjacency list, Origin, Target, Path ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L443-L444) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L447-L448) @@ -12103,7 +12104,7 @@ returns true if a tokenization mode is Adjacency list, Origin, Target, Path ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L446-L455) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L450-L459) clears all cached properties @@ -12161,21 +12162,21 @@ docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) ## Contents -Contains `ALL_TOKENIZERS` and supporting limited-use functions. +Contains `get_all_tokenizers()` and supporting limited-use functions. -# `ALL_TOKENIZERS` -A comprehensive collection of all valid `MazeTokenizerModular` objects. +# `get_all_tokenizers()` +returns a comprehensive collection of all valid `MazeTokenizerModular` objects. This is an overwhelming majority subset of the set of all possible `MazeTokenizerModular` objects. -Other tokenizers not contained in `ALL_TOKENIZERS` may be possible to construct, but they are untested and not guaranteed to work. +Other tokenizers not contained in `get_all_tokenizers()` may be possible to construct, but they are untested and not guaranteed to work. This collection is in a separate module since it is expensive to compute and will grow more expensive as features are added to `MazeTokenizerModular`. ## Use Cases In general, uses for this module are limited to development of the library and specific research studying many tokenization behaviors. - Unit testing: - - Tokenizers to use in unit tests are sampled from `ALL_TOKENIZERS` + - Tokenizers to use in unit tests are sampled from `get_all_tokenizers()` - Large-scale tokenizer research: - - Specific research training models on many tokenization behaviors can use `ALL_TOKENIZERS` as the maximally inclusive collection - - `ALL_TOKENIZERS` may be subsequently filtered using `MazeTokenizerModular.has_element` + - Specific research training models on many tokenization behaviors can use `get_all_tokenizers()` as the maximally inclusive collection + - `get_all_tokenizers()` may be subsequently filtered using `MazeTokenizerModular.has_element` For other uses, it's likely that the computational expense can be avoided by using - `maze_tokenizer.get_all_tokenizer_hashes()` for membership checks - `utils.all_instances` for generating smaller subsets of `MazeTokenizerModular` or `_TokenizerElement` objects @@ -12202,21 +12203,21 @@ This collection should be expanded as specific tokenizers become canonical or po # `maze_dataset.tokenization.all_tokenizers` { #maze_dataset.tokenization.all_tokenizers } -Contains `ALL_TOKENIZERS` and supporting limited-use functions. +Contains `get_all_tokenizers()` and supporting limited-use functions. -### `ALL_TOKENIZERS` -A comprehensive collection of all valid `MazeTokenizerModular` objects. +### `get_all_tokenizers()` +returns a comprehensive collection of all valid `MazeTokenizerModular` objects. This is an overwhelming majority subset of the set of all possible `MazeTokenizerModular` objects. -Other tokenizers not contained in `ALL_TOKENIZERS` may be possible to construct, but they are untested and not guaranteed to work. +Other tokenizers not contained in `get_all_tokenizers()` may be possible to construct, but they are untested and not guaranteed to work. This collection is in a separate module since it is expensive to compute and will grow more expensive as features are added to `MazeTokenizerModular`. #### Use Cases In general, uses for this module are limited to development of the library and specific research studying many tokenization behaviors. - Unit testing: - - Tokenizers to use in unit tests are sampled from `ALL_TOKENIZERS` + - Tokenizers to use in unit tests are sampled from `get_all_tokenizers()` - Large-scale tokenizer research: - - Specific research training models on many tokenization behaviors can use `ALL_TOKENIZERS` as the maximally inclusive collection - - `ALL_TOKENIZERS` may be subsequently filtered using `MazeTokenizerModular.has_element` + - Specific research training models on many tokenization behaviors can use `get_all_tokenizers()` as the maximally inclusive collection + - `get_all_tokenizers()` may be subsequently filtered using `MazeTokenizerModular.has_element` For other uses, it's likely that the computational expense can be avoided by using - `maze_tokenizer.get_all_tokenizer_hashes()` for membership checks - `utils.all_instances` for generating smaller subsets of `MazeTokenizerModular` or `_TokenizerElement` objects @@ -12261,7 +12262,7 @@ Warning: This is an expensive function. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L84-L87) -Casts ALL_TOKENIZERS to a set. +Casts `get_all_tokenizers()` to a set. ### `def sample_all_tokenizers` { #sample_all_tokenizers } @@ -12275,7 +12276,7 @@ Casts ALL_TOKENIZERS to a set. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L96-L98) -Samples `n` tokenizers from `ALL_TOKENIZERS`. +Samples `n` tokenizers from `get_all_tokenizers()`. ### `def sample_tokenizers_for_test` { #sample_tokenizers_for_test } @@ -12289,7 +12290,7 @@ Samples `n` tokenizers from `ALL_TOKENIZERS`. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L101-L116) -Returns a sample of size `n` of unique elements from `ALL_TOKENIZERS`, +Returns a sample of size `n` of unique elements from `get_all_tokenizers()`, always including every element in `EVERY_TEST_TOKENIZERS`. @@ -12306,7 +12307,7 @@ always including every element in `EVERY_TEST_TOKENIZERS`. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L119-L181) -Computes, sorts, and saves the hashes of every member of `ALL_TOKENIZERS`. +Computes, sorts, and saves the hashes of every member of `get_all_tokenizers()`. @@ -12349,7 +12350,7 @@ turning a maze into text: `MazeTokenizerModular` and the legacy `TokenizationMod turning a maze into text: `MazeTokenizerModular` and the legacy `TokenizationMode` enum and `MazeTokenizer` class -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L0-L2235) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L0-L2256) @@ -12372,10 +12373,14 @@ error for tokenization ### `class TokenizationMode(enum.Enum):` { #TokenizationMode } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L68-L89) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L68-L93) + +legacy tokenization modes -LEGACY: mode of tokenization +> [!CAUTION] +> Legacy mode of tokenization. will still be around in future releases, but is no longer recommended for use. +> Use `MazeTokenizerModular` instead. ### Abbreviations: - `AOTP`: Ajacency list, Origin, Target, Path @@ -12411,7 +12416,7 @@ LEGACY: mode of tokenization ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L88-L89) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L92-L93) @@ -12430,7 +12435,7 @@ LEGACY: mode of tokenization ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L100-L104) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L104-L108) @@ -12445,14 +12450,14 @@ LEGACY: mode of tokenization ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L107-L125) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L111-L129) ### `class MazeTokenizer(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #MazeTokenizer } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L138-L455) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L142-L459) LEGACY Tokenizer for mazes @@ -12519,14 +12524,14 @@ Prepend `_` to the name to get a guaranteed type, and cause an exception if `max - `name: str ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L197-L202) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L201-L206) - `node_strings_map: Optional[Mapping[tuple[int, int], list[str]]] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L220-L229) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L224-L233) map a coordinate to a token @@ -12534,35 +12539,35 @@ map a coordinate to a token - `token_arr: list[str] | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L274-L278) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L278-L282) - `tokenizer_map: dict[str, int] | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L285-L289) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L289-L293) - `vocab_size: int | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L295-L299) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L299-L303) - `n_tokens: int | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L306-L310) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L310-L314) - `padding_token_index: int | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L316-L320) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L320-L324) @@ -12577,7 +12582,7 @@ map a coordinate to a token ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L325-L349) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L329-L353) @@ -12591,7 +12596,7 @@ map a coordinate to a token ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L351-L356) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L355-L360) @@ -12602,7 +12607,7 @@ map a coordinate to a token ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L358-L369) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L362-L373) encode a string or list of strings into a list of tokens @@ -12618,7 +12623,7 @@ encode a string or list of strings into a list of tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L371-L384) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L375-L388) decode a list of tokens into a string or list of strings @@ -12626,14 +12631,14 @@ decode a list of tokens into a string or list of strings - `coordinate_tokens_coords: dict[tuple[int, int], int] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L389-L410) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L393-L414) - `coordinate_tokens_ids: dict[str, int] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L412-L422) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L416-L426) @@ -12644,7 +12649,7 @@ decode a list of tokens into a string or list of strings ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L427-L433) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L431-L437) returns a summary of the tokenization mode @@ -12656,7 +12661,7 @@ returns a summary of the tokenization mode ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L435-L441) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L439-L445) returns true if a tokenization mode is Adjacency list, Origin, Target, Path @@ -12668,7 +12673,7 @@ returns true if a tokenization mode is Adjacency list, Origin, Target, Path ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L443-L444) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L447-L448) @@ -12679,7 +12684,7 @@ returns true if a tokenization mode is Adjacency list, Origin, Target, Path ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L446-L455) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L450-L459) clears all cached properties @@ -12737,12 +12742,12 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L679-L693) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L686-L700) mark a _TokenizerElement as unsupported. -Classes marked with this decorator won't show up in ALL_TOKENIZERS and thus wont be tested. +Classes marked with this decorator won't show up in `get_all_tokenizers()` and thus wont be tested. The classes marked in release 1.0.0 did work reliably before being marked, but they can't be instantiated since the decorator adds an abstract method. The decorator exists to prune the space of tokenizers returned by `all_instances` both for testing and usage. Previously, the space was too large, resulting in impractical runtimes. @@ -12751,13 +12756,10 @@ These decorators could be removed in future releases to expand the space of poss ### `class CoordTokenizers(__TokenizerElementNamespace):` { #CoordTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L722-L772) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L729-L781) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_CoordTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'coord_tokenizer'` @@ -12767,7 +12769,7 @@ ABC for namespaces ### `class CoordTokenizers.UT(CoordTokenizers._CoordTokenizer):` { #CoordTokenizers.UT } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L743-L748) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L752-L757) Unique token coordinate tokenizer. @@ -12793,7 +12795,7 @@ Unique token coordinate tokenizer. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L747-L748) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L756-L757) Converts a maze element into a list of tokens. @@ -12857,7 +12859,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class CoordTokenizers.CTT(CoordTokenizers._CoordTokenizer):` { #CoordTokenizers.CTT } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L750-L772) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L759-L781) Coordinate tuple tokenizer @@ -12906,7 +12908,7 @@ Coordinate tuple tokenizer ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L765-L772) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L774-L781) Converts a maze element into a list of tokens. @@ -12970,10 +12972,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeGroupings(__TokenizerElementNamespace):` { #EdgeGroupings } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L775-L880) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L784-L889) -Namespace for `EdgeGrouping` subclass hierarchy used by `AdjListTokenizer`. +Namespace for `_EdgeGrouping` subclass hierarchy used by `_AdjListTokenizer`. - `key = 'edge_grouping'` @@ -12983,7 +12985,7 @@ Namespace for `EdgeGrouping` subclass hierarchy used by `AdjListTokenizer`. ### `class EdgeGroupings.Ungrouped(EdgeGroupings._EdgeGrouping):` { #EdgeGroupings.Ungrouped } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L817-L838) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L826-L847) No grouping occurs, each edge is tokenized individually. @@ -13067,7 +13069,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeGroupings.ByLeadingCoord(EdgeGroupings._EdgeGrouping):` { #EdgeGroupings.ByLeadingCoord } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L840-L880) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L849-L889) All edges with the same leading coord are grouped together. @@ -13117,7 +13119,7 @@ Edge tokenizations contain 2 parts: a connector (or wall) token and a coord or c ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L841-L880) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L850-L889) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -13204,10 +13206,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgePermuters(__TokenizerElementNamespace):` { #EdgePermuters } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L883-L953) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L892-L962) -Namespace for `EdgePermuter` subclass hierarchy used by `AdjListTokenizer`. +Namespace for `_EdgePermuter` subclass hierarchy used by `_AdjListTokenizer`. - `key = 'edge_permuter'` @@ -13217,7 +13219,7 @@ Namespace for `EdgePermuter` subclass hierarchy used by `AdjListTokenizer`. ### `class EdgePermuters.SortedCoords(EdgePermuters._EdgePermuter):` { #EdgePermuters.SortedCoords } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L917-L933) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L926-L942) returns a sorted representation. useful for checking consistency @@ -13291,7 +13293,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgePermuters.RandomCoords(EdgePermuters._EdgePermuter):` { #EdgePermuters.RandomCoords } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L935-L942) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L944-L951) Permutes each edge randomly. @@ -13365,7 +13367,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgePermuters.BothCoords(EdgePermuters._EdgePermuter):` { #EdgePermuters.BothCoords } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L944-L953) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L953-L962) Includes both possible permutations of every edge in the output. @@ -13441,10 +13443,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeSubsets(__TokenizerElementNamespace):` { #EdgeSubsets } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L956-L1014) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L965-L1023) -Namespace for `EdgeSubset` subclass hierarchy used by `AdjListTokenizer`. +Namespace for `_EdgeSubset` subclass hierarchy used by `_AdjListTokenizer`. - `key = 'edge_subset'` @@ -13454,7 +13456,7 @@ Namespace for `EdgeSubset` subclass hierarchy used by `AdjListTokenizer`. ### `class EdgeSubsets.AllLatticeEdges(EdgeSubsets._EdgeSubset):` { #EdgeSubsets.AllLatticeEdges } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L983-L991) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L992-L1000) All 2n**2-2n edges of the lattice are tokenized. @@ -13529,7 +13531,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class EdgeSubsets.ConnectionEdges(EdgeSubsets._EdgeSubset):` { #EdgeSubsets.ConnectionEdges } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L993-L1014) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1002-L1023) Only edges which contain a connection are tokenized. @@ -13614,13 +13616,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class AdjListTokenizers(__TokenizerElementNamespace):` { #AdjListTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1017-L1255) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1026-L1266) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_AdjListTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'adj_list_tokenizer'` @@ -13630,7 +13629,7 @@ ABC for namespaces ### `class AdjListTokenizers.AdjListCoord(AdjListTokenizers._AdjListTokenizer):` { #AdjListTokenizers.AdjListCoord } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1197-L1223) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1208-L1234) Represents an edge group as tokens for the leading coord followed by coord tokens for the other group members. @@ -13720,7 +13719,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class AdjListTokenizers.AdjListCardinal(AdjListTokenizers._AdjListTokenizer):` { #AdjListTokenizers.AdjListCardinal } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1225-L1255) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1236-L1266) Represents an edge group as coord tokens for the leading coord and cardinal tokens relative to the leading coord for the other group members. @@ -13813,13 +13812,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class TargetTokenizers(__TokenizerElementNamespace):` { #TargetTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1258-L1307) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1269-L1320) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_TargetTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'target_tokenizer'` @@ -13829,7 +13825,7 @@ ABC for namespaces ### `class TargetTokenizers.Unlabeled(TargetTokenizers._TargetTokenizer):` { #TargetTokenizers.Unlabeled } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1278-L1307) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1291-L1320) Targets are simply listed as coord tokens. @@ -13863,7 +13859,7 @@ Targets are simply listed as coord tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1286-L1303) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1299-L1316) Returns tokens representing the target. @@ -13875,7 +13871,7 @@ Returns tokens representing the target. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1305-L1307) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1318-L1320) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -13961,13 +13957,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes(__TokenizerElementNamespace):` { #StepSizes } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1310-L1401) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1323-L1416) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepSize` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'step_size'` @@ -13977,7 +13970,7 @@ ABC for namespaces ### `class StepSizes.Singles(StepSizes._StepSize):` { #StepSizes.Singles } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1339-L1348) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1354-L1363) Every coord in `maze.solution` is represented. @@ -14053,7 +14046,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes.Straightaways(StepSizes._StepSize):` { #StepSizes.Straightaways } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1350-L1368) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1365-L1383) Only coords where the path turns are represented in the path. @@ -14078,7 +14071,7 @@ specified by the coords at the turns. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1351-L1368) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1366-L1383) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -14166,7 +14159,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes.Forks(StepSizes._StepSize):` { #StepSizes.Forks } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1370-L1380) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1385-L1395) Only coords at forks, where the path has >=2 options for the next step are included. @@ -14243,7 +14236,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepSizes.ForksAndStraightaways(StepSizes._StepSize):` { #StepSizes.ForksAndStraightaways } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1382-L1401) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1397-L1416) Includes the union of the coords included by `Forks` and `Straightaways`. @@ -14267,7 +14260,7 @@ See documentation for those classes for details. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1383-L1401) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1398-L1416) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -14355,13 +14348,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers(__TokenizerElementNamespace):` { #StepTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1404-L1522) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1419-L1539) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'step_tokenizers'` @@ -14376,7 +14366,7 @@ ABC for namespaces ### `class StepTokenizers.Coord(StepTokenizers._StepTokenizer):` { #StepTokenizers.Coord } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1440-L1453) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1457-L1470) A direct tokenization of the end position coord represents the step. @@ -14405,7 +14395,7 @@ A direct tokenization of the end position coord represents the step. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1446-L1453) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1463-L1470) Tokenizes a single step in the solution. @@ -14472,7 +14462,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers.Cardinal(StepTokenizers._StepTokenizer):` { #StepTokenizers.Cardinal } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1455-L1467) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1472-L1484) A step is tokenized with a cardinal direction token. @@ -14502,7 +14492,7 @@ It is the direction of the step from the starting position along the solution. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1462-L1467) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1479-L1484) Tokenizes a single step in the solution. @@ -14569,7 +14559,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers.Relative(StepTokenizers._StepTokenizer):` { #StepTokenizers.Relative } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1469-L1495) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1486-L1512) Tokenizes a solution step using relative first-person directions (right, left, forward, etc.). @@ -14600,7 +14590,7 @@ Similarly to `Cardinal`, the direction is that of the step from the starting pos ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1476-L1495) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1493-L1512) Tokenizes a single step in the solution. @@ -14667,7 +14657,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class StepTokenizers.Distance(StepTokenizers._StepTokenizer):` { #StepTokenizers.Distance } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1497-L1510) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1514-L1527) A count of the number of individual steps from the starting point to the end point. @@ -14699,7 +14689,7 @@ This constraint is enforced in `_PathTokenizer.is_valid`. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1506-L1510) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1523-L1527) Tokenizes a single step in the solution. @@ -14766,13 +14756,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class PathTokenizers(__TokenizerElementNamespace):` { #PathTokenizers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1525-L1645) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1542-L1664) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PathTokenizer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'path_tokenizer'` @@ -14782,7 +14769,7 @@ ABC for namespaces ### `class PathTokenizers.StepSequence(PathTokenizers._PathTokenizer, abc.ABC):` { #PathTokenizers.StepSequence } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1543-L1645) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1562-L1664) Any `PathTokenizer` where the tokenization may be assembled from token subsequences, each of which represents a step along the path. @@ -14847,7 +14834,7 @@ Allows for a sequence of leading and trailing tokens which don't fit the step pa ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1569-L1581) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1588-L1600) Returns tokens representing the solution path. @@ -14859,7 +14846,7 @@ Returns tokens representing the solution path. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1634-L1645) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1653-L1664) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. @@ -14945,13 +14932,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class PromptSequencers(__TokenizerElementNamespace):` { #PromptSequencers } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1648-L1879) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1667-L1900) -ABC for namespaces - -### Properties -- key: The binding used in `MazeTokenizerModular` for instances of the classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PromptSequencer` subclass hierarchy used by `MazeTokenizerModular`. - `key = 'prompt_sequencer'` @@ -14961,7 +14945,7 @@ ABC for namespaces ### `class PromptSequencers.AOTP(PromptSequencers._PromptSequencer):` { #PromptSequencers.AOTP } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1801-L1843) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1822-L1864) Sequences a prompt as [adjacency list, origin, target, path]. @@ -15057,7 +15041,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class PromptSequencers.AOP(PromptSequencers._PromptSequencer):` { #PromptSequencers.AOP } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1845-L1879) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1866-L1900) Sequences a prompt as [adjacency list, origin, path]. @@ -15146,7 +15130,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ### `class MazeTokenizerModular(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` { #MazeTokenizerModular } -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1882-L2174) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1903-L2195) Tokenizer for mazes @@ -15182,7 +15166,7 @@ Tokenizer for mazes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1904-L1908) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1925-L1929) @@ -15193,7 +15177,7 @@ Tokenizer for mazes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1914-L1924) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1935-L1945) filename-safe base64 encoding of the hash @@ -15201,7 +15185,7 @@ filename-safe base64 encoding of the hash - `tokenizer_elements: list[maze_dataset.tokenization.maze_tokenizer._TokenizerElement] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1928-L1930) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1949-L1951) @@ -15212,7 +15196,7 @@ filename-safe base64 encoding of the hash ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1932-L1947) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1953-L1968) Returns a string representation of the tree of tokenizer elements contained in `self`. @@ -15223,7 +15207,7 @@ Returns a string representation of the tree of tokenizer elements contained in ` - `tokenizer_element_tree_concrete ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1949-L1954) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1970-L1975) Property wrapper for `tokenizer_element_tree` so that it can be used in `properties_to_serialize`. @@ -15235,7 +15219,7 @@ Property wrapper for `tokenizer_element_tree` so that it can be used in `propert ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1956-L1960) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1977-L1981) Nested dictionary of the internal `TokenizerElement`s. @@ -15243,7 +15227,7 @@ Nested dictionary of the internal `TokenizerElement`s. - `name: str ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1962-L1965) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1983-L1986) Serializes MazeTokenizer into a key for encoding in zanj @@ -15255,7 +15239,7 @@ Serializes MazeTokenizer into a key for encoding in zanj ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1967-L1974) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1988-L1995) Single-level dictionary of the internal `TokenizerElement`s. @@ -15270,7 +15254,7 @@ Single-level dictionary of the internal `TokenizerElement`s. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1993-L2009) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2014-L2030) Returns True if the `MazeTokenizerModular` instance contains ALL of the items specified in `elements`. @@ -15290,7 +15274,7 @@ If a class is provided, then comparison isdone via `isinstance`. I.e., any insta ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2011-L2016) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2032-L2037) Returns `True` if `self` is a valid tokenizer. @@ -15303,7 +15287,7 @@ Evaluates the validity of all of `self.tokenizer_elements` according to each one ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2018-L2025) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2039-L2046) Returns if `self` has identical stringification behavior as any legacy `MazeTokenizer`. @@ -15315,12 +15299,12 @@ Returns if `self` has identical stringification behavior as any legacy `MazeToke ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2027-L2054) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2048-L2075) -Returns if the tokenizer is returned by `all_tokenizers._get_all_tokenizers`, the set of tested and reliable tokenizers. +Returns if the tokenizer is returned by `all_tokenizers.get_all_tokenizers`, the set of tested and reliable tokenizers. -Since evaluating `all_tokenizers._get_all_tokenizers` is expensive, +Since evaluating `all_tokenizers.get_all_tokenizers` is expensive, instead checks for membership of `self`'s hash in `get_all_tokenizer_hashes()`. if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tested. @@ -15332,7 +15316,7 @@ if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2056-L2057) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2077-L2078) @@ -15343,7 +15327,7 @@ if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2059-L2060) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2080-L2081) @@ -15357,7 +15341,7 @@ if `do_assert` is `True`, raises an `AssertionError` if the tokenizer is not tes ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2065-L2080) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2086-L2101) Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent `MazeTokenizerModular` instance. @@ -15372,7 +15356,7 @@ Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent `MazeToken ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2084-L2094) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2105-L2115) Infers most `MazeTokenizerModular` parameters from a full sequence of tokens. @@ -15380,7 +15364,7 @@ Infers most `MazeTokenizerModular` parameters from a full sequence of tokens. - `token_arr: list[str] | None ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2096-L2099) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2117-L2120) map from index to token @@ -15388,7 +15372,7 @@ map from index to token - `tokenizer_map: dict[str, int] ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2101-L2104) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2122-L2125) map from token to index @@ -15396,7 +15380,7 @@ map from token to index - `vocab_size: int ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2106-L2109) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2127-L2130) Number of tokens in the static vocab @@ -15404,14 +15388,14 @@ Number of tokens in the static vocab - `n_tokens: int ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2111-L2115) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2132-L2136) - `padding_token_index: int ` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2117-L2119) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2138-L2140) @@ -15422,7 +15406,7 @@ Number of tokens in the static vocab ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2124-L2129) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2145-L2150) Converts maze into a list of tokens. @@ -15437,7 +15421,7 @@ Converts maze into a list of tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2131-L2136) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2152-L2157) @@ -15451,7 +15435,7 @@ Converts maze into a list of tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2138-L2147) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2159-L2168) @@ -15462,7 +15446,7 @@ Converts maze into a list of tokens. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2149-L2160) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2170-L2181) encode a string or list of strings into a list of tokens @@ -15474,7 +15458,7 @@ encode a string or list of strings into a list of tokens ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2162-L2174) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2183-L2195) decode a list of tokens into a string or list of strings @@ -15532,7 +15516,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls `Serial ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2183-L2207) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2204-L2228) set path to tokenizer hashes, and reload the hashes if needed @@ -15549,7 +15533,7 @@ However, this might not always work, so we provide a way to change this. ``` -[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2225-L2236) +[View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2246-L2257) diff --git a/docs/combined/maze_dataset.txt b/docs/combined/maze_dataset.txt index 0577800..928effe 100644 --- a/docs/combined/maze_dataset.txt +++ b/docs/combined/maze_dataset.txt @@ -685,7 +685,7 @@ View Source on GitHub return the dataset as tokens according to the passed maze_tokenizer the maze_tokenizer should be either a MazeTokenizer or a -ModularMazeTokenizer +MazeTokenizerModular if join_tokens_individual_maze is True, then the tokens of each maze are joined with a space, and the result is a list of strings. i.e.: @@ -1264,7 +1264,8 @@ def generate_random_path allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] View Source on GitHub @@ -1289,6 +1290,8 @@ Parameters: deadend (defaults to False) (defaults to False) - deadend_end : bool whether to force the end position to be a deadend (defaults to False) (defaults to False) +- endpoints_not_equal : bool whether to ensure tha the start and end + point are not the same (defaults to False) Returns: @@ -1658,12 +1661,20 @@ down, up, right, left as vectors - VOCAB: types._VOCAB_BASE = _VOCAB_BASE(ADJLIST_START='', ADJLIST_END='', TARGET_START='', TARGET_END='', ORIGIN_START='', ORIGIN_END='', PATH_START='', PATH_END='', CONNECTOR='<-->', ADJACENCY_ENDLINE=';', PADDING='', COORD_PRE='(', COORD_INTRA=',', COORD_POST=')', TARGET_INTRA='=', TARGET_POST='||', PATH_INTRA=':', PATH_POST='THEN', NEGATIVE='-', UNKNOWN='', TARGET_A='TARGET_A', TARGET_B='TARGET_B', TARGET_C='TARGET_C', TARGET_D='TARGET_D', TARGET_E='TARGET_E', TARGET_F='TARGET_F', TARGET_G='TARGET_G', TARGET_H='TARGET_H', TARGET_I='TARGET_I', TARGET_J='TARGET_J', TARGET_K='TARGET_K', TARGET_L='TARGET_L', TARGET_M='TARGET_M', TARGET_N='TARGET_N', TARGET_O='TARGET_O', TARGET_P='TARGET_P', TARGET_Q='TARGET_Q', TARGET_R='TARGET_R', TARGET_S='TARGET_S', TARGET_T='TARGET_T', TARGET_U='TARGET_U', TARGET_V='TARGET_V', TARGET_W='TARGET_W', TARGET_X='TARGET_X', TARGET_Y='TARGET_Y', TARGET_Z='TARGET_Z', TARGET_NORTH='TARGET_NORTH', TARGET_SOUTH='TARGET_SOUTH', TARGET_EAST='TARGET_EAST', TARGET_WEST='TARGET_WEST', TARGET_NORTHEAST='TARGET_NORTHEAST', TARGET_NORTHWEST='TARGET_NORTHWEST', TARGET_SOUTHEAST='TARGET_SOUTHEAST', TARGET_SOUTHWEST='TARGET_SOUTHWEST', TARGET_CENTER='TARGET_CENTER', PATH_NORTH='NORTH', PATH_SOUTH='SOUTH', PATH_EAST='EAST', PATH_WEST='WEST', PATH_FORWARD='FORWARD', PATH_BACKWARD='BACKWARD', PATH_LEFT='LEFT', PATH_RIGHT='RIGHT', PATH_STAY='STAY', I_000='+0', I_001='+1', I_002='+2', I_003='+3', I_004='+4', I_005='+5', I_006='+6', I_007='+7', I_008='+8', I_009='+9', I_010='+10', I_011='+11', I_012='+12', I_013='+13', I_014='+14', I_015='+15', I_016='+16', I_017='+17', I_018='+18', I_019='+19', I_020='+20', I_021='+21', I_022='+22', I_023='+23', I_024='+24', I_025='+25', I_026='+26', I_027='+27', I_028='+28', I_029='+29', I_030='+30', I_031='+31', I_032='+32', I_033='+33', I_034='+34', I_035='+35', I_036='+36', I_037='+37', I_038='+38', I_039='+39', I_040='+40', I_041='+41', I_042='+42', I_043='+43', I_044='+44', I_045='+45', I_046='+46', I_047='+47', I_048='+48', I_049='+49', I_050='+50', I_051='+51', I_052='+52', I_053='+53', I_054='+54', I_055='+55', I_056='+56', I_057='+57', I_058='+58', I_059='+59', I_060='+60', I_061='+61', I_062='+62', I_063='+63', I_064='+64', I_065='+65', I_066='+66', I_067='+67', I_068='+68', I_069='+69', I_070='+70', I_071='+71', I_072='+72', I_073='+73', I_074='+74', I_075='+75', I_076='+76', I_077='+77', I_078='+78', I_079='+79', I_080='+80', I_081='+81', I_082='+82', I_083='+83', I_084='+84', I_085='+85', I_086='+86', I_087='+87', I_088='+88', I_089='+89', I_090='+90', I_091='+91', I_092='+92', I_093='+93', I_094='+94', I_095='+95', I_096='+96', I_097='+97', I_098='+98', I_099='+99', I_100='+100', I_101='+101', I_102='+102', I_103='+103', I_104='+104', I_105='+105', I_106='+106', I_107='+107', I_108='+108', I_109='+109', I_110='+110', I_111='+111', I_112='+112', I_113='+113', I_114='+114', I_115='+115', I_116='+116', I_117='+117', I_118='+118', I_119='+119', I_120='+120', I_121='+121', I_122='+122', I_123='+123', I_124='+124', I_125='+125', I_126='+126', I_127='+127', I_128='+128', I_129='+129', I_130='+130', I_131='+131', I_132='+132', I_133='+133', I_134='+134', I_135='+135', I_136='+136', I_137='+137', I_138='+138', I_139='+139', I_140='+140', I_141='+141', I_142='+142', I_143='+143', I_144='+144', I_145='+145', I_146='+146', I_147='+147', I_148='+148', I_149='+149', I_150='+150', I_151='+151', I_152='+152', I_153='+153', I_154='+154', I_155='+155', I_156='+156', I_157='+157', I_158='+158', I_159='+159', I_160='+160', I_161='+161', I_162='+162', I_163='+163', I_164='+164', I_165='+165', I_166='+166', I_167='+167', I_168='+168', I_169='+169', I_170='+170', I_171='+171', I_172='+172', I_173='+173', I_174='+174', I_175='+175', I_176='+176', I_177='+177', I_178='+178', I_179='+179', I_180='+180', I_181='+181', I_182='+182', I_183='+183', I_184='+184', I_185='+185', I_186='+186', I_187='+187', I_188='+188', I_189='+189', I_190='+190', I_191='+191', I_192='+192', I_193='+193', I_194='+194', I_195='+195', I_196='+196', I_197='+197', I_198='+198', I_199='+199', I_200='+200', I_201='+201', I_202='+202', I_203='+203', I_204='+204', I_205='+205', I_206='+206', I_207='+207', I_208='+208', I_209='+209', I_210='+210', I_211='+211', I_212='+212', I_213='+213', I_214='+214', I_215='+215', I_216='+216', I_217='+217', I_218='+218', I_219='+219', I_220='+220', I_221='+221', I_222='+222', I_223='+223', I_224='+224', I_225='+225', I_226='+226', I_227='+227', I_228='+228', I_229='+229', I_230='+230', I_231='+231', I_232='+232', I_233='+233', I_234='+234', I_235='+235', I_236='+236', I_237='+237', I_238='+238', I_239='+239', I_240='+240', I_241='+241', I_242='+242', I_243='+243', I_244='+244', I_245='+245', I_246='+246', I_247='+247', I_248='+248', I_249='+249', I_250='+250', I_251='+251', I_252='+252', I_253='+253', I_254='+254', I_255='+255', CTT_0='0', CTT_1='1', CTT_2='2', CTT_3='3', CTT_4='4', CTT_5='5', CTT_6='6', CTT_7='7', CTT_8='8', CTT_9='9', CTT_10='10', CTT_11='11', CTT_12='12', CTT_13='13', CTT_14='14', CTT_15='15', CTT_16='16', CTT_17='17', CTT_18='18', CTT_19='19', CTT_20='20', CTT_21='21', CTT_22='22', CTT_23='23', CTT_24='24', CTT_25='25', CTT_26='26', CTT_27='27', CTT_28='28', CTT_29='29', CTT_30='30', CTT_31='31', CTT_32='32', CTT_33='33', CTT_34='34', CTT_35='35', CTT_36='36', CTT_37='37', CTT_38='38', CTT_39='39', CTT_40='40', CTT_41='41', CTT_42='42', CTT_43='43', CTT_44='44', CTT_45='45', CTT_46='46', CTT_47='47', CTT_48='48', CTT_49='49', CTT_50='50', CTT_51='51', CTT_52='52', CTT_53='53', CTT_54='54', CTT_55='55', CTT_56='56', CTT_57='57', CTT_58='58', CTT_59='59', CTT_60='60', CTT_61='61', CTT_62='62', CTT_63='63', CTT_64='64', CTT_65='65', CTT_66='66', CTT_67='67', CTT_68='68', CTT_69='69', CTT_70='70', CTT_71='71', CTT_72='72', CTT_73='73', CTT_74='74', CTT_75='75', CTT_76='76', CTT_77='77', CTT_78='78', CTT_79='79', CTT_80='80', CTT_81='81', CTT_82='82', CTT_83='83', CTT_84='84', CTT_85='85', CTT_86='86', CTT_87='87', CTT_88='88', CTT_89='89', CTT_90='90', CTT_91='91', CTT_92='92', CTT_93='93', CTT_94='94', CTT_95='95', CTT_96='96', CTT_97='97', CTT_98='98', CTT_99='99', CTT_100='100', CTT_101='101', CTT_102='102', CTT_103='103', CTT_104='104', CTT_105='105', CTT_106='106', CTT_107='107', CTT_108='108', CTT_109='109', CTT_110='110', CTT_111='111', CTT_112='112', CTT_113='113', CTT_114='114', CTT_115='115', CTT_116='116', CTT_117='117', CTT_118='118', CTT_119='119', CTT_120='120', CTT_121='121', CTT_122='122', CTT_123='123', CTT_124='124', CTT_125='125', CTT_126='126', CTT_127='127', I_N256='-256', I_N255='-255', I_N254='-254', I_N253='-253', I_N252='-252', I_N251='-251', I_N250='-250', I_N249='-249', I_N248='-248', I_N247='-247', I_N246='-246', I_N245='-245', I_N244='-244', I_N243='-243', I_N242='-242', I_N241='-241', I_N240='-240', I_N239='-239', I_N238='-238', I_N237='-237', I_N236='-236', I_N235='-235', I_N234='-234', I_N233='-233', I_N232='-232', I_N231='-231', I_N230='-230', I_N229='-229', I_N228='-228', I_N227='-227', I_N226='-226', I_N225='-225', I_N224='-224', I_N223='-223', I_N222='-222', I_N221='-221', I_N220='-220', I_N219='-219', I_N218='-218', I_N217='-217', I_N216='-216', I_N215='-215', I_N214='-214', I_N213='-213', I_N212='-212', I_N211='-211', I_N210='-210', I_N209='-209', I_N208='-208', I_N207='-207', I_N206='-206', I_N205='-205', I_N204='-204', I_N203='-203', I_N202='-202', I_N201='-201', I_N200='-200', I_N199='-199', I_N198='-198', I_N197='-197', I_N196='-196', I_N195='-195', I_N194='-194', I_N193='-193', I_N192='-192', I_N191='-191', I_N190='-190', I_N189='-189', I_N188='-188', I_N187='-187', I_N186='-186', I_N185='-185', I_N184='-184', I_N183='-183', I_N182='-182', I_N181='-181', I_N180='-180', I_N179='-179', I_N178='-178', I_N177='-177', I_N176='-176', I_N175='-175', I_N174='-174', I_N173='-173', I_N172='-172', I_N171='-171', I_N170='-170', I_N169='-169', I_N168='-168', I_N167='-167', I_N166='-166', I_N165='-165', I_N164='-164', I_N163='-163', I_N162='-162', I_N161='-161', I_N160='-160', I_N159='-159', I_N158='-158', I_N157='-157', I_N156='-156', I_N155='-155', I_N154='-154', I_N153='-153', I_N152='-152', I_N151='-151', I_N150='-150', I_N149='-149', I_N148='-148', I_N147='-147', I_N146='-146', I_N145='-145', I_N144='-144', I_N143='-143', I_N142='-142', I_N141='-141', I_N140='-140', I_N139='-139', I_N138='-138', I_N137='-137', I_N136='-136', I_N135='-135', I_N134='-134', I_N133='-133', I_N132='-132', I_N131='-131', I_N130='-130', I_N129='-129', I_N128='-128', I_N127='-127', I_N126='-126', I_N125='-125', I_N124='-124', I_N123='-123', I_N122='-122', I_N121='-121', I_N120='-120', I_N119='-119', I_N118='-118', I_N117='-117', I_N116='-116', I_N115='-115', I_N114='-114', I_N113='-113', I_N112='-112', I_N111='-111', I_N110='-110', I_N109='-109', I_N108='-108', I_N107='-107', I_N106='-106', I_N105='-105', I_N104='-104', I_N103='-103', I_N102='-102', I_N101='-101', I_N100='-100', I_N099='-99', I_N098='-98', I_N097='-97', I_N096='-96', I_N095='-95', I_N094='-94', I_N093='-93', I_N092='-92', I_N091='-91', I_N090='-90', I_N089='-89', I_N088='-88', I_N087='-87', I_N086='-86', I_N085='-85', I_N084='-84', I_N083='-83', I_N082='-82', I_N081='-81', I_N080='-80', I_N079='-79', I_N078='-78', I_N077='-77', I_N076='-76', I_N075='-75', I_N074='-74', I_N073='-73', I_N072='-72', I_N071='-71', I_N070='-70', I_N069='-69', I_N068='-68', I_N067='-67', I_N066='-66', I_N065='-65', I_N064='-64', I_N063='-63', I_N062='-62', I_N061='-61', I_N060='-60', I_N059='-59', I_N058='-58', I_N057='-57', I_N056='-56', I_N055='-55', I_N054='-54', I_N053='-53', I_N052='-52', I_N051='-51', I_N050='-50', I_N049='-49', I_N048='-48', I_N047='-47', I_N046='-46', I_N045='-45', I_N044='-44', I_N043='-43', I_N042='-42', I_N041='-41', I_N040='-40', I_N039='-39', I_N038='-38', I_N037='-37', I_N036='-36', I_N035='-35', I_N034='-34', I_N033='-33', I_N032='-32', I_N031='-31', I_N030='-30', I_N029='-29', I_N028='-28', I_N027='-27', I_N026='-26', I_N025='-25', I_N024='-24', I_N023='-23', I_N022='-22', I_N021='-21', I_N020='-20', I_N019='-19', I_N018='-18', I_N017='-17', I_N016='-16', I_N015='-15', I_N014='-14', I_N013='-13', I_N012='-12', I_N011='-11', I_N010='-10', I_N009='-9', I_N008='-8', I_N007='-7', I_N006='-6', I_N005='-5', I_N004='-4', I_N003='-3', I_N002='-2', I_N001='-1', PATH_PRE='STEP', ADJLIST_PRE='ADJ_GROUP', ADJLIST_INTRA='&', ADJLIST_WALL='', RESERVE_708='', RESERVE_709='', RESERVE_710='', RESERVE_711='', RESERVE_712='', RESERVE_713='', RESERVE_714='', RESERVE_715='', RESERVE_716='', RESERVE_717='', RESERVE_718='', RESERVE_719='', RESERVE_720='', RESERVE_721='', RESERVE_722='', RESERVE_723='', RESERVE_724='', RESERVE_725='', RESERVE_726='', RESERVE_727='', RESERVE_728='', RESERVE_729='', RESERVE_730='', RESERVE_731='', RESERVE_732='', RESERVE_733='', RESERVE_734='', RESERVE_735='', RESERVE_736='', RESERVE_737='', RESERVE_738='', RESERVE_739='', RESERVE_740='', RESERVE_741='', RESERVE_742='', RESERVE_743='', RESERVE_744='', RESERVE_745='', RESERVE_746='', RESERVE_747='', RESERVE_748='', RESERVE_749='', RESERVE_750='', RESERVE_751='', RESERVE_752='', RESERVE_753='', RESERVE_754='', RESERVE_755='', RESERVE_756='', RESERVE_757='', RESERVE_758='', RESERVE_759='', RESERVE_760='', RESERVE_761='', RESERVE_762='', RESERVE_763='', RESERVE_764='', RESERVE_765='', RESERVE_766='', RESERVE_767='', RESERVE_768='', RESERVE_769='', RESERVE_770='', RESERVE_771='', RESERVE_772='', RESERVE_773='', RESERVE_774='', RESERVE_775='', RESERVE_776='', RESERVE_777='', RESERVE_778='', RESERVE_779='', RESERVE_780='', RESERVE_781='', RESERVE_782='', RESERVE_783='', RESERVE_784='', RESERVE_785='', RESERVE_786='', RESERVE_787='', RESERVE_788='', RESERVE_789='', RESERVE_790='', RESERVE_791='', RESERVE_792='', RESERVE_793='', RESERVE_794='', RESERVE_795='', RESERVE_796='', RESERVE_797='', RESERVE_798='', RESERVE_799='', RESERVE_800='', RESERVE_801='', RESERVE_802='', RESERVE_803='', RESERVE_804='', RESERVE_805='', RESERVE_806='', RESERVE_807='', RESERVE_808='', RESERVE_809='', RESERVE_810='', RESERVE_811='', RESERVE_812='', RESERVE_813='', RESERVE_814='', RESERVE_815='', RESERVE_816='', RESERVE_817='', RESERVE_818='', RESERVE_819='', RESERVE_820='', RESERVE_821='', RESERVE_822='', RESERVE_823='', RESERVE_824='', RESERVE_825='', RESERVE_826='', RESERVE_827='', RESERVE_828='', RESERVE_829='', RESERVE_830='', RESERVE_831='', RESERVE_832='', RESERVE_833='', RESERVE_834='', RESERVE_835='', RESERVE_836='', RESERVE_837='', RESERVE_838='', RESERVE_839='', RESERVE_840='', RESERVE_841='', RESERVE_842='', RESERVE_843='', RESERVE_844='', RESERVE_845='', RESERVE_846='', RESERVE_847='', RESERVE_848='', RESERVE_849='', RESERVE_850='', RESERVE_851='', RESERVE_852='', RESERVE_853='', RESERVE_854='', RESERVE_855='', RESERVE_856='', RESERVE_857='', RESERVE_858='', RESERVE_859='', RESERVE_860='', RESERVE_861='', RESERVE_862='', RESERVE_863='', RESERVE_864='', RESERVE_865='', RESERVE_866='', RESERVE_867='', RESERVE_868='', RESERVE_869='', RESERVE_870='', RESERVE_871='', RESERVE_872='', RESERVE_873='', RESERVE_874='', RESERVE_875='', RESERVE_876='', RESERVE_877='', RESERVE_878='', RESERVE_879='', RESERVE_880='', RESERVE_881='', RESERVE_882='', RESERVE_883='', RESERVE_884='', RESERVE_885='', RESERVE_886='', RESERVE_887='', RESERVE_888='', RESERVE_889='', RESERVE_890='', RESERVE_891='', RESERVE_892='', RESERVE_893='', RESERVE_894='', RESERVE_895='', RESERVE_896='', RESERVE_897='', RESERVE_898='', RESERVE_899='', RESERVE_900='', RESERVE_901='', RESERVE_902='', RESERVE_903='', RESERVE_904='', RESERVE_905='', RESERVE_906='', RESERVE_907='', RESERVE_908='', RESERVE_909='', RESERVE_910='', RESERVE_911='', RESERVE_912='', RESERVE_913='', RESERVE_914='', RESERVE_915='', RESERVE_916='', RESERVE_917='', RESERVE_918='', RESERVE_919='', RESERVE_920='', RESERVE_921='', RESERVE_922='', RESERVE_923='', RESERVE_924='', RESERVE_925='', RESERVE_926='', RESERVE_927='', RESERVE_928='', RESERVE_929='', RESERVE_930='', RESERVE_931='', RESERVE_932='', RESERVE_933='', RESERVE_934='', RESERVE_935='', RESERVE_936='', RESERVE_937='', RESERVE_938='', RESERVE_939='', RESERVE_940='', RESERVE_941='', RESERVE_942='', RESERVE_943='', RESERVE_944='', RESERVE_945='', RESERVE_946='', RESERVE_947='', RESERVE_948='', RESERVE_949='', RESERVE_950='', RESERVE_951='', RESERVE_952='', RESERVE_953='', RESERVE_954='', RESERVE_955='', RESERVE_956='', RESERVE_957='', RESERVE_958='', RESERVE_959='', RESERVE_960='', RESERVE_961='', RESERVE_962='', RESERVE_963='', RESERVE_964='', RESERVE_965='', RESERVE_966='', RESERVE_967='', RESERVE_968='', RESERVE_969='', RESERVE_970='', RESERVE_971='', RESERVE_972='', RESERVE_973='', RESERVE_974='', RESERVE_975='', RESERVE_976='', RESERVE_977='', RESERVE_978='', RESERVE_979='', RESERVE_980='', RESERVE_981='', RESERVE_982='', RESERVE_983='', RESERVE_984='', RESERVE_985='', RESERVE_986='', RESERVE_987='', RESERVE_988='', RESERVE_989='', RESERVE_990='', RESERVE_991='', RESERVE_992='', RESERVE_993='', RESERVE_994='', RESERVE_995='', RESERVE_996='', RESERVE_997='', RESERVE_998='', RESERVE_999='', RESERVE_1000='', RESERVE_1001='', RESERVE_1002='', RESERVE_1003='', RESERVE_1004='', RESERVE_1005='', RESERVE_1006='', RESERVE_1007='', RESERVE_1008='', RESERVE_1009='', RESERVE_1010='', RESERVE_1011='', RESERVE_1012='', RESERVE_1013='', RESERVE_1014='', RESERVE_1015='', RESERVE_1016='', RESERVE_1017='', RESERVE_1018='', RESERVE_1019='', RESERVE_1020='', RESERVE_1021='', RESERVE_1022='', RESERVE_1023='', RESERVE_1024='', RESERVE_1025='', RESERVE_1026='', RESERVE_1027='', RESERVE_1028='', RESERVE_1029='', RESERVE_1030='', RESERVE_1031='', RESERVE_1032='', RESERVE_1033='', RESERVE_1034='', RESERVE_1035='', RESERVE_1036='', RESERVE_1037='', RESERVE_1038='', RESERVE_1039='', RESERVE_1040='', RESERVE_1041='', RESERVE_1042='', RESERVE_1043='', RESERVE_1044='', RESERVE_1045='', RESERVE_1046='', RESERVE_1047='', RESERVE_1048='', RESERVE_1049='', RESERVE_1050='', RESERVE_1051='', RESERVE_1052='', RESERVE_1053='', RESERVE_1054='', RESERVE_1055='', RESERVE_1056='', RESERVE_1057='', RESERVE_1058='', RESERVE_1059='', RESERVE_1060='', RESERVE_1061='', RESERVE_1062='', RESERVE_1063='', RESERVE_1064='', RESERVE_1065='', RESERVE_1066='', RESERVE_1067='', RESERVE_1068='', RESERVE_1069='', RESERVE_1070='', RESERVE_1071='', RESERVE_1072='', RESERVE_1073='', RESERVE_1074='', RESERVE_1075='', RESERVE_1076='', RESERVE_1077='', RESERVE_1078='', RESERVE_1079='', RESERVE_1080='', RESERVE_1081='', RESERVE_1082='', RESERVE_1083='', RESERVE_1084='', RESERVE_1085='', RESERVE_1086='', RESERVE_1087='', RESERVE_1088='', RESERVE_1089='', RESERVE_1090='', RESERVE_1091='', RESERVE_1092='', RESERVE_1093='', RESERVE_1094='', RESERVE_1095='', RESERVE_1096='', RESERVE_1097='', RESERVE_1098='', RESERVE_1099='', RESERVE_1100='', RESERVE_1101='', RESERVE_1102='', RESERVE_1103='', RESERVE_1104='', RESERVE_1105='', RESERVE_1106='', RESERVE_1107='', RESERVE_1108='', RESERVE_1109='', RESERVE_1110='', RESERVE_1111='', RESERVE_1112='', RESERVE_1113='', RESERVE_1114='', RESERVE_1115='', RESERVE_1116='', RESERVE_1117='', RESERVE_1118='', RESERVE_1119='', RESERVE_1120='', RESERVE_1121='', RESERVE_1122='', RESERVE_1123='', RESERVE_1124='', RESERVE_1125='', RESERVE_1126='', RESERVE_1127='', RESERVE_1128='', RESERVE_1129='', RESERVE_1130='', RESERVE_1131='', RESERVE_1132='', RESERVE_1133='', RESERVE_1134='', RESERVE_1135='', RESERVE_1136='', RESERVE_1137='', RESERVE_1138='', RESERVE_1139='', RESERVE_1140='', RESERVE_1141='', RESERVE_1142='', RESERVE_1143='', RESERVE_1144='', RESERVE_1145='', RESERVE_1146='', RESERVE_1147='', RESERVE_1148='', RESERVE_1149='', RESERVE_1150='', RESERVE_1151='', RESERVE_1152='', RESERVE_1153='', RESERVE_1154='', RESERVE_1155='', RESERVE_1156='', RESERVE_1157='', RESERVE_1158='', RESERVE_1159='', RESERVE_1160='', RESERVE_1161='', RESERVE_1162='', RESERVE_1163='', RESERVE_1164='', RESERVE_1165='', RESERVE_1166='', RESERVE_1167='', RESERVE_1168='', RESERVE_1169='', RESERVE_1170='', RESERVE_1171='', RESERVE_1172='', RESERVE_1173='', RESERVE_1174='', RESERVE_1175='', RESERVE_1176='', RESERVE_1177='', RESERVE_1178='', RESERVE_1179='', RESERVE_1180='', RESERVE_1181='', RESERVE_1182='', RESERVE_1183='', RESERVE_1184='', RESERVE_1185='', RESERVE_1186='', RESERVE_1187='', RESERVE_1188='', RESERVE_1189='', RESERVE_1190='', RESERVE_1191='', RESERVE_1192='', RESERVE_1193='', RESERVE_1194='', RESERVE_1195='', RESERVE_1196='', RESERVE_1197='', RESERVE_1198='', RESERVE_1199='', RESERVE_1200='', RESERVE_1201='', RESERVE_1202='', RESERVE_1203='', RESERVE_1204='', RESERVE_1205='', RESERVE_1206='', RESERVE_1207='', RESERVE_1208='', RESERVE_1209='', RESERVE_1210='', RESERVE_1211='', RESERVE_1212='', RESERVE_1213='', RESERVE_1214='', RESERVE_1215='', RESERVE_1216='', RESERVE_1217='', RESERVE_1218='', RESERVE_1219='', RESERVE_1220='', RESERVE_1221='', RESERVE_1222='', RESERVE_1223='', RESERVE_1224='', RESERVE_1225='', RESERVE_1226='', RESERVE_1227='', RESERVE_1228='', RESERVE_1229='', RESERVE_1230='', RESERVE_1231='', RESERVE_1232='', RESERVE_1233='', RESERVE_1234='', RESERVE_1235='', RESERVE_1236='', RESERVE_1237='', RESERVE_1238='', RESERVE_1239='', RESERVE_1240='', RESERVE_1241='', RESERVE_1242='', RESERVE_1243='', RESERVE_1244='', RESERVE_1245='', RESERVE_1246='', RESERVE_1247='', RESERVE_1248='', RESERVE_1249='', RESERVE_1250='', RESERVE_1251='', RESERVE_1252='', RESERVE_1253='', RESERVE_1254='', RESERVE_1255='', RESERVE_1256='', RESERVE_1257='', RESERVE_1258='', RESERVE_1259='', RESERVE_1260='', RESERVE_1261='', RESERVE_1262='', RESERVE_1263='', RESERVE_1264='', RESERVE_1265='', RESERVE_1266='', RESERVE_1267='', RESERVE_1268='', RESERVE_1269='', RESERVE_1270='', RESERVE_1271='', RESERVE_1272='', RESERVE_1273='', RESERVE_1274='', RESERVE_1275='', RESERVE_1276='', RESERVE_1277='', RESERVE_1278='', RESERVE_1279='', RESERVE_1280='', RESERVE_1281='', RESERVE_1282='', RESERVE_1283='', RESERVE_1284='', RESERVE_1285='', RESERVE_1286='', RESERVE_1287='', RESERVE_1288='', RESERVE_1289='', RESERVE_1290='', RESERVE_1291='', RESERVE_1292='', RESERVE_1293='', RESERVE_1294='', RESERVE_1295='', RESERVE_1296='', RESERVE_1297='', RESERVE_1298='', RESERVE_1299='', RESERVE_1300='', RESERVE_1301='', RESERVE_1302='', RESERVE_1303='', RESERVE_1304='', RESERVE_1305='', RESERVE_1306='', RESERVE_1307='', RESERVE_1308='', RESERVE_1309='', RESERVE_1310='', RESERVE_1311='', RESERVE_1312='', RESERVE_1313='', RESERVE_1314='', RESERVE_1315='', RESERVE_1316='', RESERVE_1317='', RESERVE_1318='', RESERVE_1319='', RESERVE_1320='', RESERVE_1321='', RESERVE_1322='', RESERVE_1323='', RESERVE_1324='', RESERVE_1325='', RESERVE_1326='', RESERVE_1327='', RESERVE_1328='', RESERVE_1329='', RESERVE_1330='', RESERVE_1331='', RESERVE_1332='', RESERVE_1333='', RESERVE_1334='', RESERVE_1335='', RESERVE_1336='', RESERVE_1337='', RESERVE_1338='', RESERVE_1339='', RESERVE_1340='', RESERVE_1341='', RESERVE_1342='', RESERVE_1343='', RESERVE_1344='', RESERVE_1345='', RESERVE_1346='', RESERVE_1347='', RESERVE_1348='', RESERVE_1349='', RESERVE_1350='', RESERVE_1351='', RESERVE_1352='', RESERVE_1353='', RESERVE_1354='', RESERVE_1355='', RESERVE_1356='', RESERVE_1357='', RESERVE_1358='', RESERVE_1359='', RESERVE_1360='', RESERVE_1361='', RESERVE_1362='', RESERVE_1363='', RESERVE_1364='', RESERVE_1365='', RESERVE_1366='', RESERVE_1367='', RESERVE_1368='', RESERVE_1369='', RESERVE_1370='', RESERVE_1371='', RESERVE_1372='', RESERVE_1373='', RESERVE_1374='', RESERVE_1375='', RESERVE_1376='', RESERVE_1377='', RESERVE_1378='', RESERVE_1379='', RESERVE_1380='', RESERVE_1381='', RESERVE_1382='', RESERVE_1383='', RESERVE_1384='', RESERVE_1385='', RESERVE_1386='', RESERVE_1387='', RESERVE_1388='', RESERVE_1389='', RESERVE_1390='', RESERVE_1391='', RESERVE_1392='', RESERVE_1393='', RESERVE_1394='', RESERVE_1395='', RESERVE_1396='', RESERVE_1397='', RESERVE_1398='', RESERVE_1399='', RESERVE_1400='', RESERVE_1401='', RESERVE_1402='', RESERVE_1403='', RESERVE_1404='', RESERVE_1405='', RESERVE_1406='', RESERVE_1407='', RESERVE_1408='', RESERVE_1409='', RESERVE_1410='', RESERVE_1411='', RESERVE_1412='', RESERVE_1413='', RESERVE_1414='', RESERVE_1415='', RESERVE_1416='', RESERVE_1417='', RESERVE_1418='', RESERVE_1419='', RESERVE_1420='', RESERVE_1421='', RESERVE_1422='', RESERVE_1423='', RESERVE_1424='', RESERVE_1425='', RESERVE_1426='', RESERVE_1427='', RESERVE_1428='', RESERVE_1429='', RESERVE_1430='', RESERVE_1431='', RESERVE_1432='', RESERVE_1433='', RESERVE_1434='', RESERVE_1435='', RESERVE_1436='', RESERVE_1437='', RESERVE_1438='', RESERVE_1439='', RESERVE_1440='', RESERVE_1441='', RESERVE_1442='', RESERVE_1443='', RESERVE_1444='', RESERVE_1445='', RESERVE_1446='', RESERVE_1447='', RESERVE_1448='', RESERVE_1449='', RESERVE_1450='', RESERVE_1451='', RESERVE_1452='', RESERVE_1453='', RESERVE_1454='', RESERVE_1455='', RESERVE_1456='', RESERVE_1457='', RESERVE_1458='', RESERVE_1459='', RESERVE_1460='', RESERVE_1461='', RESERVE_1462='', RESERVE_1463='', RESERVE_1464='', RESERVE_1465='', RESERVE_1466='', RESERVE_1467='', RESERVE_1468='', RESERVE_1469='', RESERVE_1470='', RESERVE_1471='', RESERVE_1472='', RESERVE_1473='', RESERVE_1474='', RESERVE_1475='', RESERVE_1476='', RESERVE_1477='', RESERVE_1478='', RESERVE_1479='', RESERVE_1480='', RESERVE_1481='', RESERVE_1482='', RESERVE_1483='', RESERVE_1484='', RESERVE_1485='', RESERVE_1486='', RESERVE_1487='', RESERVE_1488='', RESERVE_1489='', RESERVE_1490='', RESERVE_1491='', RESERVE_1492='', RESERVE_1493='', RESERVE_1494='', RESERVE_1495='', RESERVE_1496='', RESERVE_1497='', RESERVE_1498='', RESERVE_1499='', RESERVE_1500='', RESERVE_1501='', RESERVE_1502='', RESERVE_1503='', RESERVE_1504='', RESERVE_1505='', RESERVE_1506='', RESERVE_1507='', RESERVE_1508='', RESERVE_1509='', RESERVE_1510='', RESERVE_1511='', RESERVE_1512='', RESERVE_1513='', RESERVE_1514='', RESERVE_1515='', RESERVE_1516='', RESERVE_1517='', RESERVE_1518='', RESERVE_1519='', RESERVE_1520='', RESERVE_1521='', RESERVE_1522='', RESERVE_1523='', RESERVE_1524='', RESERVE_1525='', RESERVE_1526='', RESERVE_1527='', RESERVE_1528='', RESERVE_1529='', RESERVE_1530='', RESERVE_1531='', RESERVE_1532='', RESERVE_1533='', RESERVE_1534='', RESERVE_1535='', RESERVE_1536='', RESERVE_1537='', RESERVE_1538='', RESERVE_1539='', RESERVE_1540='', RESERVE_1541='', RESERVE_1542='', RESERVE_1543='', RESERVE_1544='', RESERVE_1545='', RESERVE_1546='', RESERVE_1547='', RESERVE_1548='', RESERVE_1549='', RESERVE_1550='', RESERVE_1551='', RESERVE_1552='', RESERVE_1553='', RESERVE_1554='', RESERVE_1555='', RESERVE_1556='', RESERVE_1557='', RESERVE_1558='', RESERVE_1559='', RESERVE_1560='', RESERVE_1561='', RESERVE_1562='', RESERVE_1563='', RESERVE_1564='', RESERVE_1565='', RESERVE_1566='', RESERVE_1567='', RESERVE_1568='', RESERVE_1569='', RESERVE_1570='', RESERVE_1571='', RESERVE_1572='', RESERVE_1573='', RESERVE_1574='', RESERVE_1575='', RESERVE_1576='', RESERVE_1577='', RESERVE_1578='', RESERVE_1579='', RESERVE_1580='', RESERVE_1581='', RESERVE_1582='', RESERVE_1583='', RESERVE_1584='', RESERVE_1585='', RESERVE_1586='', RESERVE_1587='', RESERVE_1588='', RESERVE_1589='', RESERVE_1590='', RESERVE_1591='', RESERVE_1592='', RESERVE_1593='', RESERVE_1594='', RESERVE_1595='', UT_00_00='(0,0)', UT_00_01='(0,1)', UT_01_00='(1,0)', UT_01_01='(1,1)', UT_00_02='(0,2)', UT_02_00='(2,0)', UT_01_02='(1,2)', UT_02_01='(2,1)', UT_02_02='(2,2)', UT_00_03='(0,3)', UT_03_00='(3,0)', UT_03_01='(3,1)', UT_02_03='(2,3)', UT_03_02='(3,2)', UT_01_03='(1,3)', UT_03_03='(3,3)', UT_00_04='(0,4)', UT_02_04='(2,4)', UT_04_00='(4,0)', UT_01_04='(1,4)', UT_04_01='(4,1)', UT_04_02='(4,2)', UT_03_04='(3,4)', UT_04_03='(4,3)', UT_04_04='(4,4)', UT_00_05='(0,5)', UT_05_00='(5,0)', UT_05_01='(5,1)', UT_02_05='(2,5)', UT_05_02='(5,2)', UT_05_03='(5,3)', UT_04_05='(4,5)', UT_05_04='(5,4)', UT_01_05='(1,5)', UT_03_05='(3,5)', UT_05_05='(5,5)', UT_00_06='(0,6)', UT_02_06='(2,6)', UT_04_06='(4,6)', UT_06_00='(6,0)', UT_01_06='(1,6)', UT_06_01='(6,1)', UT_06_02='(6,2)', UT_03_06='(3,6)', UT_06_03='(6,3)', UT_06_04='(6,4)', UT_05_06='(5,6)', UT_06_05='(6,5)', UT_06_06='(6,6)', UT_00_07='(0,7)', UT_07_00='(7,0)', UT_07_01='(7,1)', UT_02_07='(2,7)', UT_07_02='(7,2)', UT_07_03='(7,3)', UT_04_07='(4,7)', UT_07_04='(7,4)', UT_07_05='(7,5)', UT_06_07='(6,7)', UT_07_06='(7,6)', UT_01_07='(1,7)', UT_03_07='(3,7)', UT_05_07='(5,7)', UT_07_07='(7,7)', UT_00_08='(0,8)', UT_02_08='(2,8)', UT_04_08='(4,8)', UT_06_08='(6,8)', UT_08_00='(8,0)', UT_01_08='(1,8)', UT_08_01='(8,1)', UT_08_02='(8,2)', UT_03_08='(3,8)', UT_08_03='(8,3)', UT_08_04='(8,4)', UT_05_08='(5,8)', UT_08_05='(8,5)', UT_08_06='(8,6)', UT_07_08='(7,8)', UT_08_07='(8,7)', UT_08_08='(8,8)', UT_00_09='(0,9)', UT_09_00='(9,0)', UT_09_01='(9,1)', UT_02_09='(2,9)', UT_09_02='(9,2)', UT_09_03='(9,3)', UT_04_09='(4,9)', UT_09_04='(9,4)', UT_09_05='(9,5)', UT_06_09='(6,9)', UT_09_06='(9,6)', UT_09_07='(9,7)', UT_08_09='(8,9)', UT_09_08='(9,8)', UT_01_09='(1,9)', UT_03_09='(3,9)', UT_05_09='(5,9)', UT_07_09='(7,9)', UT_09_09='(9,9)', UT_00_10='(0,10)', UT_02_10='(2,10)', UT_04_10='(4,10)', UT_06_10='(6,10)', UT_08_10='(8,10)', UT_10_00='(10,0)', UT_01_10='(1,10)', UT_10_01='(10,1)', UT_10_02='(10,2)', UT_03_10='(3,10)', UT_10_03='(10,3)', UT_10_04='(10,4)', UT_05_10='(5,10)', UT_10_05='(10,5)', UT_10_06='(10,6)', UT_07_10='(7,10)', UT_10_07='(10,7)', UT_10_08='(10,8)', UT_09_10='(9,10)', UT_10_09='(10,9)', UT_10_10='(10,10)', UT_00_11='(0,11)', UT_11_00='(11,0)', UT_11_01='(11,1)', UT_02_11='(2,11)', UT_11_02='(11,2)', UT_11_03='(11,3)', UT_04_11='(4,11)', UT_11_04='(11,4)', UT_11_05='(11,5)', UT_06_11='(6,11)', UT_11_06='(11,6)', UT_11_07='(11,7)', UT_08_11='(8,11)', UT_11_08='(11,8)', UT_11_09='(11,9)', UT_10_11='(10,11)', UT_11_10='(11,10)', UT_01_11='(1,11)', UT_03_11='(3,11)', UT_05_11='(5,11)', UT_07_11='(7,11)', UT_09_11='(9,11)', UT_11_11='(11,11)', UT_00_12='(0,12)', UT_02_12='(2,12)', UT_04_12='(4,12)', UT_06_12='(6,12)', UT_08_12='(8,12)', UT_10_12='(10,12)', UT_12_00='(12,0)', UT_01_12='(1,12)', UT_12_01='(12,1)', UT_12_02='(12,2)', UT_03_12='(3,12)', UT_12_03='(12,3)', UT_12_04='(12,4)', UT_05_12='(5,12)', UT_12_05='(12,5)', UT_12_06='(12,6)', UT_07_12='(7,12)', UT_12_07='(12,7)', UT_12_08='(12,8)', UT_09_12='(9,12)', UT_12_09='(12,9)', UT_12_10='(12,10)', UT_11_12='(11,12)', UT_12_11='(12,11)', UT_12_12='(12,12)', UT_00_13='(0,13)', UT_13_00='(13,0)', UT_13_01='(13,1)', UT_02_13='(2,13)', UT_13_02='(13,2)', UT_13_03='(13,3)', UT_04_13='(4,13)', UT_13_04='(13,4)', UT_13_05='(13,5)', UT_06_13='(6,13)', UT_13_06='(13,6)', UT_13_07='(13,7)', UT_08_13='(8,13)', UT_13_08='(13,8)', UT_13_09='(13,9)', UT_10_13='(10,13)', UT_13_10='(13,10)', UT_13_11='(13,11)', UT_12_13='(12,13)', UT_13_12='(13,12)', UT_01_13='(1,13)', UT_03_13='(3,13)', UT_05_13='(5,13)', UT_07_13='(7,13)', UT_09_13='(9,13)', UT_11_13='(11,13)', UT_13_13='(13,13)', UT_00_14='(0,14)', UT_02_14='(2,14)', UT_04_14='(4,14)', UT_06_14='(6,14)', UT_08_14='(8,14)', UT_10_14='(10,14)', UT_12_14='(12,14)', UT_14_00='(14,0)', UT_01_14='(1,14)', UT_14_01='(14,1)', UT_14_02='(14,2)', UT_03_14='(3,14)', UT_14_03='(14,3)', UT_14_04='(14,4)', UT_05_14='(5,14)', UT_14_05='(14,5)', UT_14_06='(14,6)', UT_07_14='(7,14)', UT_14_07='(14,7)', UT_14_08='(14,8)', UT_09_14='(9,14)', UT_14_09='(14,9)', UT_14_10='(14,10)', UT_11_14='(11,14)', UT_14_11='(14,11)', UT_14_12='(14,12)', UT_13_14='(13,14)', UT_14_13='(14,13)', UT_14_14='(14,14)', UT_00_15='(0,15)', UT_15_00='(15,0)', UT_15_01='(15,1)', UT_02_15='(2,15)', UT_15_02='(15,2)', UT_15_03='(15,3)', UT_04_15='(4,15)', UT_15_04='(15,4)', UT_15_05='(15,5)', UT_06_15='(6,15)', UT_15_06='(15,6)', UT_15_07='(15,7)', UT_08_15='(8,15)', UT_15_08='(15,8)', UT_15_09='(15,9)', UT_10_15='(10,15)', UT_15_10='(15,10)', UT_15_11='(15,11)', UT_12_15='(12,15)', UT_15_12='(15,12)', UT_15_13='(15,13)', UT_14_15='(14,15)', UT_15_14='(15,14)', UT_01_15='(1,15)', UT_03_15='(3,15)', UT_05_15='(5,15)', UT_07_15='(7,15)', UT_09_15='(9,15)', UT_11_15='(11,15)', UT_13_15='(13,15)', UT_15_15='(15,15)', UT_00_16='(0,16)', UT_02_16='(2,16)', UT_04_16='(4,16)', UT_06_16='(6,16)', UT_08_16='(8,16)', UT_10_16='(10,16)', UT_12_16='(12,16)', UT_14_16='(14,16)', UT_16_00='(16,0)', UT_01_16='(1,16)', UT_16_01='(16,1)', UT_16_02='(16,2)', UT_03_16='(3,16)', UT_16_03='(16,3)', UT_16_04='(16,4)', UT_05_16='(5,16)', UT_16_05='(16,5)', UT_16_06='(16,6)', UT_07_16='(7,16)', UT_16_07='(16,7)', UT_16_08='(16,8)', UT_09_16='(9,16)', UT_16_09='(16,9)', UT_16_10='(16,10)', UT_11_16='(11,16)', UT_16_11='(16,11)', UT_16_12='(16,12)', UT_13_16='(13,16)', UT_16_13='(16,13)', UT_16_14='(16,14)', UT_15_16='(15,16)', UT_16_15='(16,15)', UT_16_16='(16,16)', UT_00_17='(0,17)', UT_17_00='(17,0)', UT_17_01='(17,1)', UT_02_17='(2,17)', UT_17_02='(17,2)', UT_17_03='(17,3)', UT_04_17='(4,17)', UT_17_04='(17,4)', UT_17_05='(17,5)', UT_06_17='(6,17)', UT_17_06='(17,6)', UT_17_07='(17,7)', UT_08_17='(8,17)', UT_17_08='(17,8)', UT_17_09='(17,9)', UT_10_17='(10,17)', UT_17_10='(17,10)', UT_17_11='(17,11)', UT_12_17='(12,17)', UT_17_12='(17,12)', UT_17_13='(17,13)', UT_14_17='(14,17)', UT_17_14='(17,14)', UT_17_15='(17,15)', UT_16_17='(16,17)', UT_17_16='(17,16)', UT_01_17='(1,17)', UT_03_17='(3,17)', UT_05_17='(5,17)', UT_07_17='(7,17)', UT_09_17='(9,17)', UT_11_17='(11,17)', UT_13_17='(13,17)', UT_15_17='(15,17)', UT_17_17='(17,17)', UT_00_18='(0,18)', UT_02_18='(2,18)', UT_04_18='(4,18)', UT_06_18='(6,18)', UT_08_18='(8,18)', UT_10_18='(10,18)', UT_12_18='(12,18)', UT_14_18='(14,18)', UT_16_18='(16,18)', UT_18_00='(18,0)', UT_01_18='(1,18)', UT_18_01='(18,1)', UT_18_02='(18,2)', UT_03_18='(3,18)', UT_18_03='(18,3)', UT_18_04='(18,4)', UT_05_18='(5,18)', UT_18_05='(18,5)', UT_18_06='(18,6)', UT_07_18='(7,18)', UT_18_07='(18,7)', UT_18_08='(18,8)', UT_09_18='(9,18)', UT_18_09='(18,9)', UT_18_10='(18,10)', UT_11_18='(11,18)', UT_18_11='(18,11)', UT_18_12='(18,12)', UT_13_18='(13,18)', UT_18_13='(18,13)', UT_18_14='(18,14)', UT_15_18='(15,18)', UT_18_15='(18,15)', UT_18_16='(18,16)', UT_17_18='(17,18)', UT_18_17='(18,17)', UT_18_18='(18,18)', UT_00_19='(0,19)', UT_19_00='(19,0)', UT_19_01='(19,1)', UT_02_19='(2,19)', UT_19_02='(19,2)', UT_19_03='(19,3)', UT_04_19='(4,19)', UT_19_04='(19,4)', UT_19_05='(19,5)', UT_06_19='(6,19)', UT_19_06='(19,6)', UT_19_07='(19,7)', UT_08_19='(8,19)', UT_19_08='(19,8)', UT_19_09='(19,9)', UT_10_19='(10,19)', UT_19_10='(19,10)', UT_19_11='(19,11)', UT_12_19='(12,19)', UT_19_12='(19,12)', UT_19_13='(19,13)', UT_14_19='(14,19)', UT_19_14='(19,14)', UT_19_15='(19,15)', UT_16_19='(16,19)', UT_19_16='(19,16)', UT_19_17='(19,17)', UT_18_19='(18,19)', UT_19_18='(19,18)', UT_01_19='(1,19)', UT_03_19='(3,19)', UT_05_19='(5,19)', UT_07_19='(7,19)', UT_09_19='(9,19)', UT_11_19='(11,19)', UT_13_19='(13,19)', UT_15_19='(15,19)', UT_17_19='(17,19)', UT_19_19='(19,19)', UT_00_20='(0,20)', UT_02_20='(2,20)', UT_04_20='(4,20)', UT_06_20='(6,20)', UT_08_20='(8,20)', UT_10_20='(10,20)', UT_12_20='(12,20)', UT_14_20='(14,20)', UT_16_20='(16,20)', UT_18_20='(18,20)', UT_20_00='(20,0)', UT_01_20='(1,20)', UT_20_01='(20,1)', UT_20_02='(20,2)', UT_03_20='(3,20)', UT_20_03='(20,3)', UT_20_04='(20,4)', UT_05_20='(5,20)', UT_20_05='(20,5)', UT_20_06='(20,6)', UT_07_20='(7,20)', UT_20_07='(20,7)', UT_20_08='(20,8)', UT_09_20='(9,20)', UT_20_09='(20,9)', UT_20_10='(20,10)', UT_11_20='(11,20)', UT_20_11='(20,11)', UT_20_12='(20,12)', UT_13_20='(13,20)', UT_20_13='(20,13)', UT_20_14='(20,14)', UT_15_20='(15,20)', UT_20_15='(20,15)', UT_20_16='(20,16)', UT_17_20='(17,20)', UT_20_17='(20,17)', UT_20_18='(20,18)', UT_19_20='(19,20)', UT_20_19='(20,19)', UT_20_20='(20,20)', UT_00_21='(0,21)', UT_21_00='(21,0)', UT_21_01='(21,1)', UT_02_21='(2,21)', UT_21_02='(21,2)', UT_21_03='(21,3)', UT_04_21='(4,21)', UT_21_04='(21,4)', UT_21_05='(21,5)', UT_06_21='(6,21)', UT_21_06='(21,6)', UT_21_07='(21,7)', UT_08_21='(8,21)', UT_21_08='(21,8)', UT_21_09='(21,9)', UT_10_21='(10,21)', UT_21_10='(21,10)', UT_21_11='(21,11)', UT_12_21='(12,21)', UT_21_12='(21,12)', UT_21_13='(21,13)', UT_14_21='(14,21)', UT_21_14='(21,14)', UT_21_15='(21,15)', UT_16_21='(16,21)', UT_21_16='(21,16)', UT_21_17='(21,17)', UT_18_21='(18,21)', UT_21_18='(21,18)', UT_21_19='(21,19)', UT_20_21='(20,21)', UT_21_20='(21,20)', UT_01_21='(1,21)', UT_03_21='(3,21)', UT_05_21='(5,21)', UT_07_21='(7,21)', UT_09_21='(9,21)', UT_11_21='(11,21)', UT_13_21='(13,21)', UT_15_21='(15,21)', UT_17_21='(17,21)', UT_19_21='(19,21)', UT_21_21='(21,21)', UT_00_22='(0,22)', UT_02_22='(2,22)', UT_04_22='(4,22)', UT_06_22='(6,22)', UT_08_22='(8,22)', UT_10_22='(10,22)', UT_12_22='(12,22)', UT_14_22='(14,22)', UT_16_22='(16,22)', UT_18_22='(18,22)', UT_20_22='(20,22)', UT_22_00='(22,0)', UT_01_22='(1,22)', UT_22_01='(22,1)', UT_22_02='(22,2)', UT_03_22='(3,22)', UT_22_03='(22,3)', UT_22_04='(22,4)', UT_05_22='(5,22)', UT_22_05='(22,5)', UT_22_06='(22,6)', UT_07_22='(7,22)', UT_22_07='(22,7)', UT_22_08='(22,8)', UT_09_22='(9,22)', UT_22_09='(22,9)', UT_22_10='(22,10)', UT_11_22='(11,22)', UT_22_11='(22,11)', UT_22_12='(22,12)', UT_13_22='(13,22)', UT_22_13='(22,13)', UT_22_14='(22,14)', UT_15_22='(15,22)', UT_22_15='(22,15)', UT_22_16='(22,16)', UT_17_22='(17,22)', UT_22_17='(22,17)', UT_22_18='(22,18)', UT_19_22='(19,22)', UT_22_19='(22,19)', UT_22_20='(22,20)', UT_21_22='(21,22)', UT_22_21='(22,21)', UT_22_22='(22,22)', UT_00_23='(0,23)', UT_23_00='(23,0)', UT_23_01='(23,1)', UT_02_23='(2,23)', UT_23_02='(23,2)', UT_23_03='(23,3)', UT_04_23='(4,23)', UT_23_04='(23,4)', UT_23_05='(23,5)', UT_06_23='(6,23)', UT_23_06='(23,6)', UT_23_07='(23,7)', UT_08_23='(8,23)', UT_23_08='(23,8)', UT_23_09='(23,9)', UT_10_23='(10,23)', UT_23_10='(23,10)', UT_23_11='(23,11)', UT_12_23='(12,23)', UT_23_12='(23,12)', UT_23_13='(23,13)', UT_14_23='(14,23)', UT_23_14='(23,14)', UT_23_15='(23,15)', UT_16_23='(16,23)', UT_23_16='(23,16)', UT_23_17='(23,17)', UT_18_23='(18,23)', UT_23_18='(23,18)', UT_23_19='(23,19)', UT_20_23='(20,23)', UT_23_20='(23,20)', UT_23_21='(23,21)', UT_22_23='(22,23)', UT_23_22='(23,22)', UT_01_23='(1,23)', UT_03_23='(3,23)', UT_05_23='(5,23)', UT_07_23='(7,23)', UT_09_23='(9,23)', UT_11_23='(11,23)', UT_13_23='(13,23)', UT_15_23='(15,23)', UT_17_23='(17,23)', UT_19_23='(19,23)', UT_21_23='(21,23)', UT_23_23='(23,23)', UT_00_24='(0,24)', UT_02_24='(2,24)', UT_04_24='(4,24)', UT_06_24='(6,24)', UT_08_24='(8,24)', UT_10_24='(10,24)', UT_12_24='(12,24)', UT_14_24='(14,24)', UT_16_24='(16,24)', UT_18_24='(18,24)', UT_20_24='(20,24)', UT_22_24='(22,24)', UT_24_00='(24,0)', UT_01_24='(1,24)', UT_24_01='(24,1)', UT_24_02='(24,2)', UT_03_24='(3,24)', UT_24_03='(24,3)', UT_24_04='(24,4)', UT_05_24='(5,24)', UT_24_05='(24,5)', UT_24_06='(24,6)', UT_07_24='(7,24)', UT_24_07='(24,7)', UT_24_08='(24,8)', UT_09_24='(9,24)', UT_24_09='(24,9)', UT_24_10='(24,10)', UT_11_24='(11,24)', UT_24_11='(24,11)', UT_24_12='(24,12)', UT_13_24='(13,24)', UT_24_13='(24,13)', UT_24_14='(24,14)', UT_15_24='(15,24)', UT_24_15='(24,15)', UT_24_16='(24,16)', UT_17_24='(17,24)', UT_24_17='(24,17)', UT_24_18='(24,18)', UT_19_24='(19,24)', UT_24_19='(24,19)', UT_24_20='(24,20)', UT_21_24='(21,24)', UT_24_21='(24,21)', UT_24_22='(24,22)', UT_23_24='(23,24)', UT_24_23='(24,23)', UT_24_24='(24,24)', UT_00_25='(0,25)', UT_25_00='(25,0)', UT_25_01='(25,1)', UT_02_25='(2,25)', UT_25_02='(25,2)', UT_25_03='(25,3)', UT_04_25='(4,25)', UT_25_04='(25,4)', UT_25_05='(25,5)', UT_06_25='(6,25)', UT_25_06='(25,6)', UT_25_07='(25,7)', UT_08_25='(8,25)', UT_25_08='(25,8)', UT_25_09='(25,9)', UT_10_25='(10,25)', UT_25_10='(25,10)', UT_25_11='(25,11)', UT_12_25='(12,25)', UT_25_12='(25,12)', UT_25_13='(25,13)', UT_14_25='(14,25)', UT_25_14='(25,14)', UT_25_15='(25,15)', UT_16_25='(16,25)', UT_25_16='(25,16)', UT_25_17='(25,17)', UT_18_25='(18,25)', UT_25_18='(25,18)', UT_25_19='(25,19)', UT_20_25='(20,25)', UT_25_20='(25,20)', UT_25_21='(25,21)', UT_22_25='(22,25)', UT_25_22='(25,22)', UT_25_23='(25,23)', UT_24_25='(24,25)', UT_25_24='(25,24)', UT_01_25='(1,25)', UT_03_25='(3,25)', UT_05_25='(5,25)', UT_07_25='(7,25)', UT_09_25='(9,25)', UT_11_25='(11,25)', UT_13_25='(13,25)', UT_15_25='(15,25)', UT_17_25='(17,25)', UT_19_25='(19,25)', UT_21_25='(21,25)', UT_23_25='(23,25)', UT_25_25='(25,25)', UT_00_26='(0,26)', UT_02_26='(2,26)', UT_04_26='(4,26)', UT_06_26='(6,26)', UT_08_26='(8,26)', UT_10_26='(10,26)', UT_12_26='(12,26)', UT_14_26='(14,26)', UT_16_26='(16,26)', UT_18_26='(18,26)', UT_20_26='(20,26)', UT_22_26='(22,26)', UT_24_26='(24,26)', UT_26_00='(26,0)', UT_01_26='(1,26)', UT_26_01='(26,1)', UT_26_02='(26,2)', UT_03_26='(3,26)', UT_26_03='(26,3)', UT_26_04='(26,4)', UT_05_26='(5,26)', UT_26_05='(26,5)', UT_26_06='(26,6)', UT_07_26='(7,26)', UT_26_07='(26,7)', UT_26_08='(26,8)', UT_09_26='(9,26)', UT_26_09='(26,9)', UT_26_10='(26,10)', UT_11_26='(11,26)', UT_26_11='(26,11)', UT_26_12='(26,12)', UT_13_26='(13,26)', UT_26_13='(26,13)', UT_26_14='(26,14)', UT_15_26='(15,26)', UT_26_15='(26,15)', UT_26_16='(26,16)', UT_17_26='(17,26)', UT_26_17='(26,17)', UT_26_18='(26,18)', UT_19_26='(19,26)', UT_26_19='(26,19)', UT_26_20='(26,20)', UT_21_26='(21,26)', UT_26_21='(26,21)', UT_26_22='(26,22)', UT_23_26='(23,26)', UT_26_23='(26,23)', UT_26_24='(26,24)', UT_25_26='(25,26)', UT_26_25='(26,25)', UT_26_26='(26,26)', UT_00_27='(0,27)', UT_27_00='(27,0)', UT_27_01='(27,1)', UT_02_27='(2,27)', UT_27_02='(27,2)', UT_27_03='(27,3)', UT_04_27='(4,27)', UT_27_04='(27,4)', UT_27_05='(27,5)', UT_06_27='(6,27)', UT_27_06='(27,6)', UT_27_07='(27,7)', UT_08_27='(8,27)', UT_27_08='(27,8)', UT_27_09='(27,9)', UT_10_27='(10,27)', UT_27_10='(27,10)', UT_27_11='(27,11)', UT_12_27='(12,27)', UT_27_12='(27,12)', UT_27_13='(27,13)', UT_14_27='(14,27)', UT_27_14='(27,14)', UT_27_15='(27,15)', UT_16_27='(16,27)', UT_27_16='(27,16)', UT_27_17='(27,17)', UT_18_27='(18,27)', UT_27_18='(27,18)', UT_27_19='(27,19)', UT_20_27='(20,27)', UT_27_20='(27,20)', UT_27_21='(27,21)', UT_22_27='(22,27)', UT_27_22='(27,22)', UT_27_23='(27,23)', UT_24_27='(24,27)', UT_27_24='(27,24)', UT_27_25='(27,25)', UT_26_27='(26,27)', UT_27_26='(27,26)', UT_01_27='(1,27)', UT_03_27='(3,27)', UT_05_27='(5,27)', UT_07_27='(7,27)', UT_09_27='(9,27)', UT_11_27='(11,27)', UT_13_27='(13,27)', UT_15_27='(15,27)', UT_17_27='(17,27)', UT_19_27='(19,27)', UT_21_27='(21,27)', UT_23_27='(23,27)', UT_25_27='(25,27)', UT_27_27='(27,27)', UT_00_28='(0,28)', UT_02_28='(2,28)', UT_04_28='(4,28)', UT_06_28='(6,28)', UT_08_28='(8,28)', UT_10_28='(10,28)', UT_12_28='(12,28)', UT_14_28='(14,28)', UT_16_28='(16,28)', UT_18_28='(18,28)', UT_20_28='(20,28)', UT_22_28='(22,28)', UT_24_28='(24,28)', UT_26_28='(26,28)', UT_28_00='(28,0)', UT_01_28='(1,28)', UT_28_01='(28,1)', UT_28_02='(28,2)', UT_03_28='(3,28)', UT_28_03='(28,3)', UT_28_04='(28,4)', UT_05_28='(5,28)', UT_28_05='(28,5)', UT_28_06='(28,6)', UT_07_28='(7,28)', UT_28_07='(28,7)', UT_28_08='(28,8)', UT_09_28='(9,28)', UT_28_09='(28,9)', UT_28_10='(28,10)', UT_11_28='(11,28)', UT_28_11='(28,11)', UT_28_12='(28,12)', UT_13_28='(13,28)', UT_28_13='(28,13)', UT_28_14='(28,14)', UT_15_28='(15,28)', UT_28_15='(28,15)', UT_28_16='(28,16)', UT_17_28='(17,28)', UT_28_17='(28,17)', UT_28_18='(28,18)', UT_19_28='(19,28)', UT_28_19='(28,19)', UT_28_20='(28,20)', UT_21_28='(21,28)', UT_28_21='(28,21)', UT_28_22='(28,22)', UT_23_28='(23,28)', UT_28_23='(28,23)', UT_28_24='(28,24)', UT_25_28='(25,28)', UT_28_25='(28,25)', UT_28_26='(28,26)', UT_27_28='(27,28)', UT_28_27='(28,27)', UT_28_28='(28,28)', UT_00_29='(0,29)', UT_29_00='(29,0)', UT_29_01='(29,1)', UT_02_29='(2,29)', UT_29_02='(29,2)', UT_29_03='(29,3)', UT_04_29='(4,29)', UT_29_04='(29,4)', UT_29_05='(29,5)', UT_06_29='(6,29)', UT_29_06='(29,6)', UT_29_07='(29,7)', UT_08_29='(8,29)', UT_29_08='(29,8)', UT_29_09='(29,9)', UT_10_29='(10,29)', UT_29_10='(29,10)', UT_29_11='(29,11)', UT_12_29='(12,29)', UT_29_12='(29,12)', UT_29_13='(29,13)', UT_14_29='(14,29)', UT_29_14='(29,14)', UT_29_15='(29,15)', UT_16_29='(16,29)', UT_29_16='(29,16)', UT_29_17='(29,17)', UT_18_29='(18,29)', UT_29_18='(29,18)', UT_29_19='(29,19)', UT_20_29='(20,29)', UT_29_20='(29,20)', UT_29_21='(29,21)', UT_22_29='(22,29)', UT_29_22='(29,22)', UT_29_23='(29,23)', UT_24_29='(24,29)', UT_29_24='(29,24)', UT_29_25='(29,25)', UT_26_29='(26,29)', UT_29_26='(29,26)', UT_29_27='(29,27)', UT_28_29='(28,29)', UT_29_28='(29,28)', UT_01_29='(1,29)', UT_03_29='(3,29)', UT_05_29='(5,29)', UT_07_29='(7,29)', UT_09_29='(9,29)', UT_11_29='(11,29)', UT_13_29='(13,29)', UT_15_29='(15,29)', UT_17_29='(17,29)', UT_19_29='(19,29)', UT_21_29='(21,29)', UT_23_29='(23,29)', UT_25_29='(25,29)', UT_27_29='(27,29)', UT_29_29='(29,29)', UT_00_30='(0,30)', UT_02_30='(2,30)', UT_04_30='(4,30)', UT_06_30='(6,30)', UT_08_30='(8,30)', UT_10_30='(10,30)', UT_12_30='(12,30)', UT_14_30='(14,30)', UT_16_30='(16,30)', UT_18_30='(18,30)', UT_20_30='(20,30)', UT_22_30='(22,30)', UT_24_30='(24,30)', UT_26_30='(26,30)', UT_28_30='(28,30)', UT_30_00='(30,0)', UT_01_30='(1,30)', UT_30_01='(30,1)', UT_30_02='(30,2)', UT_03_30='(3,30)', UT_30_03='(30,3)', UT_30_04='(30,4)', UT_05_30='(5,30)', UT_30_05='(30,5)', UT_30_06='(30,6)', UT_07_30='(7,30)', UT_30_07='(30,7)', UT_30_08='(30,8)', UT_09_30='(9,30)', UT_30_09='(30,9)', UT_30_10='(30,10)', UT_11_30='(11,30)', UT_30_11='(30,11)', UT_30_12='(30,12)', UT_13_30='(13,30)', UT_30_13='(30,13)', UT_30_14='(30,14)', UT_15_30='(15,30)', UT_30_15='(30,15)', UT_30_16='(30,16)', UT_17_30='(17,30)', UT_30_17='(30,17)', UT_30_18='(30,18)', UT_19_30='(19,30)', UT_30_19='(30,19)', UT_30_20='(30,20)', UT_21_30='(21,30)', UT_30_21='(30,21)', UT_30_22='(30,22)', UT_23_30='(23,30)', UT_30_23='(30,23)', UT_30_24='(30,24)', UT_25_30='(25,30)', UT_30_25='(30,25)', UT_30_26='(30,26)', UT_27_30='(27,30)', UT_30_27='(30,27)', UT_30_28='(30,28)', UT_29_30='(29,30)', UT_30_29='(30,29)', UT_30_30='(30,30)', UT_00_31='(0,31)', UT_31_00='(31,0)', UT_31_01='(31,1)', UT_02_31='(2,31)', UT_31_02='(31,2)', UT_31_03='(31,3)', UT_04_31='(4,31)', UT_31_04='(31,4)', UT_31_05='(31,5)', UT_06_31='(6,31)', UT_31_06='(31,6)', UT_31_07='(31,7)', UT_08_31='(8,31)', UT_31_08='(31,8)', UT_31_09='(31,9)', UT_10_31='(10,31)', UT_31_10='(31,10)', UT_31_11='(31,11)', UT_12_31='(12,31)', UT_31_12='(31,12)', UT_31_13='(31,13)', UT_14_31='(14,31)', UT_31_14='(31,14)', UT_31_15='(31,15)', UT_16_31='(16,31)', UT_31_16='(31,16)', UT_31_17='(31,17)', UT_18_31='(18,31)', UT_31_18='(31,18)', UT_31_19='(31,19)', UT_20_31='(20,31)', UT_31_20='(31,20)', UT_31_21='(31,21)', UT_22_31='(22,31)', UT_31_22='(31,22)', UT_31_23='(31,23)', UT_24_31='(24,31)', UT_31_24='(31,24)', UT_31_25='(31,25)', UT_26_31='(26,31)', UT_31_26='(31,26)', UT_31_27='(31,27)', UT_28_31='(28,31)', UT_31_28='(31,28)', UT_31_29='(31,29)', UT_30_31='(30,31)', UT_31_30='(31,30)', UT_01_31='(1,31)', UT_03_31='(3,31)', UT_05_31='(5,31)', UT_07_31='(7,31)', UT_09_31='(9,31)', UT_11_31='(11,31)', UT_13_31='(13,31)', UT_15_31='(15,31)', UT_17_31='(17,31)', UT_19_31='(19,31)', UT_21_31='(21,31)', UT_23_31='(23,31)', UT_25_31='(25,31)', UT_27_31='(27,31)', UT_29_31='(29,31)', UT_31_31='(31,31)', UT_00_32='(0,32)', UT_02_32='(2,32)', UT_04_32='(4,32)', UT_06_32='(6,32)', UT_08_32='(8,32)', UT_10_32='(10,32)', UT_12_32='(12,32)', UT_14_32='(14,32)', UT_16_32='(16,32)', UT_18_32='(18,32)', UT_20_32='(20,32)', UT_22_32='(22,32)', UT_24_32='(24,32)', UT_26_32='(26,32)', UT_28_32='(28,32)', UT_30_32='(30,32)', UT_32_00='(32,0)', UT_01_32='(1,32)', UT_32_01='(32,1)', UT_32_02='(32,2)', UT_03_32='(3,32)', UT_32_03='(32,3)', UT_32_04='(32,4)', UT_05_32='(5,32)', UT_32_05='(32,5)', UT_32_06='(32,6)', UT_07_32='(7,32)', UT_32_07='(32,7)', UT_32_08='(32,8)', UT_09_32='(9,32)', UT_32_09='(32,9)', UT_32_10='(32,10)', UT_11_32='(11,32)', UT_32_11='(32,11)', UT_32_12='(32,12)', UT_13_32='(13,32)', UT_32_13='(32,13)', UT_32_14='(32,14)', UT_15_32='(15,32)', UT_32_15='(32,15)', UT_32_16='(32,16)', UT_17_32='(17,32)', UT_32_17='(32,17)', UT_32_18='(32,18)', UT_19_32='(19,32)', UT_32_19='(32,19)', UT_32_20='(32,20)', UT_21_32='(21,32)', UT_32_21='(32,21)', UT_32_22='(32,22)', UT_23_32='(23,32)', UT_32_23='(32,23)', UT_32_24='(32,24)', UT_25_32='(25,32)', UT_32_25='(32,25)', UT_32_26='(32,26)', UT_27_32='(27,32)', UT_32_27='(32,27)', UT_32_28='(32,28)', UT_29_32='(29,32)', UT_32_29='(32,29)', UT_32_30='(32,30)', UT_31_32='(31,32)', UT_32_31='(32,31)', UT_32_32='(32,32)', UT_00_33='(0,33)', UT_33_00='(33,0)', UT_33_01='(33,1)', UT_02_33='(2,33)', UT_33_02='(33,2)', UT_33_03='(33,3)', UT_04_33='(4,33)', UT_33_04='(33,4)', UT_33_05='(33,5)', UT_06_33='(6,33)', UT_33_06='(33,6)', UT_33_07='(33,7)', UT_08_33='(8,33)', UT_33_08='(33,8)', UT_33_09='(33,9)', UT_10_33='(10,33)', UT_33_10='(33,10)', UT_33_11='(33,11)', UT_12_33='(12,33)', UT_33_12='(33,12)', UT_33_13='(33,13)', UT_14_33='(14,33)', UT_33_14='(33,14)', UT_33_15='(33,15)', UT_16_33='(16,33)', UT_33_16='(33,16)', UT_33_17='(33,17)', UT_18_33='(18,33)', UT_33_18='(33,18)', UT_33_19='(33,19)', UT_20_33='(20,33)', UT_33_20='(33,20)', UT_33_21='(33,21)', UT_22_33='(22,33)', UT_33_22='(33,22)', UT_33_23='(33,23)', UT_24_33='(24,33)', UT_33_24='(33,24)', UT_33_25='(33,25)', UT_26_33='(26,33)', UT_33_26='(33,26)', UT_33_27='(33,27)', UT_28_33='(28,33)', UT_33_28='(33,28)', UT_33_29='(33,29)', UT_30_33='(30,33)', UT_33_30='(33,30)', UT_33_31='(33,31)', UT_32_33='(32,33)', UT_33_32='(33,32)', UT_01_33='(1,33)', UT_03_33='(3,33)', UT_05_33='(5,33)', UT_07_33='(7,33)', UT_09_33='(9,33)', UT_11_33='(11,33)', UT_13_33='(13,33)', UT_15_33='(15,33)', UT_17_33='(17,33)', UT_19_33='(19,33)', UT_21_33='(21,33)', UT_23_33='(23,33)', UT_25_33='(25,33)', UT_27_33='(27,33)', UT_29_33='(29,33)', UT_31_33='(31,33)', UT_33_33='(33,33)', UT_00_34='(0,34)', UT_02_34='(2,34)', UT_04_34='(4,34)', UT_06_34='(6,34)', UT_08_34='(8,34)', UT_10_34='(10,34)', UT_12_34='(12,34)', UT_14_34='(14,34)', UT_16_34='(16,34)', UT_18_34='(18,34)', UT_20_34='(20,34)', UT_22_34='(22,34)', UT_24_34='(24,34)', UT_26_34='(26,34)', UT_28_34='(28,34)', UT_30_34='(30,34)', UT_32_34='(32,34)', UT_34_00='(34,0)', UT_01_34='(1,34)', UT_34_01='(34,1)', UT_34_02='(34,2)', UT_03_34='(3,34)', UT_34_03='(34,3)', UT_34_04='(34,4)', UT_05_34='(5,34)', UT_34_05='(34,5)', UT_34_06='(34,6)', UT_07_34='(7,34)', UT_34_07='(34,7)', UT_34_08='(34,8)', UT_09_34='(9,34)', UT_34_09='(34,9)', UT_34_10='(34,10)', UT_11_34='(11,34)', UT_34_11='(34,11)', UT_34_12='(34,12)', UT_13_34='(13,34)', UT_34_13='(34,13)', UT_34_14='(34,14)', UT_15_34='(15,34)', UT_34_15='(34,15)', UT_34_16='(34,16)', UT_17_34='(17,34)', UT_34_17='(34,17)', UT_34_18='(34,18)', UT_19_34='(19,34)', UT_34_19='(34,19)', UT_34_20='(34,20)', UT_21_34='(21,34)', UT_34_21='(34,21)', UT_34_22='(34,22)', UT_23_34='(23,34)', UT_34_23='(34,23)', UT_34_24='(34,24)', UT_25_34='(25,34)', UT_34_25='(34,25)', UT_34_26='(34,26)', UT_27_34='(27,34)', UT_34_27='(34,27)', UT_34_28='(34,28)', UT_29_34='(29,34)', UT_34_29='(34,29)', UT_34_30='(34,30)', UT_31_34='(31,34)', UT_34_31='(34,31)', UT_34_32='(34,32)', UT_33_34='(33,34)', UT_34_33='(34,33)', UT_34_34='(34,34)', UT_00_35='(0,35)', UT_35_00='(35,0)', UT_35_01='(35,1)', UT_02_35='(2,35)', UT_35_02='(35,2)', UT_35_03='(35,3)', UT_04_35='(4,35)', UT_35_04='(35,4)', UT_35_05='(35,5)', UT_06_35='(6,35)', UT_35_06='(35,6)', UT_35_07='(35,7)', UT_08_35='(8,35)', UT_35_08='(35,8)', UT_35_09='(35,9)', UT_10_35='(10,35)', UT_35_10='(35,10)', UT_35_11='(35,11)', UT_12_35='(12,35)', UT_35_12='(35,12)', UT_35_13='(35,13)', UT_14_35='(14,35)', UT_35_14='(35,14)', UT_35_15='(35,15)', UT_16_35='(16,35)', UT_35_16='(35,16)', UT_35_17='(35,17)', UT_18_35='(18,35)', UT_35_18='(35,18)', UT_35_19='(35,19)', UT_20_35='(20,35)', UT_35_20='(35,20)', UT_35_21='(35,21)', UT_22_35='(22,35)', UT_35_22='(35,22)', UT_35_23='(35,23)', UT_24_35='(24,35)', UT_35_24='(35,24)', UT_35_25='(35,25)', UT_26_35='(26,35)', UT_35_26='(35,26)', UT_35_27='(35,27)', UT_28_35='(28,35)', UT_35_28='(35,28)', UT_35_29='(35,29)', UT_30_35='(30,35)', UT_35_30='(35,30)', UT_35_31='(35,31)', UT_32_35='(32,35)', UT_35_32='(35,32)', UT_35_33='(35,33)', UT_34_35='(34,35)', UT_35_34='(35,34)', UT_01_35='(1,35)', UT_03_35='(3,35)', UT_05_35='(5,35)', UT_07_35='(7,35)', UT_09_35='(9,35)', UT_11_35='(11,35)', UT_13_35='(13,35)', UT_15_35='(15,35)', UT_17_35='(17,35)', UT_19_35='(19,35)', UT_21_35='(21,35)', UT_23_35='(23,35)', UT_25_35='(25,35)', UT_27_35='(27,35)', UT_29_35='(29,35)', UT_31_35='(31,35)', UT_33_35='(33,35)', UT_35_35='(35,35)', UT_00_36='(0,36)', UT_02_36='(2,36)', UT_04_36='(4,36)', UT_06_36='(6,36)', UT_08_36='(8,36)', UT_10_36='(10,36)', UT_12_36='(12,36)', UT_14_36='(14,36)', UT_16_36='(16,36)', UT_18_36='(18,36)', UT_20_36='(20,36)', UT_22_36='(22,36)', UT_24_36='(24,36)', UT_26_36='(26,36)', UT_28_36='(28,36)', UT_30_36='(30,36)', UT_32_36='(32,36)', UT_34_36='(34,36)', UT_36_00='(36,0)', UT_01_36='(1,36)', UT_36_01='(36,1)', UT_36_02='(36,2)', UT_03_36='(3,36)', UT_36_03='(36,3)', UT_36_04='(36,4)', UT_05_36='(5,36)', UT_36_05='(36,5)', UT_36_06='(36,6)', UT_07_36='(7,36)', UT_36_07='(36,7)', UT_36_08='(36,8)', UT_09_36='(9,36)', UT_36_09='(36,9)', UT_36_10='(36,10)', UT_11_36='(11,36)', UT_36_11='(36,11)', UT_36_12='(36,12)', UT_13_36='(13,36)', UT_36_13='(36,13)', UT_36_14='(36,14)', UT_15_36='(15,36)', UT_36_15='(36,15)', UT_36_16='(36,16)', UT_17_36='(17,36)', UT_36_17='(36,17)', UT_36_18='(36,18)', UT_19_36='(19,36)', UT_36_19='(36,19)', UT_36_20='(36,20)', UT_21_36='(21,36)', UT_36_21='(36,21)', UT_36_22='(36,22)', UT_23_36='(23,36)', UT_36_23='(36,23)', UT_36_24='(36,24)', UT_25_36='(25,36)', UT_36_25='(36,25)', UT_36_26='(36,26)', UT_27_36='(27,36)', UT_36_27='(36,27)', UT_36_28='(36,28)', UT_29_36='(29,36)', UT_36_29='(36,29)', UT_36_30='(36,30)', UT_31_36='(31,36)', UT_36_31='(36,31)', UT_36_32='(36,32)', UT_33_36='(33,36)', UT_36_33='(36,33)', UT_36_34='(36,34)', UT_35_36='(35,36)', UT_36_35='(36,35)', UT_36_36='(36,36)', UT_00_37='(0,37)', UT_37_00='(37,0)', UT_37_01='(37,1)', UT_02_37='(2,37)', UT_37_02='(37,2)', UT_37_03='(37,3)', UT_04_37='(4,37)', UT_37_04='(37,4)', UT_37_05='(37,5)', UT_06_37='(6,37)', UT_37_06='(37,6)', UT_37_07='(37,7)', UT_08_37='(8,37)', UT_37_08='(37,8)', UT_37_09='(37,9)', UT_10_37='(10,37)', UT_37_10='(37,10)', UT_37_11='(37,11)', UT_12_37='(12,37)', UT_37_12='(37,12)', UT_37_13='(37,13)', UT_14_37='(14,37)', UT_37_14='(37,14)', UT_37_15='(37,15)', UT_16_37='(16,37)', UT_37_16='(37,16)', UT_37_17='(37,17)', UT_18_37='(18,37)', UT_37_18='(37,18)', UT_37_19='(37,19)', UT_20_37='(20,37)', UT_37_20='(37,20)', UT_37_21='(37,21)', UT_22_37='(22,37)', UT_37_22='(37,22)', UT_37_23='(37,23)', UT_24_37='(24,37)', UT_37_24='(37,24)', UT_37_25='(37,25)', UT_26_37='(26,37)', UT_37_26='(37,26)', UT_37_27='(37,27)', UT_28_37='(28,37)', UT_37_28='(37,28)', UT_37_29='(37,29)', UT_30_37='(30,37)', UT_37_30='(37,30)', UT_37_31='(37,31)', UT_32_37='(32,37)', UT_37_32='(37,32)', UT_37_33='(37,33)', UT_34_37='(34,37)', UT_37_34='(37,34)', UT_37_35='(37,35)', UT_36_37='(36,37)', UT_37_36='(37,36)', UT_01_37='(1,37)', UT_03_37='(3,37)', UT_05_37='(5,37)', UT_07_37='(7,37)', UT_09_37='(9,37)', UT_11_37='(11,37)', UT_13_37='(13,37)', UT_15_37='(15,37)', UT_17_37='(17,37)', UT_19_37='(19,37)', UT_21_37='(21,37)', UT_23_37='(23,37)', UT_25_37='(25,37)', UT_27_37='(27,37)', UT_29_37='(29,37)', UT_31_37='(31,37)', UT_33_37='(33,37)', UT_35_37='(35,37)', UT_37_37='(37,37)', UT_00_38='(0,38)', UT_02_38='(2,38)', UT_04_38='(4,38)', UT_06_38='(6,38)', UT_08_38='(8,38)', UT_10_38='(10,38)', UT_12_38='(12,38)', UT_14_38='(14,38)', UT_16_38='(16,38)', UT_18_38='(18,38)', UT_20_38='(20,38)', UT_22_38='(22,38)', UT_24_38='(24,38)', UT_26_38='(26,38)', UT_28_38='(28,38)', UT_30_38='(30,38)', UT_32_38='(32,38)', UT_34_38='(34,38)', UT_36_38='(36,38)', UT_38_00='(38,0)', UT_01_38='(1,38)', UT_38_01='(38,1)', UT_38_02='(38,2)', UT_03_38='(3,38)', UT_38_03='(38,3)', UT_38_04='(38,4)', UT_05_38='(5,38)', UT_38_05='(38,5)', UT_38_06='(38,6)', UT_07_38='(7,38)', UT_38_07='(38,7)', UT_38_08='(38,8)', UT_09_38='(9,38)', UT_38_09='(38,9)', UT_38_10='(38,10)', UT_11_38='(11,38)', UT_38_11='(38,11)', UT_38_12='(38,12)', UT_13_38='(13,38)', UT_38_13='(38,13)', UT_38_14='(38,14)', UT_15_38='(15,38)', UT_38_15='(38,15)', UT_38_16='(38,16)', UT_17_38='(17,38)', UT_38_17='(38,17)', UT_38_18='(38,18)', UT_19_38='(19,38)', UT_38_19='(38,19)', UT_38_20='(38,20)', UT_21_38='(21,38)', UT_38_21='(38,21)', UT_38_22='(38,22)', UT_23_38='(23,38)', UT_38_23='(38,23)', UT_38_24='(38,24)', UT_25_38='(25,38)', UT_38_25='(38,25)', UT_38_26='(38,26)', UT_27_38='(27,38)', UT_38_27='(38,27)', UT_38_28='(38,28)', UT_29_38='(29,38)', UT_38_29='(38,29)', UT_38_30='(38,30)', UT_31_38='(31,38)', UT_38_31='(38,31)', UT_38_32='(38,32)', UT_33_38='(33,38)', UT_38_33='(38,33)', UT_38_34='(38,34)', UT_35_38='(35,38)', UT_38_35='(38,35)', UT_38_36='(38,36)', UT_37_38='(37,38)', UT_38_37='(38,37)', UT_38_38='(38,38)', UT_00_39='(0,39)', UT_39_00='(39,0)', UT_39_01='(39,1)', UT_02_39='(2,39)', UT_39_02='(39,2)', UT_39_03='(39,3)', UT_04_39='(4,39)', UT_39_04='(39,4)', UT_39_05='(39,5)', UT_06_39='(6,39)', UT_39_06='(39,6)', UT_39_07='(39,7)', UT_08_39='(8,39)', UT_39_08='(39,8)', UT_39_09='(39,9)', UT_10_39='(10,39)', UT_39_10='(39,10)', UT_39_11='(39,11)', UT_12_39='(12,39)', UT_39_12='(39,12)', UT_39_13='(39,13)', UT_14_39='(14,39)', UT_39_14='(39,14)', UT_39_15='(39,15)', UT_16_39='(16,39)', UT_39_16='(39,16)', UT_39_17='(39,17)', UT_18_39='(18,39)', UT_39_18='(39,18)', UT_39_19='(39,19)', UT_20_39='(20,39)', UT_39_20='(39,20)', UT_39_21='(39,21)', UT_22_39='(22,39)', UT_39_22='(39,22)', UT_39_23='(39,23)', UT_24_39='(24,39)', UT_39_24='(39,24)', UT_39_25='(39,25)', UT_26_39='(26,39)', UT_39_26='(39,26)', UT_39_27='(39,27)', UT_28_39='(28,39)', UT_39_28='(39,28)', UT_39_29='(39,29)', UT_30_39='(30,39)', UT_39_30='(39,30)', UT_39_31='(39,31)', UT_32_39='(32,39)', UT_39_32='(39,32)', UT_39_33='(39,33)', UT_34_39='(34,39)', UT_39_34='(39,34)', UT_39_35='(39,35)', UT_36_39='(36,39)', UT_39_36='(39,36)', UT_39_37='(39,37)', UT_38_39='(38,39)', UT_39_38='(39,38)', UT_01_39='(1,39)', UT_03_39='(3,39)', UT_05_39='(5,39)', UT_07_39='(7,39)', UT_09_39='(9,39)', UT_11_39='(11,39)', UT_13_39='(13,39)', UT_15_39='(15,39)', UT_17_39='(17,39)', UT_19_39='(19,39)', UT_21_39='(21,39)', UT_23_39='(23,39)', UT_25_39='(25,39)', UT_27_39='(27,39)', UT_29_39='(29,39)', UT_31_39='(31,39)', UT_33_39='(33,39)', UT_35_39='(35,39)', UT_37_39='(37,39)', UT_39_39='(39,39)', UT_00_40='(0,40)', UT_02_40='(2,40)', UT_04_40='(4,40)', UT_06_40='(6,40)', UT_08_40='(8,40)', UT_10_40='(10,40)', UT_12_40='(12,40)', UT_14_40='(14,40)', UT_16_40='(16,40)', UT_18_40='(18,40)', UT_20_40='(20,40)', UT_22_40='(22,40)', UT_24_40='(24,40)', UT_26_40='(26,40)', UT_28_40='(28,40)', UT_30_40='(30,40)', UT_32_40='(32,40)', UT_34_40='(34,40)', UT_36_40='(36,40)', UT_38_40='(38,40)', UT_40_00='(40,0)', UT_01_40='(1,40)', UT_40_01='(40,1)', UT_40_02='(40,2)', UT_03_40='(3,40)', UT_40_03='(40,3)', UT_40_04='(40,4)', UT_05_40='(5,40)', UT_40_05='(40,5)', UT_40_06='(40,6)', UT_07_40='(7,40)', UT_40_07='(40,7)', UT_40_08='(40,8)', UT_09_40='(9,40)', UT_40_09='(40,9)', UT_40_10='(40,10)', UT_11_40='(11,40)', UT_40_11='(40,11)', UT_40_12='(40,12)', UT_13_40='(13,40)', UT_40_13='(40,13)', UT_40_14='(40,14)', UT_15_40='(15,40)', UT_40_15='(40,15)', UT_40_16='(40,16)', UT_17_40='(17,40)', UT_40_17='(40,17)', UT_40_18='(40,18)', UT_19_40='(19,40)', UT_40_19='(40,19)', UT_40_20='(40,20)', UT_21_40='(21,40)', UT_40_21='(40,21)', UT_40_22='(40,22)', UT_23_40='(23,40)', UT_40_23='(40,23)', UT_40_24='(40,24)', UT_25_40='(25,40)', UT_40_25='(40,25)', UT_40_26='(40,26)', UT_27_40='(27,40)', UT_40_27='(40,27)', UT_40_28='(40,28)', UT_29_40='(29,40)', UT_40_29='(40,29)', UT_40_30='(40,30)', UT_31_40='(31,40)', UT_40_31='(40,31)', UT_40_32='(40,32)', UT_33_40='(33,40)', UT_40_33='(40,33)', UT_40_34='(40,34)', UT_35_40='(35,40)', UT_40_35='(40,35)', UT_40_36='(40,36)', UT_37_40='(37,40)', UT_40_37='(40,37)', UT_40_38='(40,38)', UT_39_40='(39,40)', UT_40_39='(40,39)', UT_40_40='(40,40)', UT_00_41='(0,41)', UT_41_00='(41,0)', UT_41_01='(41,1)', UT_02_41='(2,41)', UT_41_02='(41,2)', UT_41_03='(41,3)', UT_04_41='(4,41)', UT_41_04='(41,4)', UT_41_05='(41,5)', UT_06_41='(6,41)', UT_41_06='(41,6)', UT_41_07='(41,7)', UT_08_41='(8,41)', UT_41_08='(41,8)', UT_41_09='(41,9)', UT_10_41='(10,41)', UT_41_10='(41,10)', UT_41_11='(41,11)', UT_12_41='(12,41)', UT_41_12='(41,12)', UT_41_13='(41,13)', UT_14_41='(14,41)', UT_41_14='(41,14)', UT_41_15='(41,15)', UT_16_41='(16,41)', UT_41_16='(41,16)', UT_41_17='(41,17)', UT_18_41='(18,41)', UT_41_18='(41,18)', UT_41_19='(41,19)', UT_20_41='(20,41)', UT_41_20='(41,20)', UT_41_21='(41,21)', UT_22_41='(22,41)', UT_41_22='(41,22)', UT_41_23='(41,23)', UT_24_41='(24,41)', UT_41_24='(41,24)', UT_41_25='(41,25)', UT_26_41='(26,41)', UT_41_26='(41,26)', UT_41_27='(41,27)', UT_28_41='(28,41)', UT_41_28='(41,28)', UT_41_29='(41,29)', UT_30_41='(30,41)', UT_41_30='(41,30)', UT_41_31='(41,31)', UT_32_41='(32,41)', UT_41_32='(41,32)', UT_41_33='(41,33)', UT_34_41='(34,41)', UT_41_34='(41,34)', UT_41_35='(41,35)', UT_36_41='(36,41)', UT_41_36='(41,36)', UT_41_37='(41,37)', UT_38_41='(38,41)', UT_41_38='(41,38)', UT_41_39='(41,39)', UT_40_41='(40,41)', UT_41_40='(41,40)', UT_01_41='(1,41)', UT_03_41='(3,41)', UT_05_41='(5,41)', UT_07_41='(7,41)', UT_09_41='(9,41)', UT_11_41='(11,41)', UT_13_41='(13,41)', UT_15_41='(15,41)', UT_17_41='(17,41)', UT_19_41='(19,41)', UT_21_41='(21,41)', UT_23_41='(23,41)', UT_25_41='(25,41)', UT_27_41='(27,41)', UT_29_41='(29,41)', UT_31_41='(31,41)', UT_33_41='(33,41)', UT_35_41='(35,41)', UT_37_41='(37,41)', UT_39_41='(39,41)', UT_41_41='(41,41)', UT_00_42='(0,42)', UT_02_42='(2,42)', UT_04_42='(4,42)', UT_06_42='(6,42)', UT_08_42='(8,42)', UT_10_42='(10,42)', UT_12_42='(12,42)', UT_14_42='(14,42)', UT_16_42='(16,42)', UT_18_42='(18,42)', UT_20_42='(20,42)', UT_22_42='(22,42)', UT_24_42='(24,42)', UT_26_42='(26,42)', UT_28_42='(28,42)', UT_30_42='(30,42)', UT_32_42='(32,42)', UT_34_42='(34,42)', UT_36_42='(36,42)', UT_38_42='(38,42)', UT_40_42='(40,42)', UT_42_00='(42,0)', UT_01_42='(1,42)', UT_42_01='(42,1)', UT_42_02='(42,2)', UT_03_42='(3,42)', UT_42_03='(42,3)', UT_42_04='(42,4)', UT_05_42='(5,42)', UT_42_05='(42,5)', UT_42_06='(42,6)', UT_07_42='(7,42)', UT_42_07='(42,7)', UT_42_08='(42,8)', UT_09_42='(9,42)', UT_42_09='(42,9)', UT_42_10='(42,10)', UT_11_42='(11,42)', UT_42_11='(42,11)', UT_42_12='(42,12)', UT_13_42='(13,42)', UT_42_13='(42,13)', UT_42_14='(42,14)', UT_15_42='(15,42)', UT_42_15='(42,15)', UT_42_16='(42,16)', UT_17_42='(17,42)', UT_42_17='(42,17)', UT_42_18='(42,18)', UT_19_42='(19,42)', UT_42_19='(42,19)', UT_42_20='(42,20)', UT_21_42='(21,42)', UT_42_21='(42,21)', UT_42_22='(42,22)', UT_23_42='(23,42)', UT_42_23='(42,23)', UT_42_24='(42,24)', UT_25_42='(25,42)', UT_42_25='(42,25)', UT_42_26='(42,26)', UT_27_42='(27,42)', UT_42_27='(42,27)', UT_42_28='(42,28)', UT_29_42='(29,42)', UT_42_29='(42,29)', UT_42_30='(42,30)', UT_31_42='(31,42)', UT_42_31='(42,31)', UT_42_32='(42,32)', UT_33_42='(33,42)', UT_42_33='(42,33)', UT_42_34='(42,34)', UT_35_42='(35,42)', UT_42_35='(42,35)', UT_42_36='(42,36)', UT_37_42='(37,42)', UT_42_37='(42,37)', UT_42_38='(42,38)', UT_39_42='(39,42)', UT_42_39='(42,39)', UT_42_40='(42,40)', UT_41_42='(41,42)', UT_42_41='(42,41)', UT_42_42='(42,42)', UT_00_43='(0,43)', UT_43_00='(43,0)', UT_43_01='(43,1)', UT_02_43='(2,43)', UT_43_02='(43,2)', UT_43_03='(43,3)', UT_04_43='(4,43)', UT_43_04='(43,4)', UT_43_05='(43,5)', UT_06_43='(6,43)', UT_43_06='(43,6)', UT_43_07='(43,7)', UT_08_43='(8,43)', UT_43_08='(43,8)', UT_43_09='(43,9)', UT_10_43='(10,43)', UT_43_10='(43,10)', UT_43_11='(43,11)', UT_12_43='(12,43)', UT_43_12='(43,12)', UT_43_13='(43,13)', UT_14_43='(14,43)', UT_43_14='(43,14)', UT_43_15='(43,15)', UT_16_43='(16,43)', UT_43_16='(43,16)', UT_43_17='(43,17)', UT_18_43='(18,43)', UT_43_18='(43,18)', UT_43_19='(43,19)', UT_20_43='(20,43)', UT_43_20='(43,20)', UT_43_21='(43,21)', UT_22_43='(22,43)', UT_43_22='(43,22)', UT_43_23='(43,23)', UT_24_43='(24,43)', UT_43_24='(43,24)', UT_43_25='(43,25)', UT_26_43='(26,43)', UT_43_26='(43,26)', UT_43_27='(43,27)', UT_28_43='(28,43)', UT_43_28='(43,28)', UT_43_29='(43,29)', UT_30_43='(30,43)', UT_43_30='(43,30)', UT_43_31='(43,31)', UT_32_43='(32,43)', UT_43_32='(43,32)', UT_43_33='(43,33)', UT_34_43='(34,43)', UT_43_34='(43,34)', UT_43_35='(43,35)', UT_36_43='(36,43)', UT_43_36='(43,36)', UT_43_37='(43,37)', UT_38_43='(38,43)', UT_43_38='(43,38)', UT_43_39='(43,39)', UT_40_43='(40,43)', UT_43_40='(43,40)', UT_43_41='(43,41)', UT_42_43='(42,43)', UT_43_42='(43,42)', UT_01_43='(1,43)', UT_03_43='(3,43)', UT_05_43='(5,43)', UT_07_43='(7,43)', UT_09_43='(9,43)', UT_11_43='(11,43)', UT_13_43='(13,43)', UT_15_43='(15,43)', UT_17_43='(17,43)', UT_19_43='(19,43)', UT_21_43='(21,43)', UT_23_43='(23,43)', UT_25_43='(25,43)', UT_27_43='(27,43)', UT_29_43='(29,43)', UT_31_43='(31,43)', UT_33_43='(33,43)', UT_35_43='(35,43)', UT_37_43='(37,43)', UT_39_43='(39,43)', UT_41_43='(41,43)', UT_43_43='(43,43)', UT_00_44='(0,44)', UT_02_44='(2,44)', UT_04_44='(4,44)', UT_06_44='(6,44)', UT_08_44='(8,44)', UT_10_44='(10,44)', UT_12_44='(12,44)', UT_14_44='(14,44)', UT_16_44='(16,44)', UT_18_44='(18,44)', UT_20_44='(20,44)', UT_22_44='(22,44)', UT_24_44='(24,44)', UT_26_44='(26,44)', UT_28_44='(28,44)', UT_30_44='(30,44)', UT_32_44='(32,44)', UT_34_44='(34,44)', UT_36_44='(36,44)', UT_38_44='(38,44)', UT_40_44='(40,44)', UT_42_44='(42,44)', UT_44_00='(44,0)', UT_01_44='(1,44)', UT_44_01='(44,1)', UT_44_02='(44,2)', UT_03_44='(3,44)', UT_44_03='(44,3)', UT_44_04='(44,4)', UT_05_44='(5,44)', UT_44_05='(44,5)', UT_44_06='(44,6)', UT_07_44='(7,44)', UT_44_07='(44,7)', UT_44_08='(44,8)', UT_09_44='(9,44)', UT_44_09='(44,9)', UT_44_10='(44,10)', UT_11_44='(11,44)', UT_44_11='(44,11)', UT_44_12='(44,12)', UT_13_44='(13,44)', UT_44_13='(44,13)', UT_44_14='(44,14)', UT_15_44='(15,44)', UT_44_15='(44,15)', UT_44_16='(44,16)', UT_17_44='(17,44)', UT_44_17='(44,17)', UT_44_18='(44,18)', UT_19_44='(19,44)', UT_44_19='(44,19)', UT_44_20='(44,20)', UT_21_44='(21,44)', UT_44_21='(44,21)', UT_44_22='(44,22)', UT_23_44='(23,44)', UT_44_23='(44,23)', UT_44_24='(44,24)', UT_25_44='(25,44)', UT_44_25='(44,25)', UT_44_26='(44,26)', UT_27_44='(27,44)', UT_44_27='(44,27)', UT_44_28='(44,28)', UT_29_44='(29,44)', UT_44_29='(44,29)', UT_44_30='(44,30)', UT_31_44='(31,44)', UT_44_31='(44,31)', UT_44_32='(44,32)', UT_33_44='(33,44)', UT_44_33='(44,33)', UT_44_34='(44,34)', UT_35_44='(35,44)', UT_44_35='(44,35)', UT_44_36='(44,36)', UT_37_44='(37,44)', UT_44_37='(44,37)', UT_44_38='(44,38)', UT_39_44='(39,44)', UT_44_39='(44,39)', UT_44_40='(44,40)', UT_41_44='(41,44)', UT_44_41='(44,41)', UT_44_42='(44,42)', UT_43_44='(43,44)', UT_44_43='(44,43)', UT_44_44='(44,44)', UT_00_45='(0,45)', UT_45_00='(45,0)', UT_45_01='(45,1)', UT_02_45='(2,45)', UT_45_02='(45,2)', UT_45_03='(45,3)', UT_04_45='(4,45)', UT_45_04='(45,4)', UT_45_05='(45,5)', UT_06_45='(6,45)', UT_45_06='(45,6)', UT_45_07='(45,7)', UT_08_45='(8,45)', UT_45_08='(45,8)', UT_45_09='(45,9)', UT_10_45='(10,45)', UT_45_10='(45,10)', UT_45_11='(45,11)', UT_12_45='(12,45)', UT_45_12='(45,12)', UT_45_13='(45,13)', UT_14_45='(14,45)', UT_45_14='(45,14)', UT_45_15='(45,15)', UT_16_45='(16,45)', UT_45_16='(45,16)', UT_45_17='(45,17)', UT_18_45='(18,45)', UT_45_18='(45,18)', UT_45_19='(45,19)', UT_20_45='(20,45)', UT_45_20='(45,20)', UT_45_21='(45,21)', UT_22_45='(22,45)', UT_45_22='(45,22)', UT_45_23='(45,23)', UT_24_45='(24,45)', UT_45_24='(45,24)', UT_45_25='(45,25)', UT_26_45='(26,45)', UT_45_26='(45,26)', UT_45_27='(45,27)', UT_28_45='(28,45)', UT_45_28='(45,28)', UT_45_29='(45,29)', UT_30_45='(30,45)', UT_45_30='(45,30)', UT_45_31='(45,31)', UT_32_45='(32,45)', UT_45_32='(45,32)', UT_45_33='(45,33)', UT_34_45='(34,45)', UT_45_34='(45,34)', UT_45_35='(45,35)', UT_36_45='(36,45)', UT_45_36='(45,36)', UT_45_37='(45,37)', UT_38_45='(38,45)', UT_45_38='(45,38)', UT_45_39='(45,39)', UT_40_45='(40,45)', UT_45_40='(45,40)', UT_45_41='(45,41)', UT_42_45='(42,45)', UT_45_42='(45,42)', UT_45_43='(45,43)', UT_44_45='(44,45)', UT_45_44='(45,44)', UT_01_45='(1,45)', UT_03_45='(3,45)', UT_05_45='(5,45)', UT_07_45='(7,45)', UT_09_45='(9,45)', UT_11_45='(11,45)', UT_13_45='(13,45)', UT_15_45='(15,45)', UT_17_45='(17,45)', UT_19_45='(19,45)', UT_21_45='(21,45)', UT_23_45='(23,45)', UT_25_45='(25,45)', UT_27_45='(27,45)', UT_29_45='(29,45)', UT_31_45='(31,45)', UT_33_45='(33,45)', UT_35_45='(35,45)', UT_37_45='(37,45)', UT_39_45='(39,45)', UT_41_45='(41,45)', UT_43_45='(43,45)', UT_45_45='(45,45)', UT_00_46='(0,46)', UT_02_46='(2,46)', UT_04_46='(4,46)', UT_06_46='(6,46)', UT_08_46='(8,46)', UT_10_46='(10,46)', UT_12_46='(12,46)', UT_14_46='(14,46)', UT_16_46='(16,46)', UT_18_46='(18,46)', UT_20_46='(20,46)', UT_22_46='(22,46)', UT_24_46='(24,46)', UT_26_46='(26,46)', UT_28_46='(28,46)', UT_30_46='(30,46)', UT_32_46='(32,46)', UT_34_46='(34,46)', UT_36_46='(36,46)', UT_38_46='(38,46)', UT_40_46='(40,46)', UT_42_46='(42,46)', UT_44_46='(44,46)', UT_46_00='(46,0)', UT_01_46='(1,46)', UT_46_01='(46,1)', UT_46_02='(46,2)', UT_03_46='(3,46)', UT_46_03='(46,3)', UT_46_04='(46,4)', UT_05_46='(5,46)', UT_46_05='(46,5)', UT_46_06='(46,6)', UT_07_46='(7,46)', UT_46_07='(46,7)', UT_46_08='(46,8)', UT_09_46='(9,46)', UT_46_09='(46,9)', UT_46_10='(46,10)', UT_11_46='(11,46)', UT_46_11='(46,11)', UT_46_12='(46,12)', UT_13_46='(13,46)', UT_46_13='(46,13)', UT_46_14='(46,14)', UT_15_46='(15,46)', UT_46_15='(46,15)', UT_46_16='(46,16)', UT_17_46='(17,46)', UT_46_17='(46,17)', UT_46_18='(46,18)', UT_19_46='(19,46)', UT_46_19='(46,19)', UT_46_20='(46,20)', UT_21_46='(21,46)', UT_46_21='(46,21)', UT_46_22='(46,22)', UT_23_46='(23,46)', UT_46_23='(46,23)', UT_46_24='(46,24)', UT_25_46='(25,46)', UT_46_25='(46,25)', UT_46_26='(46,26)', UT_27_46='(27,46)', UT_46_27='(46,27)', UT_46_28='(46,28)', UT_29_46='(29,46)', UT_46_29='(46,29)', UT_46_30='(46,30)', UT_31_46='(31,46)', UT_46_31='(46,31)', UT_46_32='(46,32)', UT_33_46='(33,46)', UT_46_33='(46,33)', UT_46_34='(46,34)', UT_35_46='(35,46)', UT_46_35='(46,35)', UT_46_36='(46,36)', UT_37_46='(37,46)', UT_46_37='(46,37)', UT_46_38='(46,38)', UT_39_46='(39,46)', UT_46_39='(46,39)', UT_46_40='(46,40)', UT_41_46='(41,46)', UT_46_41='(46,41)', UT_46_42='(46,42)', UT_43_46='(43,46)', UT_46_43='(46,43)', UT_46_44='(46,44)', UT_45_46='(45,46)', UT_46_45='(46,45)', UT_46_46='(46,46)', UT_00_47='(0,47)', UT_47_00='(47,0)', UT_47_01='(47,1)', UT_02_47='(2,47)', UT_47_02='(47,2)', UT_47_03='(47,3)', UT_04_47='(4,47)', UT_47_04='(47,4)', UT_47_05='(47,5)', UT_06_47='(6,47)', UT_47_06='(47,6)', UT_47_07='(47,7)', UT_08_47='(8,47)', UT_47_08='(47,8)', UT_47_09='(47,9)', UT_10_47='(10,47)', UT_47_10='(47,10)', UT_47_11='(47,11)', UT_12_47='(12,47)', UT_47_12='(47,12)', UT_47_13='(47,13)', UT_14_47='(14,47)', UT_47_14='(47,14)', UT_47_15='(47,15)', UT_16_47='(16,47)', UT_47_16='(47,16)', UT_47_17='(47,17)', UT_18_47='(18,47)', UT_47_18='(47,18)', UT_47_19='(47,19)', UT_20_47='(20,47)', UT_47_20='(47,20)', UT_47_21='(47,21)', UT_22_47='(22,47)', UT_47_22='(47,22)', UT_47_23='(47,23)', UT_24_47='(24,47)', UT_47_24='(47,24)', UT_47_25='(47,25)', UT_26_47='(26,47)', UT_47_26='(47,26)', UT_47_27='(47,27)', UT_28_47='(28,47)', UT_47_28='(47,28)', UT_47_29='(47,29)', UT_30_47='(30,47)', UT_47_30='(47,30)', UT_47_31='(47,31)', UT_32_47='(32,47)', UT_47_32='(47,32)', UT_47_33='(47,33)', UT_34_47='(34,47)', UT_47_34='(47,34)', UT_47_35='(47,35)', UT_36_47='(36,47)', UT_47_36='(47,36)', UT_47_37='(47,37)', UT_38_47='(38,47)', UT_47_38='(47,38)', UT_47_39='(47,39)', UT_40_47='(40,47)', UT_47_40='(47,40)', UT_47_41='(47,41)', UT_42_47='(42,47)', UT_47_42='(47,42)', UT_47_43='(47,43)', UT_44_47='(44,47)', UT_47_44='(47,44)', UT_47_45='(47,45)', UT_46_47='(46,47)', UT_47_46='(47,46)', UT_01_47='(1,47)', UT_03_47='(3,47)', UT_05_47='(5,47)', UT_07_47='(7,47)', UT_09_47='(9,47)', UT_11_47='(11,47)', UT_13_47='(13,47)', UT_15_47='(15,47)', UT_17_47='(17,47)', UT_19_47='(19,47)', UT_21_47='(21,47)', UT_23_47='(23,47)', UT_25_47='(25,47)', UT_27_47='(27,47)', UT_29_47='(29,47)', UT_31_47='(31,47)', UT_33_47='(33,47)', UT_35_47='(35,47)', UT_37_47='(37,47)', UT_39_47='(39,47)', UT_41_47='(41,47)', UT_43_47='(43,47)', UT_45_47='(45,47)', UT_47_47='(47,47)', UT_00_48='(0,48)', UT_02_48='(2,48)', UT_04_48='(4,48)', UT_06_48='(6,48)', UT_08_48='(8,48)', UT_10_48='(10,48)', UT_12_48='(12,48)', UT_14_48='(14,48)', UT_16_48='(16,48)', UT_18_48='(18,48)', UT_20_48='(20,48)', UT_22_48='(22,48)', UT_24_48='(24,48)', UT_26_48='(26,48)', UT_28_48='(28,48)', UT_30_48='(30,48)', UT_32_48='(32,48)', UT_34_48='(34,48)', UT_36_48='(36,48)', UT_38_48='(38,48)', UT_40_48='(40,48)', UT_42_48='(42,48)', UT_44_48='(44,48)', UT_46_48='(46,48)', UT_48_00='(48,0)', UT_01_48='(1,48)', UT_48_01='(48,1)', UT_48_02='(48,2)', UT_03_48='(3,48)', UT_48_03='(48,3)', UT_48_04='(48,4)', UT_05_48='(5,48)', UT_48_05='(48,5)', UT_48_06='(48,6)', UT_07_48='(7,48)', UT_48_07='(48,7)', UT_48_08='(48,8)', UT_09_48='(9,48)', UT_48_09='(48,9)', UT_48_10='(48,10)', UT_11_48='(11,48)', UT_48_11='(48,11)', UT_48_12='(48,12)', UT_13_48='(13,48)', UT_48_13='(48,13)', UT_48_14='(48,14)', UT_15_48='(15,48)', UT_48_15='(48,15)', UT_48_16='(48,16)', UT_17_48='(17,48)', UT_48_17='(48,17)', UT_48_18='(48,18)', UT_19_48='(19,48)', UT_48_19='(48,19)', UT_48_20='(48,20)', UT_21_48='(21,48)', UT_48_21='(48,21)', UT_48_22='(48,22)', UT_23_48='(23,48)', UT_48_23='(48,23)', UT_48_24='(48,24)', UT_25_48='(25,48)', UT_48_25='(48,25)', UT_48_26='(48,26)', UT_27_48='(27,48)', UT_48_27='(48,27)', UT_48_28='(48,28)', UT_29_48='(29,48)', UT_48_29='(48,29)', UT_48_30='(48,30)', UT_31_48='(31,48)', UT_48_31='(48,31)', UT_48_32='(48,32)', UT_33_48='(33,48)', UT_48_33='(48,33)', UT_48_34='(48,34)', UT_35_48='(35,48)', UT_48_35='(48,35)', UT_48_36='(48,36)', UT_37_48='(37,48)', UT_48_37='(48,37)', UT_48_38='(48,38)', UT_39_48='(39,48)', UT_48_39='(48,39)', UT_48_40='(48,40)', UT_41_48='(41,48)', UT_48_41='(48,41)', UT_48_42='(48,42)', UT_43_48='(43,48)', UT_48_43='(48,43)', UT_48_44='(48,44)', UT_45_48='(45,48)', UT_48_45='(48,45)', UT_48_46='(48,46)', UT_47_48='(47,48)', UT_48_47='(48,47)', UT_48_48='(48,48)', UT_00_49='(0,49)', UT_49_00='(49,0)', UT_49_01='(49,1)', UT_02_49='(2,49)', UT_49_02='(49,2)', UT_49_03='(49,3)', UT_04_49='(4,49)', UT_49_04='(49,4)', UT_49_05='(49,5)', UT_06_49='(6,49)', UT_49_06='(49,6)', UT_49_07='(49,7)', UT_08_49='(8,49)', UT_49_08='(49,8)', UT_49_09='(49,9)', UT_10_49='(10,49)', UT_49_10='(49,10)', UT_49_11='(49,11)', UT_12_49='(12,49)', UT_49_12='(49,12)', UT_49_13='(49,13)', UT_14_49='(14,49)', UT_49_14='(49,14)', UT_49_15='(49,15)', UT_16_49='(16,49)', UT_49_16='(49,16)', UT_49_17='(49,17)', UT_18_49='(18,49)', UT_49_18='(49,18)', UT_49_19='(49,19)', UT_20_49='(20,49)', UT_49_20='(49,20)', UT_49_21='(49,21)', UT_22_49='(22,49)', UT_49_22='(49,22)', UT_49_23='(49,23)', UT_24_49='(24,49)', UT_49_24='(49,24)', UT_49_25='(49,25)', UT_26_49='(26,49)', UT_49_26='(49,26)', UT_49_27='(49,27)', UT_28_49='(28,49)', UT_49_28='(49,28)', UT_49_29='(49,29)', UT_30_49='(30,49)', UT_49_30='(49,30)', UT_49_31='(49,31)', UT_32_49='(32,49)', UT_49_32='(49,32)', UT_49_33='(49,33)', UT_34_49='(34,49)', UT_49_34='(49,34)', UT_49_35='(49,35)', UT_36_49='(36,49)', UT_49_36='(49,36)', UT_49_37='(49,37)', UT_38_49='(38,49)', UT_49_38='(49,38)', UT_49_39='(49,39)', UT_40_49='(40,49)', UT_49_40='(49,40)', UT_49_41='(49,41)', UT_42_49='(42,49)', UT_49_42='(49,42)', UT_49_43='(49,43)', UT_44_49='(44,49)', UT_49_44='(49,44)', UT_49_45='(49,45)', UT_46_49='(46,49)', UT_49_46='(49,46)', UT_49_47='(49,47)', UT_48_49='(48,49)', UT_49_48='(49,48)', UT_01_49='(1,49)', UT_03_49='(3,49)', UT_05_49='(5,49)', UT_07_49='(7,49)', UT_09_49='(9,49)', UT_11_49='(11,49)', UT_13_49='(13,49)', UT_15_49='(15,49)', UT_17_49='(17,49)', UT_19_49='(19,49)', UT_21_49='(21,49)', UT_23_49='(23,49)', UT_25_49='(25,49)', UT_27_49='(27,49)', UT_29_49='(29,49)', UT_31_49='(31,49)', UT_33_49='(33,49)', UT_35_49='(35,49)', UT_37_49='(37,49)', UT_39_49='(39,49)', UT_41_49='(41,49)', UT_43_49='(43,49)', UT_45_49='(45,49)', UT_47_49='(47,49)', UT_49_49='(49,49)') +public access to universal vocabulary for MazeTokenizerModular + - VOCAB_LIST: list[str] = ['', '', '', '', '', '', '', '', '<-->', ';', '', '(', ',', ')', '=', '||', ':', 'THEN', '-', '', 'TARGET_A', 'TARGET_B', 'TARGET_C', 'TARGET_D', 'TARGET_E', 'TARGET_F', 'TARGET_G', 'TARGET_H', 'TARGET_I', 'TARGET_J', 'TARGET_K', 'TARGET_L', 'TARGET_M', 'TARGET_N', 'TARGET_O', 'TARGET_P', 'TARGET_Q', 'TARGET_R', 'TARGET_S', 'TARGET_T', 'TARGET_U', 'TARGET_V', 'TARGET_W', 'TARGET_X', 'TARGET_Y', 'TARGET_Z', 'TARGET_NORTH', 'TARGET_SOUTH', 'TARGET_EAST', 'TARGET_WEST', 'TARGET_NORTHEAST', 'TARGET_NORTHWEST', 'TARGET_SOUTHEAST', 'TARGET_SOUTHWEST', 'TARGET_CENTER', 'NORTH', 'SOUTH', 'EAST', 'WEST', 'FORWARD', 'BACKWARD', 'LEFT', 'RIGHT', 'STAY', '+0', '+1', '+2', '+3', '+4', '+5', '+6', '+7', '+8', '+9', '+10', '+11', '+12', '+13', '+14', '+15', '+16', '+17', '+18', '+19', '+20', '+21', '+22', '+23', '+24', '+25', '+26', '+27', '+28', '+29', '+30', '+31', '+32', '+33', '+34', '+35', '+36', '+37', '+38', '+39', '+40', '+41', '+42', '+43', '+44', '+45', '+46', '+47', '+48', '+49', '+50', '+51', '+52', '+53', '+54', '+55', '+56', '+57', '+58', '+59', '+60', '+61', '+62', '+63', '+64', '+65', '+66', '+67', '+68', '+69', '+70', '+71', '+72', '+73', '+74', '+75', '+76', '+77', '+78', '+79', '+80', '+81', '+82', '+83', '+84', '+85', '+86', '+87', '+88', '+89', '+90', '+91', '+92', '+93', '+94', '+95', '+96', '+97', '+98', '+99', '+100', '+101', '+102', '+103', '+104', '+105', '+106', '+107', '+108', '+109', '+110', '+111', '+112', '+113', '+114', '+115', '+116', '+117', '+118', '+119', '+120', '+121', '+122', '+123', '+124', '+125', '+126', '+127', '+128', '+129', '+130', '+131', '+132', '+133', '+134', '+135', '+136', '+137', '+138', '+139', '+140', '+141', '+142', '+143', '+144', '+145', '+146', '+147', '+148', '+149', '+150', '+151', '+152', '+153', '+154', '+155', '+156', '+157', '+158', '+159', '+160', '+161', '+162', '+163', '+164', '+165', '+166', '+167', '+168', '+169', '+170', '+171', '+172', '+173', '+174', '+175', '+176', '+177', '+178', '+179', '+180', '+181', '+182', '+183', '+184', '+185', '+186', '+187', '+188', '+189', '+190', '+191', '+192', '+193', '+194', '+195', '+196', '+197', '+198', '+199', '+200', '+201', '+202', '+203', '+204', '+205', '+206', '+207', '+208', '+209', '+210', '+211', '+212', '+213', '+214', '+215', '+216', '+217', '+218', '+219', '+220', '+221', '+222', '+223', '+224', '+225', '+226', '+227', '+228', '+229', '+230', '+231', '+232', '+233', '+234', '+235', '+236', '+237', '+238', '+239', '+240', '+241', '+242', '+243', '+244', '+245', '+246', '+247', '+248', '+249', '+250', '+251', '+252', '+253', '+254', '+255', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '-256', '-255', '-254', '-253', '-252', '-251', '-250', '-249', '-248', '-247', '-246', '-245', '-244', '-243', '-242', '-241', '-240', '-239', '-238', '-237', '-236', '-235', '-234', '-233', '-232', '-231', '-230', '-229', '-228', '-227', '-226', '-225', '-224', '-223', '-222', '-221', '-220', '-219', '-218', '-217', '-216', '-215', '-214', '-213', '-212', '-211', '-210', '-209', '-208', '-207', '-206', '-205', '-204', '-203', '-202', '-201', '-200', '-199', '-198', '-197', '-196', '-195', '-194', '-193', '-192', '-191', '-190', '-189', '-188', '-187', '-186', '-185', '-184', '-183', '-182', '-181', '-180', '-179', '-178', '-177', '-176', '-175', '-174', '-173', '-172', '-171', '-170', '-169', '-168', '-167', '-166', '-165', '-164', '-163', '-162', '-161', '-160', '-159', '-158', '-157', '-156', '-155', '-154', '-153', '-152', '-151', '-150', '-149', '-148', '-147', '-146', '-145', '-144', '-143', '-142', '-141', '-140', '-139', '-138', '-137', '-136', '-135', '-134', '-133', '-132', '-131', '-130', '-129', '-128', '-127', '-126', '-125', '-124', '-123', '-122', '-121', '-120', '-119', '-118', '-117', '-116', '-115', '-114', '-113', '-112', '-111', '-110', '-109', '-108', '-107', '-106', '-105', '-104', '-103', '-102', '-101', '-100', '-99', '-98', '-97', '-96', '-95', '-94', '-93', '-92', '-91', '-90', '-89', '-88', '-87', '-86', '-85', '-84', '-83', '-82', '-81', '-80', '-79', '-78', '-77', '-76', '-75', '-74', '-73', '-72', '-71', '-70', '-69', '-68', '-67', '-66', '-65', '-64', '-63', '-62', '-61', '-60', '-59', '-58', '-57', '-56', '-55', '-54', '-53', '-52', '-51', '-50', '-49', '-48', '-47', '-46', '-45', '-44', '-43', '-42', '-41', '-40', '-39', '-38', '-37', '-36', '-35', '-34', '-33', '-32', '-31', '-30', '-29', '-28', '-27', '-26', '-25', '-24', '-23', '-22', '-21', '-20', '-19', '-18', '-17', '-16', '-15', '-14', '-13', '-12', '-11', '-10', '-9', '-8', '-7', '-6', '-5', '-4', '-3', '-2', '-1', 'STEP', 'ADJ_GROUP', '&', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '(0,0)', '(0,1)', '(1,0)', '(1,1)', '(0,2)', '(2,0)', '(1,2)', '(2,1)', '(2,2)', '(0,3)', '(3,0)', '(3,1)', '(2,3)', '(3,2)', '(1,3)', '(3,3)', '(0,4)', '(2,4)', '(4,0)', '(1,4)', '(4,1)', '(4,2)', '(3,4)', '(4,3)', '(4,4)', '(0,5)', '(5,0)', '(5,1)', '(2,5)', '(5,2)', '(5,3)', '(4,5)', '(5,4)', '(1,5)', '(3,5)', '(5,5)', '(0,6)', '(2,6)', '(4,6)', '(6,0)', '(1,6)', '(6,1)', '(6,2)', '(3,6)', '(6,3)', '(6,4)', '(5,6)', '(6,5)', '(6,6)', '(0,7)', '(7,0)', '(7,1)', '(2,7)', '(7,2)', '(7,3)', '(4,7)', '(7,4)', '(7,5)', '(6,7)', '(7,6)', '(1,7)', '(3,7)', '(5,7)', '(7,7)', '(0,8)', '(2,8)', '(4,8)', '(6,8)', '(8,0)', '(1,8)', '(8,1)', '(8,2)', '(3,8)', '(8,3)', '(8,4)', '(5,8)', '(8,5)', '(8,6)', '(7,8)', '(8,7)', '(8,8)', '(0,9)', '(9,0)', '(9,1)', '(2,9)', '(9,2)', '(9,3)', '(4,9)', '(9,4)', '(9,5)', '(6,9)', '(9,6)', '(9,7)', '(8,9)', '(9,8)', '(1,9)', '(3,9)', '(5,9)', '(7,9)', '(9,9)', '(0,10)', '(2,10)', '(4,10)', '(6,10)', '(8,10)', '(10,0)', '(1,10)', '(10,1)', '(10,2)', '(3,10)', '(10,3)', '(10,4)', '(5,10)', '(10,5)', '(10,6)', '(7,10)', '(10,7)', '(10,8)', '(9,10)', '(10,9)', '(10,10)', '(0,11)', '(11,0)', '(11,1)', '(2,11)', '(11,2)', '(11,3)', '(4,11)', '(11,4)', '(11,5)', '(6,11)', '(11,6)', '(11,7)', '(8,11)', '(11,8)', '(11,9)', '(10,11)', '(11,10)', '(1,11)', '(3,11)', '(5,11)', '(7,11)', '(9,11)', '(11,11)', '(0,12)', '(2,12)', '(4,12)', '(6,12)', '(8,12)', '(10,12)', '(12,0)', '(1,12)', '(12,1)', '(12,2)', '(3,12)', '(12,3)', '(12,4)', '(5,12)', '(12,5)', '(12,6)', '(7,12)', '(12,7)', '(12,8)', '(9,12)', '(12,9)', '(12,10)', '(11,12)', '(12,11)', '(12,12)', '(0,13)', '(13,0)', '(13,1)', '(2,13)', '(13,2)', '(13,3)', '(4,13)', '(13,4)', '(13,5)', '(6,13)', '(13,6)', '(13,7)', '(8,13)', '(13,8)', '(13,9)', '(10,13)', '(13,10)', '(13,11)', '(12,13)', '(13,12)', '(1,13)', '(3,13)', '(5,13)', '(7,13)', '(9,13)', '(11,13)', '(13,13)', '(0,14)', '(2,14)', '(4,14)', '(6,14)', '(8,14)', '(10,14)', '(12,14)', '(14,0)', '(1,14)', '(14,1)', '(14,2)', '(3,14)', '(14,3)', '(14,4)', '(5,14)', '(14,5)', '(14,6)', '(7,14)', '(14,7)', '(14,8)', '(9,14)', '(14,9)', '(14,10)', '(11,14)', '(14,11)', '(14,12)', '(13,14)', '(14,13)', '(14,14)', '(0,15)', '(15,0)', '(15,1)', '(2,15)', '(15,2)', '(15,3)', '(4,15)', '(15,4)', '(15,5)', '(6,15)', '(15,6)', '(15,7)', '(8,15)', '(15,8)', '(15,9)', '(10,15)', '(15,10)', '(15,11)', '(12,15)', '(15,12)', '(15,13)', '(14,15)', '(15,14)', '(1,15)', '(3,15)', '(5,15)', '(7,15)', '(9,15)', '(11,15)', '(13,15)', '(15,15)', '(0,16)', '(2,16)', '(4,16)', '(6,16)', '(8,16)', '(10,16)', '(12,16)', '(14,16)', '(16,0)', '(1,16)', '(16,1)', '(16,2)', '(3,16)', '(16,3)', '(16,4)', '(5,16)', '(16,5)', '(16,6)', '(7,16)', '(16,7)', '(16,8)', '(9,16)', '(16,9)', '(16,10)', '(11,16)', '(16,11)', '(16,12)', '(13,16)', '(16,13)', '(16,14)', '(15,16)', '(16,15)', '(16,16)', '(0,17)', '(17,0)', '(17,1)', '(2,17)', '(17,2)', '(17,3)', '(4,17)', '(17,4)', '(17,5)', '(6,17)', '(17,6)', '(17,7)', '(8,17)', '(17,8)', '(17,9)', '(10,17)', '(17,10)', '(17,11)', '(12,17)', '(17,12)', '(17,13)', '(14,17)', '(17,14)', '(17,15)', '(16,17)', '(17,16)', '(1,17)', '(3,17)', '(5,17)', '(7,17)', '(9,17)', '(11,17)', '(13,17)', '(15,17)', '(17,17)', '(0,18)', '(2,18)', '(4,18)', '(6,18)', '(8,18)', '(10,18)', '(12,18)', '(14,18)', '(16,18)', '(18,0)', '(1,18)', '(18,1)', '(18,2)', '(3,18)', '(18,3)', '(18,4)', '(5,18)', '(18,5)', '(18,6)', '(7,18)', '(18,7)', '(18,8)', '(9,18)', '(18,9)', '(18,10)', '(11,18)', '(18,11)', '(18,12)', '(13,18)', '(18,13)', '(18,14)', '(15,18)', '(18,15)', '(18,16)', '(17,18)', '(18,17)', '(18,18)', '(0,19)', '(19,0)', '(19,1)', '(2,19)', '(19,2)', '(19,3)', '(4,19)', '(19,4)', '(19,5)', '(6,19)', '(19,6)', '(19,7)', '(8,19)', '(19,8)', '(19,9)', '(10,19)', '(19,10)', '(19,11)', '(12,19)', '(19,12)', '(19,13)', '(14,19)', '(19,14)', '(19,15)', '(16,19)', '(19,16)', '(19,17)', '(18,19)', '(19,18)', '(1,19)', '(3,19)', '(5,19)', '(7,19)', '(9,19)', '(11,19)', '(13,19)', '(15,19)', '(17,19)', '(19,19)', '(0,20)', '(2,20)', '(4,20)', '(6,20)', '(8,20)', '(10,20)', '(12,20)', '(14,20)', '(16,20)', '(18,20)', '(20,0)', '(1,20)', '(20,1)', '(20,2)', '(3,20)', '(20,3)', '(20,4)', '(5,20)', '(20,5)', '(20,6)', '(7,20)', '(20,7)', '(20,8)', '(9,20)', '(20,9)', '(20,10)', '(11,20)', '(20,11)', '(20,12)', '(13,20)', '(20,13)', '(20,14)', '(15,20)', '(20,15)', '(20,16)', '(17,20)', '(20,17)', '(20,18)', '(19,20)', '(20,19)', '(20,20)', '(0,21)', '(21,0)', '(21,1)', '(2,21)', '(21,2)', '(21,3)', '(4,21)', '(21,4)', '(21,5)', '(6,21)', '(21,6)', '(21,7)', '(8,21)', '(21,8)', '(21,9)', '(10,21)', '(21,10)', '(21,11)', '(12,21)', '(21,12)', '(21,13)', '(14,21)', '(21,14)', '(21,15)', '(16,21)', '(21,16)', '(21,17)', '(18,21)', '(21,18)', '(21,19)', '(20,21)', '(21,20)', '(1,21)', '(3,21)', '(5,21)', '(7,21)', '(9,21)', '(11,21)', '(13,21)', '(15,21)', '(17,21)', '(19,21)', '(21,21)', '(0,22)', '(2,22)', '(4,22)', '(6,22)', '(8,22)', '(10,22)', '(12,22)', '(14,22)', '(16,22)', '(18,22)', '(20,22)', '(22,0)', '(1,22)', '(22,1)', '(22,2)', '(3,22)', '(22,3)', '(22,4)', '(5,22)', '(22,5)', '(22,6)', '(7,22)', '(22,7)', '(22,8)', '(9,22)', '(22,9)', '(22,10)', '(11,22)', '(22,11)', '(22,12)', '(13,22)', '(22,13)', '(22,14)', '(15,22)', '(22,15)', '(22,16)', '(17,22)', '(22,17)', '(22,18)', '(19,22)', '(22,19)', '(22,20)', '(21,22)', '(22,21)', '(22,22)', '(0,23)', '(23,0)', '(23,1)', '(2,23)', '(23,2)', '(23,3)', '(4,23)', '(23,4)', '(23,5)', '(6,23)', '(23,6)', '(23,7)', '(8,23)', '(23,8)', '(23,9)', '(10,23)', '(23,10)', '(23,11)', '(12,23)', '(23,12)', '(23,13)', '(14,23)', '(23,14)', '(23,15)', '(16,23)', '(23,16)', '(23,17)', '(18,23)', '(23,18)', '(23,19)', '(20,23)', '(23,20)', '(23,21)', '(22,23)', '(23,22)', '(1,23)', '(3,23)', '(5,23)', '(7,23)', '(9,23)', '(11,23)', '(13,23)', '(15,23)', '(17,23)', '(19,23)', '(21,23)', '(23,23)', '(0,24)', '(2,24)', '(4,24)', '(6,24)', '(8,24)', '(10,24)', '(12,24)', '(14,24)', '(16,24)', '(18,24)', '(20,24)', '(22,24)', '(24,0)', '(1,24)', '(24,1)', '(24,2)', '(3,24)', '(24,3)', '(24,4)', '(5,24)', '(24,5)', '(24,6)', '(7,24)', '(24,7)', '(24,8)', '(9,24)', '(24,9)', '(24,10)', '(11,24)', '(24,11)', '(24,12)', '(13,24)', '(24,13)', '(24,14)', '(15,24)', '(24,15)', '(24,16)', '(17,24)', '(24,17)', '(24,18)', '(19,24)', '(24,19)', '(24,20)', '(21,24)', '(24,21)', '(24,22)', '(23,24)', '(24,23)', '(24,24)', '(0,25)', '(25,0)', '(25,1)', '(2,25)', '(25,2)', '(25,3)', '(4,25)', '(25,4)', '(25,5)', '(6,25)', '(25,6)', '(25,7)', '(8,25)', '(25,8)', '(25,9)', '(10,25)', '(25,10)', '(25,11)', '(12,25)', '(25,12)', '(25,13)', '(14,25)', '(25,14)', '(25,15)', '(16,25)', '(25,16)', '(25,17)', '(18,25)', '(25,18)', '(25,19)', '(20,25)', '(25,20)', '(25,21)', '(22,25)', '(25,22)', '(25,23)', '(24,25)', '(25,24)', '(1,25)', '(3,25)', '(5,25)', '(7,25)', '(9,25)', '(11,25)', '(13,25)', '(15,25)', '(17,25)', '(19,25)', '(21,25)', '(23,25)', '(25,25)', '(0,26)', '(2,26)', '(4,26)', '(6,26)', '(8,26)', '(10,26)', '(12,26)', '(14,26)', '(16,26)', '(18,26)', '(20,26)', '(22,26)', '(24,26)', '(26,0)', '(1,26)', '(26,1)', '(26,2)', '(3,26)', '(26,3)', '(26,4)', '(5,26)', '(26,5)', '(26,6)', '(7,26)', '(26,7)', '(26,8)', '(9,26)', '(26,9)', '(26,10)', '(11,26)', '(26,11)', '(26,12)', '(13,26)', '(26,13)', '(26,14)', '(15,26)', '(26,15)', '(26,16)', '(17,26)', '(26,17)', '(26,18)', '(19,26)', '(26,19)', '(26,20)', '(21,26)', '(26,21)', '(26,22)', '(23,26)', '(26,23)', '(26,24)', '(25,26)', '(26,25)', '(26,26)', '(0,27)', '(27,0)', '(27,1)', '(2,27)', '(27,2)', '(27,3)', '(4,27)', '(27,4)', '(27,5)', '(6,27)', '(27,6)', '(27,7)', '(8,27)', '(27,8)', '(27,9)', '(10,27)', '(27,10)', '(27,11)', '(12,27)', '(27,12)', '(27,13)', '(14,27)', '(27,14)', '(27,15)', '(16,27)', '(27,16)', '(27,17)', '(18,27)', '(27,18)', '(27,19)', '(20,27)', '(27,20)', '(27,21)', '(22,27)', '(27,22)', '(27,23)', '(24,27)', '(27,24)', '(27,25)', '(26,27)', '(27,26)', '(1,27)', '(3,27)', '(5,27)', '(7,27)', '(9,27)', '(11,27)', '(13,27)', '(15,27)', '(17,27)', '(19,27)', '(21,27)', '(23,27)', '(25,27)', '(27,27)', '(0,28)', '(2,28)', '(4,28)', '(6,28)', '(8,28)', '(10,28)', '(12,28)', '(14,28)', '(16,28)', '(18,28)', '(20,28)', '(22,28)', '(24,28)', '(26,28)', '(28,0)', '(1,28)', '(28,1)', '(28,2)', '(3,28)', '(28,3)', '(28,4)', '(5,28)', '(28,5)', '(28,6)', '(7,28)', '(28,7)', '(28,8)', '(9,28)', '(28,9)', '(28,10)', '(11,28)', '(28,11)', '(28,12)', '(13,28)', '(28,13)', '(28,14)', '(15,28)', '(28,15)', '(28,16)', '(17,28)', '(28,17)', '(28,18)', '(19,28)', '(28,19)', '(28,20)', '(21,28)', '(28,21)', '(28,22)', '(23,28)', '(28,23)', '(28,24)', '(25,28)', '(28,25)', '(28,26)', '(27,28)', '(28,27)', '(28,28)', '(0,29)', '(29,0)', '(29,1)', '(2,29)', '(29,2)', '(29,3)', '(4,29)', '(29,4)', '(29,5)', '(6,29)', '(29,6)', '(29,7)', '(8,29)', '(29,8)', '(29,9)', '(10,29)', '(29,10)', '(29,11)', '(12,29)', '(29,12)', '(29,13)', '(14,29)', '(29,14)', '(29,15)', '(16,29)', '(29,16)', '(29,17)', '(18,29)', '(29,18)', '(29,19)', '(20,29)', '(29,20)', '(29,21)', '(22,29)', '(29,22)', '(29,23)', '(24,29)', '(29,24)', '(29,25)', '(26,29)', '(29,26)', '(29,27)', '(28,29)', '(29,28)', '(1,29)', '(3,29)', '(5,29)', '(7,29)', '(9,29)', '(11,29)', '(13,29)', '(15,29)', '(17,29)', '(19,29)', '(21,29)', '(23,29)', '(25,29)', '(27,29)', '(29,29)', '(0,30)', '(2,30)', '(4,30)', '(6,30)', '(8,30)', '(10,30)', '(12,30)', '(14,30)', '(16,30)', '(18,30)', '(20,30)', '(22,30)', '(24,30)', '(26,30)', '(28,30)', '(30,0)', '(1,30)', '(30,1)', '(30,2)', '(3,30)', '(30,3)', '(30,4)', '(5,30)', '(30,5)', '(30,6)', '(7,30)', '(30,7)', '(30,8)', '(9,30)', '(30,9)', '(30,10)', '(11,30)', '(30,11)', '(30,12)', '(13,30)', '(30,13)', '(30,14)', '(15,30)', '(30,15)', '(30,16)', '(17,30)', '(30,17)', '(30,18)', '(19,30)', '(30,19)', '(30,20)', '(21,30)', '(30,21)', '(30,22)', '(23,30)', '(30,23)', '(30,24)', '(25,30)', '(30,25)', '(30,26)', '(27,30)', '(30,27)', '(30,28)', '(29,30)', '(30,29)', '(30,30)', '(0,31)', '(31,0)', '(31,1)', '(2,31)', '(31,2)', '(31,3)', '(4,31)', '(31,4)', '(31,5)', '(6,31)', '(31,6)', '(31,7)', '(8,31)', '(31,8)', '(31,9)', '(10,31)', '(31,10)', '(31,11)', '(12,31)', '(31,12)', '(31,13)', '(14,31)', '(31,14)', '(31,15)', '(16,31)', '(31,16)', '(31,17)', '(18,31)', '(31,18)', '(31,19)', '(20,31)', '(31,20)', '(31,21)', '(22,31)', '(31,22)', '(31,23)', '(24,31)', '(31,24)', '(31,25)', '(26,31)', '(31,26)', '(31,27)', '(28,31)', '(31,28)', '(31,29)', '(30,31)', '(31,30)', '(1,31)', '(3,31)', '(5,31)', '(7,31)', '(9,31)', '(11,31)', '(13,31)', '(15,31)', '(17,31)', '(19,31)', '(21,31)', '(23,31)', '(25,31)', '(27,31)', '(29,31)', '(31,31)', '(0,32)', '(2,32)', '(4,32)', '(6,32)', '(8,32)', '(10,32)', '(12,32)', '(14,32)', '(16,32)', '(18,32)', '(20,32)', '(22,32)', '(24,32)', '(26,32)', '(28,32)', '(30,32)', '(32,0)', '(1,32)', '(32,1)', '(32,2)', '(3,32)', '(32,3)', '(32,4)', '(5,32)', '(32,5)', '(32,6)', '(7,32)', '(32,7)', '(32,8)', '(9,32)', '(32,9)', '(32,10)', '(11,32)', '(32,11)', '(32,12)', '(13,32)', '(32,13)', '(32,14)', '(15,32)', '(32,15)', '(32,16)', '(17,32)', '(32,17)', '(32,18)', '(19,32)', '(32,19)', '(32,20)', '(21,32)', '(32,21)', '(32,22)', '(23,32)', '(32,23)', '(32,24)', '(25,32)', '(32,25)', '(32,26)', '(27,32)', '(32,27)', '(32,28)', '(29,32)', '(32,29)', '(32,30)', '(31,32)', '(32,31)', '(32,32)', '(0,33)', '(33,0)', '(33,1)', '(2,33)', '(33,2)', '(33,3)', '(4,33)', '(33,4)', '(33,5)', '(6,33)', '(33,6)', '(33,7)', '(8,33)', '(33,8)', '(33,9)', '(10,33)', '(33,10)', '(33,11)', '(12,33)', '(33,12)', '(33,13)', '(14,33)', '(33,14)', '(33,15)', '(16,33)', '(33,16)', '(33,17)', '(18,33)', '(33,18)', '(33,19)', '(20,33)', '(33,20)', '(33,21)', '(22,33)', '(33,22)', '(33,23)', '(24,33)', '(33,24)', '(33,25)', '(26,33)', '(33,26)', '(33,27)', '(28,33)', '(33,28)', '(33,29)', '(30,33)', '(33,30)', '(33,31)', '(32,33)', '(33,32)', '(1,33)', '(3,33)', '(5,33)', '(7,33)', '(9,33)', '(11,33)', '(13,33)', '(15,33)', '(17,33)', '(19,33)', '(21,33)', '(23,33)', '(25,33)', '(27,33)', '(29,33)', '(31,33)', '(33,33)', '(0,34)', '(2,34)', '(4,34)', '(6,34)', '(8,34)', '(10,34)', '(12,34)', '(14,34)', '(16,34)', '(18,34)', '(20,34)', '(22,34)', '(24,34)', '(26,34)', '(28,34)', '(30,34)', '(32,34)', '(34,0)', '(1,34)', '(34,1)', '(34,2)', '(3,34)', '(34,3)', '(34,4)', '(5,34)', '(34,5)', '(34,6)', '(7,34)', '(34,7)', '(34,8)', '(9,34)', '(34,9)', '(34,10)', '(11,34)', '(34,11)', '(34,12)', '(13,34)', '(34,13)', '(34,14)', '(15,34)', '(34,15)', '(34,16)', '(17,34)', '(34,17)', '(34,18)', '(19,34)', '(34,19)', '(34,20)', '(21,34)', '(34,21)', '(34,22)', '(23,34)', '(34,23)', '(34,24)', '(25,34)', '(34,25)', '(34,26)', '(27,34)', '(34,27)', '(34,28)', '(29,34)', '(34,29)', '(34,30)', '(31,34)', '(34,31)', '(34,32)', '(33,34)', '(34,33)', '(34,34)', '(0,35)', '(35,0)', '(35,1)', '(2,35)', '(35,2)', '(35,3)', '(4,35)', '(35,4)', '(35,5)', '(6,35)', '(35,6)', '(35,7)', '(8,35)', '(35,8)', '(35,9)', '(10,35)', '(35,10)', '(35,11)', '(12,35)', '(35,12)', '(35,13)', '(14,35)', '(35,14)', '(35,15)', '(16,35)', '(35,16)', '(35,17)', '(18,35)', '(35,18)', '(35,19)', '(20,35)', '(35,20)', '(35,21)', '(22,35)', '(35,22)', '(35,23)', '(24,35)', '(35,24)', '(35,25)', '(26,35)', '(35,26)', '(35,27)', '(28,35)', '(35,28)', '(35,29)', '(30,35)', '(35,30)', '(35,31)', '(32,35)', '(35,32)', '(35,33)', '(34,35)', '(35,34)', '(1,35)', '(3,35)', '(5,35)', '(7,35)', '(9,35)', '(11,35)', '(13,35)', '(15,35)', '(17,35)', '(19,35)', '(21,35)', '(23,35)', '(25,35)', '(27,35)', '(29,35)', '(31,35)', '(33,35)', '(35,35)', '(0,36)', '(2,36)', '(4,36)', '(6,36)', '(8,36)', '(10,36)', '(12,36)', '(14,36)', '(16,36)', '(18,36)', '(20,36)', '(22,36)', '(24,36)', '(26,36)', '(28,36)', '(30,36)', '(32,36)', '(34,36)', '(36,0)', '(1,36)', '(36,1)', '(36,2)', '(3,36)', '(36,3)', '(36,4)', '(5,36)', '(36,5)', '(36,6)', '(7,36)', '(36,7)', '(36,8)', '(9,36)', '(36,9)', '(36,10)', '(11,36)', '(36,11)', '(36,12)', '(13,36)', '(36,13)', '(36,14)', '(15,36)', '(36,15)', '(36,16)', '(17,36)', '(36,17)', '(36,18)', '(19,36)', '(36,19)', '(36,20)', '(21,36)', '(36,21)', '(36,22)', '(23,36)', '(36,23)', '(36,24)', '(25,36)', '(36,25)', '(36,26)', '(27,36)', '(36,27)', '(36,28)', '(29,36)', '(36,29)', '(36,30)', '(31,36)', '(36,31)', '(36,32)', '(33,36)', '(36,33)', '(36,34)', '(35,36)', '(36,35)', '(36,36)', '(0,37)', '(37,0)', '(37,1)', '(2,37)', '(37,2)', '(37,3)', '(4,37)', '(37,4)', '(37,5)', '(6,37)', '(37,6)', '(37,7)', '(8,37)', '(37,8)', '(37,9)', '(10,37)', '(37,10)', '(37,11)', '(12,37)', '(37,12)', '(37,13)', '(14,37)', '(37,14)', '(37,15)', '(16,37)', '(37,16)', '(37,17)', '(18,37)', '(37,18)', '(37,19)', '(20,37)', '(37,20)', '(37,21)', '(22,37)', '(37,22)', '(37,23)', '(24,37)', '(37,24)', '(37,25)', '(26,37)', '(37,26)', '(37,27)', '(28,37)', '(37,28)', '(37,29)', '(30,37)', '(37,30)', '(37,31)', '(32,37)', '(37,32)', '(37,33)', '(34,37)', '(37,34)', '(37,35)', '(36,37)', '(37,36)', '(1,37)', '(3,37)', '(5,37)', '(7,37)', '(9,37)', '(11,37)', '(13,37)', '(15,37)', '(17,37)', '(19,37)', '(21,37)', '(23,37)', '(25,37)', '(27,37)', '(29,37)', '(31,37)', '(33,37)', '(35,37)', '(37,37)', '(0,38)', '(2,38)', '(4,38)', '(6,38)', '(8,38)', '(10,38)', '(12,38)', '(14,38)', '(16,38)', '(18,38)', '(20,38)', '(22,38)', '(24,38)', '(26,38)', '(28,38)', '(30,38)', '(32,38)', '(34,38)', '(36,38)', '(38,0)', '(1,38)', '(38,1)', '(38,2)', '(3,38)', '(38,3)', '(38,4)', '(5,38)', '(38,5)', '(38,6)', '(7,38)', '(38,7)', '(38,8)', '(9,38)', '(38,9)', '(38,10)', '(11,38)', '(38,11)', '(38,12)', '(13,38)', '(38,13)', '(38,14)', '(15,38)', '(38,15)', '(38,16)', '(17,38)', '(38,17)', '(38,18)', '(19,38)', '(38,19)', '(38,20)', '(21,38)', '(38,21)', '(38,22)', '(23,38)', '(38,23)', '(38,24)', '(25,38)', '(38,25)', '(38,26)', '(27,38)', '(38,27)', '(38,28)', '(29,38)', '(38,29)', '(38,30)', '(31,38)', '(38,31)', '(38,32)', '(33,38)', '(38,33)', '(38,34)', '(35,38)', '(38,35)', '(38,36)', '(37,38)', '(38,37)', '(38,38)', '(0,39)', '(39,0)', '(39,1)', '(2,39)', '(39,2)', '(39,3)', '(4,39)', '(39,4)', '(39,5)', '(6,39)', '(39,6)', '(39,7)', '(8,39)', '(39,8)', '(39,9)', '(10,39)', '(39,10)', '(39,11)', '(12,39)', '(39,12)', '(39,13)', '(14,39)', '(39,14)', '(39,15)', '(16,39)', '(39,16)', '(39,17)', '(18,39)', '(39,18)', '(39,19)', '(20,39)', '(39,20)', '(39,21)', '(22,39)', '(39,22)', '(39,23)', '(24,39)', '(39,24)', '(39,25)', '(26,39)', '(39,26)', '(39,27)', '(28,39)', '(39,28)', '(39,29)', '(30,39)', '(39,30)', '(39,31)', '(32,39)', '(39,32)', '(39,33)', '(34,39)', '(39,34)', '(39,35)', '(36,39)', '(39,36)', '(39,37)', '(38,39)', '(39,38)', '(1,39)', '(3,39)', '(5,39)', '(7,39)', '(9,39)', '(11,39)', '(13,39)', '(15,39)', '(17,39)', '(19,39)', '(21,39)', '(23,39)', '(25,39)', '(27,39)', '(29,39)', '(31,39)', '(33,39)', '(35,39)', '(37,39)', '(39,39)', '(0,40)', '(2,40)', '(4,40)', '(6,40)', '(8,40)', '(10,40)', '(12,40)', '(14,40)', '(16,40)', '(18,40)', '(20,40)', '(22,40)', '(24,40)', '(26,40)', '(28,40)', '(30,40)', '(32,40)', '(34,40)', '(36,40)', '(38,40)', '(40,0)', '(1,40)', '(40,1)', '(40,2)', '(3,40)', '(40,3)', '(40,4)', '(5,40)', '(40,5)', '(40,6)', '(7,40)', '(40,7)', '(40,8)', '(9,40)', '(40,9)', '(40,10)', '(11,40)', '(40,11)', '(40,12)', '(13,40)', '(40,13)', '(40,14)', '(15,40)', '(40,15)', '(40,16)', '(17,40)', '(40,17)', '(40,18)', '(19,40)', '(40,19)', '(40,20)', '(21,40)', '(40,21)', '(40,22)', '(23,40)', '(40,23)', '(40,24)', '(25,40)', '(40,25)', '(40,26)', '(27,40)', '(40,27)', '(40,28)', '(29,40)', '(40,29)', '(40,30)', '(31,40)', '(40,31)', '(40,32)', '(33,40)', '(40,33)', '(40,34)', '(35,40)', '(40,35)', '(40,36)', '(37,40)', '(40,37)', '(40,38)', '(39,40)', '(40,39)', '(40,40)', '(0,41)', '(41,0)', '(41,1)', '(2,41)', '(41,2)', '(41,3)', '(4,41)', '(41,4)', '(41,5)', '(6,41)', '(41,6)', '(41,7)', '(8,41)', '(41,8)', '(41,9)', '(10,41)', '(41,10)', '(41,11)', '(12,41)', '(41,12)', '(41,13)', '(14,41)', '(41,14)', '(41,15)', '(16,41)', '(41,16)', '(41,17)', '(18,41)', '(41,18)', '(41,19)', '(20,41)', '(41,20)', '(41,21)', '(22,41)', '(41,22)', '(41,23)', '(24,41)', '(41,24)', '(41,25)', '(26,41)', '(41,26)', '(41,27)', '(28,41)', '(41,28)', '(41,29)', '(30,41)', '(41,30)', '(41,31)', '(32,41)', '(41,32)', '(41,33)', '(34,41)', '(41,34)', '(41,35)', '(36,41)', '(41,36)', '(41,37)', '(38,41)', '(41,38)', '(41,39)', '(40,41)', '(41,40)', '(1,41)', '(3,41)', '(5,41)', '(7,41)', '(9,41)', '(11,41)', '(13,41)', '(15,41)', '(17,41)', '(19,41)', '(21,41)', '(23,41)', '(25,41)', '(27,41)', '(29,41)', '(31,41)', '(33,41)', '(35,41)', '(37,41)', '(39,41)', '(41,41)', '(0,42)', '(2,42)', '(4,42)', '(6,42)', '(8,42)', '(10,42)', '(12,42)', '(14,42)', '(16,42)', '(18,42)', '(20,42)', '(22,42)', '(24,42)', '(26,42)', '(28,42)', '(30,42)', '(32,42)', '(34,42)', '(36,42)', '(38,42)', '(40,42)', '(42,0)', '(1,42)', '(42,1)', '(42,2)', '(3,42)', '(42,3)', '(42,4)', '(5,42)', '(42,5)', '(42,6)', '(7,42)', '(42,7)', '(42,8)', '(9,42)', '(42,9)', '(42,10)', '(11,42)', '(42,11)', '(42,12)', '(13,42)', '(42,13)', '(42,14)', '(15,42)', '(42,15)', '(42,16)', '(17,42)', '(42,17)', '(42,18)', '(19,42)', '(42,19)', '(42,20)', '(21,42)', '(42,21)', '(42,22)', '(23,42)', '(42,23)', '(42,24)', '(25,42)', '(42,25)', '(42,26)', '(27,42)', '(42,27)', '(42,28)', '(29,42)', '(42,29)', '(42,30)', '(31,42)', '(42,31)', '(42,32)', '(33,42)', '(42,33)', '(42,34)', '(35,42)', '(42,35)', '(42,36)', '(37,42)', '(42,37)', '(42,38)', '(39,42)', '(42,39)', '(42,40)', '(41,42)', '(42,41)', '(42,42)', '(0,43)', '(43,0)', '(43,1)', '(2,43)', '(43,2)', '(43,3)', '(4,43)', '(43,4)', '(43,5)', '(6,43)', '(43,6)', '(43,7)', '(8,43)', '(43,8)', '(43,9)', '(10,43)', '(43,10)', '(43,11)', '(12,43)', '(43,12)', '(43,13)', '(14,43)', '(43,14)', '(43,15)', '(16,43)', '(43,16)', '(43,17)', '(18,43)', '(43,18)', '(43,19)', '(20,43)', '(43,20)', '(43,21)', '(22,43)', '(43,22)', '(43,23)', '(24,43)', '(43,24)', '(43,25)', '(26,43)', '(43,26)', '(43,27)', '(28,43)', '(43,28)', '(43,29)', '(30,43)', '(43,30)', '(43,31)', '(32,43)', '(43,32)', '(43,33)', '(34,43)', '(43,34)', '(43,35)', '(36,43)', '(43,36)', '(43,37)', '(38,43)', '(43,38)', '(43,39)', '(40,43)', '(43,40)', '(43,41)', '(42,43)', '(43,42)', '(1,43)', '(3,43)', '(5,43)', '(7,43)', '(9,43)', '(11,43)', '(13,43)', '(15,43)', '(17,43)', '(19,43)', '(21,43)', '(23,43)', '(25,43)', '(27,43)', '(29,43)', '(31,43)', '(33,43)', '(35,43)', '(37,43)', '(39,43)', '(41,43)', '(43,43)', '(0,44)', '(2,44)', '(4,44)', '(6,44)', '(8,44)', '(10,44)', '(12,44)', '(14,44)', '(16,44)', '(18,44)', '(20,44)', '(22,44)', '(24,44)', '(26,44)', '(28,44)', '(30,44)', '(32,44)', '(34,44)', '(36,44)', '(38,44)', '(40,44)', '(42,44)', '(44,0)', '(1,44)', '(44,1)', '(44,2)', '(3,44)', '(44,3)', '(44,4)', '(5,44)', '(44,5)', '(44,6)', '(7,44)', '(44,7)', '(44,8)', '(9,44)', '(44,9)', '(44,10)', '(11,44)', '(44,11)', '(44,12)', '(13,44)', '(44,13)', '(44,14)', '(15,44)', '(44,15)', '(44,16)', '(17,44)', '(44,17)', '(44,18)', '(19,44)', '(44,19)', '(44,20)', '(21,44)', '(44,21)', '(44,22)', '(23,44)', '(44,23)', '(44,24)', '(25,44)', '(44,25)', '(44,26)', '(27,44)', '(44,27)', '(44,28)', '(29,44)', '(44,29)', '(44,30)', '(31,44)', '(44,31)', '(44,32)', '(33,44)', '(44,33)', '(44,34)', '(35,44)', '(44,35)', '(44,36)', '(37,44)', '(44,37)', '(44,38)', '(39,44)', '(44,39)', '(44,40)', '(41,44)', '(44,41)', '(44,42)', '(43,44)', '(44,43)', '(44,44)', '(0,45)', '(45,0)', '(45,1)', '(2,45)', '(45,2)', '(45,3)', '(4,45)', '(45,4)', '(45,5)', '(6,45)', '(45,6)', '(45,7)', '(8,45)', '(45,8)', '(45,9)', '(10,45)', '(45,10)', '(45,11)', '(12,45)', '(45,12)', '(45,13)', '(14,45)', '(45,14)', '(45,15)', '(16,45)', '(45,16)', '(45,17)', '(18,45)', '(45,18)', '(45,19)', '(20,45)', '(45,20)', '(45,21)', '(22,45)', '(45,22)', '(45,23)', '(24,45)', '(45,24)', '(45,25)', '(26,45)', '(45,26)', '(45,27)', '(28,45)', '(45,28)', '(45,29)', '(30,45)', '(45,30)', '(45,31)', '(32,45)', '(45,32)', '(45,33)', '(34,45)', '(45,34)', '(45,35)', '(36,45)', '(45,36)', '(45,37)', '(38,45)', '(45,38)', '(45,39)', '(40,45)', '(45,40)', '(45,41)', '(42,45)', '(45,42)', '(45,43)', '(44,45)', '(45,44)', '(1,45)', '(3,45)', '(5,45)', '(7,45)', '(9,45)', '(11,45)', '(13,45)', '(15,45)', '(17,45)', '(19,45)', '(21,45)', '(23,45)', '(25,45)', '(27,45)', '(29,45)', '(31,45)', '(33,45)', '(35,45)', '(37,45)', '(39,45)', '(41,45)', '(43,45)', '(45,45)', '(0,46)', '(2,46)', '(4,46)', '(6,46)', '(8,46)', '(10,46)', '(12,46)', '(14,46)', '(16,46)', '(18,46)', '(20,46)', '(22,46)', '(24,46)', '(26,46)', '(28,46)', '(30,46)', '(32,46)', '(34,46)', '(36,46)', '(38,46)', '(40,46)', '(42,46)', '(44,46)', '(46,0)', '(1,46)', '(46,1)', '(46,2)', '(3,46)', '(46,3)', '(46,4)', '(5,46)', '(46,5)', '(46,6)', '(7,46)', '(46,7)', '(46,8)', '(9,46)', '(46,9)', '(46,10)', '(11,46)', '(46,11)', '(46,12)', '(13,46)', '(46,13)', '(46,14)', '(15,46)', '(46,15)', '(46,16)', '(17,46)', '(46,17)', '(46,18)', '(19,46)', '(46,19)', '(46,20)', '(21,46)', '(46,21)', '(46,22)', '(23,46)', '(46,23)', '(46,24)', '(25,46)', '(46,25)', '(46,26)', '(27,46)', '(46,27)', '(46,28)', '(29,46)', '(46,29)', '(46,30)', '(31,46)', '(46,31)', '(46,32)', '(33,46)', '(46,33)', '(46,34)', '(35,46)', '(46,35)', '(46,36)', '(37,46)', '(46,37)', '(46,38)', '(39,46)', '(46,39)', '(46,40)', '(41,46)', '(46,41)', '(46,42)', '(43,46)', '(46,43)', '(46,44)', '(45,46)', '(46,45)', '(46,46)', '(0,47)', '(47,0)', '(47,1)', '(2,47)', '(47,2)', '(47,3)', '(4,47)', '(47,4)', '(47,5)', '(6,47)', '(47,6)', '(47,7)', '(8,47)', '(47,8)', '(47,9)', '(10,47)', '(47,10)', '(47,11)', '(12,47)', '(47,12)', '(47,13)', '(14,47)', '(47,14)', '(47,15)', '(16,47)', '(47,16)', '(47,17)', '(18,47)', '(47,18)', '(47,19)', '(20,47)', '(47,20)', '(47,21)', '(22,47)', '(47,22)', '(47,23)', '(24,47)', '(47,24)', '(47,25)', '(26,47)', '(47,26)', '(47,27)', '(28,47)', '(47,28)', '(47,29)', '(30,47)', '(47,30)', '(47,31)', '(32,47)', '(47,32)', '(47,33)', '(34,47)', '(47,34)', '(47,35)', '(36,47)', '(47,36)', '(47,37)', '(38,47)', '(47,38)', '(47,39)', '(40,47)', '(47,40)', '(47,41)', '(42,47)', '(47,42)', '(47,43)', '(44,47)', '(47,44)', '(47,45)', '(46,47)', '(47,46)', '(1,47)', '(3,47)', '(5,47)', '(7,47)', '(9,47)', '(11,47)', '(13,47)', '(15,47)', '(17,47)', '(19,47)', '(21,47)', '(23,47)', '(25,47)', '(27,47)', '(29,47)', '(31,47)', '(33,47)', '(35,47)', '(37,47)', '(39,47)', '(41,47)', '(43,47)', '(45,47)', '(47,47)', '(0,48)', '(2,48)', '(4,48)', '(6,48)', '(8,48)', '(10,48)', '(12,48)', '(14,48)', '(16,48)', '(18,48)', '(20,48)', '(22,48)', '(24,48)', '(26,48)', '(28,48)', '(30,48)', '(32,48)', '(34,48)', '(36,48)', '(38,48)', '(40,48)', '(42,48)', '(44,48)', '(46,48)', '(48,0)', '(1,48)', '(48,1)', '(48,2)', '(3,48)', '(48,3)', '(48,4)', '(5,48)', '(48,5)', '(48,6)', '(7,48)', '(48,7)', '(48,8)', '(9,48)', '(48,9)', '(48,10)', '(11,48)', '(48,11)', '(48,12)', '(13,48)', '(48,13)', '(48,14)', '(15,48)', '(48,15)', '(48,16)', '(17,48)', '(48,17)', '(48,18)', '(19,48)', '(48,19)', '(48,20)', '(21,48)', '(48,21)', '(48,22)', '(23,48)', '(48,23)', '(48,24)', '(25,48)', '(48,25)', '(48,26)', '(27,48)', '(48,27)', '(48,28)', '(29,48)', '(48,29)', '(48,30)', '(31,48)', '(48,31)', '(48,32)', '(33,48)', '(48,33)', '(48,34)', '(35,48)', '(48,35)', '(48,36)', '(37,48)', '(48,37)', '(48,38)', '(39,48)', '(48,39)', '(48,40)', '(41,48)', '(48,41)', '(48,42)', '(43,48)', '(48,43)', '(48,44)', '(45,48)', '(48,45)', '(48,46)', '(47,48)', '(48,47)', '(48,48)', '(0,49)', '(49,0)', '(49,1)', '(2,49)', '(49,2)', '(49,3)', '(4,49)', '(49,4)', '(49,5)', '(6,49)', '(49,6)', '(49,7)', '(8,49)', '(49,8)', '(49,9)', '(10,49)', '(49,10)', '(49,11)', '(12,49)', '(49,12)', '(49,13)', '(14,49)', '(49,14)', '(49,15)', '(16,49)', '(49,16)', '(49,17)', '(18,49)', '(49,18)', '(49,19)', '(20,49)', '(49,20)', '(49,21)', '(22,49)', '(49,22)', '(49,23)', '(24,49)', '(49,24)', '(49,25)', '(26,49)', '(49,26)', '(49,27)', '(28,49)', '(49,28)', '(49,29)', '(30,49)', '(49,30)', '(49,31)', '(32,49)', '(49,32)', '(49,33)', '(34,49)', '(49,34)', '(49,35)', '(36,49)', '(49,36)', '(49,37)', '(38,49)', '(49,38)', '(49,39)', '(40,49)', '(49,40)', '(49,41)', '(42,49)', '(49,42)', '(49,43)', '(44,49)', '(49,44)', '(49,45)', '(46,49)', '(49,46)', '(49,47)', '(48,49)', '(49,48)', '(1,49)', '(3,49)', '(5,49)', '(7,49)', '(9,49)', '(11,49)', '(13,49)', '(15,49)', '(17,49)', '(19,49)', '(21,49)', '(23,49)', '(25,49)', '(27,49)', '(29,49)', '(31,49)', '(33,49)', '(35,49)', '(37,49)', '(39,49)', '(41,49)', '(43,49)', '(45,49)', '(47,49)', '(49,49)'] +list of VOCAB tokens, in order + - VOCAB_TOKEN_TO_INDEX: dict[str, int] = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '<-->': 8, ';': 9, '': 10, '(': 11, ',': 12, ')': 13, '=': 14, '||': 15, ':': 16, 'THEN': 17, '-': 18, '': 19, 'TARGET_A': 20, 'TARGET_B': 21, 'TARGET_C': 22, 'TARGET_D': 23, 'TARGET_E': 24, 'TARGET_F': 25, 'TARGET_G': 26, 'TARGET_H': 27, 'TARGET_I': 28, 'TARGET_J': 29, 'TARGET_K': 30, 'TARGET_L': 31, 'TARGET_M': 32, 'TARGET_N': 33, 'TARGET_O': 34, 'TARGET_P': 35, 'TARGET_Q': 36, 'TARGET_R': 37, 'TARGET_S': 38, 'TARGET_T': 39, 'TARGET_U': 40, 'TARGET_V': 41, 'TARGET_W': 42, 'TARGET_X': 43, 'TARGET_Y': 44, 'TARGET_Z': 45, 'TARGET_NORTH': 46, 'TARGET_SOUTH': 47, 'TARGET_EAST': 48, 'TARGET_WEST': 49, 'TARGET_NORTHEAST': 50, 'TARGET_NORTHWEST': 51, 'TARGET_SOUTHEAST': 52, 'TARGET_SOUTHWEST': 53, 'TARGET_CENTER': 54, 'NORTH': 55, 'SOUTH': 56, 'EAST': 57, 'WEST': 58, 'FORWARD': 59, 'BACKWARD': 60, 'LEFT': 61, 'RIGHT': 62, 'STAY': 63, '+0': 64, '+1': 65, '+2': 66, '+3': 67, '+4': 68, '+5': 69, '+6': 70, '+7': 71, '+8': 72, '+9': 73, '+10': 74, '+11': 75, '+12': 76, '+13': 77, '+14': 78, '+15': 79, '+16': 80, '+17': 81, '+18': 82, '+19': 83, '+20': 84, '+21': 85, '+22': 86, '+23': 87, '+24': 88, '+25': 89, '+26': 90, '+27': 91, '+28': 92, '+29': 93, '+30': 94, '+31': 95, '+32': 96, '+33': 97, '+34': 98, '+35': 99, '+36': 100, '+37': 101, '+38': 102, '+39': 103, '+40': 104, '+41': 105, '+42': 106, '+43': 107, '+44': 108, '+45': 109, '+46': 110, '+47': 111, '+48': 112, '+49': 113, '+50': 114, '+51': 115, '+52': 116, '+53': 117, '+54': 118, '+55': 119, '+56': 120, '+57': 121, '+58': 122, '+59': 123, '+60': 124, '+61': 125, '+62': 126, '+63': 127, '+64': 128, '+65': 129, '+66': 130, '+67': 131, '+68': 132, '+69': 133, '+70': 134, '+71': 135, '+72': 136, '+73': 137, '+74': 138, '+75': 139, '+76': 140, '+77': 141, '+78': 142, '+79': 143, '+80': 144, '+81': 145, '+82': 146, '+83': 147, '+84': 148, '+85': 149, '+86': 150, '+87': 151, '+88': 152, '+89': 153, '+90': 154, '+91': 155, '+92': 156, '+93': 157, '+94': 158, '+95': 159, '+96': 160, '+97': 161, '+98': 162, '+99': 163, '+100': 164, '+101': 165, '+102': 166, '+103': 167, '+104': 168, '+105': 169, '+106': 170, '+107': 171, '+108': 172, '+109': 173, '+110': 174, '+111': 175, '+112': 176, '+113': 177, '+114': 178, '+115': 179, '+116': 180, '+117': 181, '+118': 182, '+119': 183, '+120': 184, '+121': 185, '+122': 186, '+123': 187, '+124': 188, '+125': 189, '+126': 190, '+127': 191, '+128': 192, '+129': 193, '+130': 194, '+131': 195, '+132': 196, '+133': 197, '+134': 198, '+135': 199, '+136': 200, '+137': 201, '+138': 202, '+139': 203, '+140': 204, '+141': 205, '+142': 206, '+143': 207, '+144': 208, '+145': 209, '+146': 210, '+147': 211, '+148': 212, '+149': 213, '+150': 214, '+151': 215, '+152': 216, '+153': 217, '+154': 218, '+155': 219, '+156': 220, '+157': 221, '+158': 222, '+159': 223, '+160': 224, '+161': 225, '+162': 226, '+163': 227, '+164': 228, '+165': 229, '+166': 230, '+167': 231, '+168': 232, '+169': 233, '+170': 234, '+171': 235, '+172': 236, '+173': 237, '+174': 238, '+175': 239, '+176': 240, '+177': 241, '+178': 242, '+179': 243, '+180': 244, '+181': 245, '+182': 246, '+183': 247, '+184': 248, '+185': 249, '+186': 250, '+187': 251, '+188': 252, '+189': 253, '+190': 254, '+191': 255, '+192': 256, '+193': 257, '+194': 258, '+195': 259, '+196': 260, '+197': 261, '+198': 262, '+199': 263, '+200': 264, '+201': 265, '+202': 266, '+203': 267, '+204': 268, '+205': 269, '+206': 270, '+207': 271, '+208': 272, '+209': 273, '+210': 274, '+211': 275, '+212': 276, '+213': 277, '+214': 278, '+215': 279, '+216': 280, '+217': 281, '+218': 282, '+219': 283, '+220': 284, '+221': 285, '+222': 286, '+223': 287, '+224': 288, '+225': 289, '+226': 290, '+227': 291, '+228': 292, '+229': 293, '+230': 294, '+231': 295, '+232': 296, '+233': 297, '+234': 298, '+235': 299, '+236': 300, '+237': 301, '+238': 302, '+239': 303, '+240': 304, '+241': 305, '+242': 306, '+243': 307, '+244': 308, '+245': 309, '+246': 310, '+247': 311, '+248': 312, '+249': 313, '+250': 314, '+251': 315, '+252': 316, '+253': 317, '+254': 318, '+255': 319, '0': 320, '1': 321, '2': 322, '3': 323, '4': 324, '5': 325, '6': 326, '7': 327, '8': 328, '9': 329, '10': 330, '11': 331, '12': 332, '13': 333, '14': 334, '15': 335, '16': 336, '17': 337, '18': 338, '19': 339, '20': 340, '21': 341, '22': 342, '23': 343, '24': 344, '25': 345, '26': 346, '27': 347, '28': 348, '29': 349, '30': 350, '31': 351, '32': 352, '33': 353, '34': 354, '35': 355, '36': 356, '37': 357, '38': 358, '39': 359, '40': 360, '41': 361, '42': 362, '43': 363, '44': 364, '45': 365, '46': 366, '47': 367, '48': 368, '49': 369, '50': 370, '51': 371, '52': 372, '53': 373, '54': 374, '55': 375, '56': 376, '57': 377, '58': 378, '59': 379, '60': 380, '61': 381, '62': 382, '63': 383, '64': 384, '65': 385, '66': 386, '67': 387, '68': 388, '69': 389, '70': 390, '71': 391, '72': 392, '73': 393, '74': 394, '75': 395, '76': 396, '77': 397, '78': 398, '79': 399, '80': 400, '81': 401, '82': 402, '83': 403, '84': 404, '85': 405, '86': 406, '87': 407, '88': 408, '89': 409, '90': 410, '91': 411, '92': 412, '93': 413, '94': 414, '95': 415, '96': 416, '97': 417, '98': 418, '99': 419, '100': 420, '101': 421, '102': 422, '103': 423, '104': 424, '105': 425, '106': 426, '107': 427, '108': 428, '109': 429, '110': 430, '111': 431, '112': 432, '113': 433, '114': 434, '115': 435, '116': 436, '117': 437, '118': 438, '119': 439, '120': 440, '121': 441, '122': 442, '123': 443, '124': 444, '125': 445, '126': 446, '127': 447, '-256': 448, '-255': 449, '-254': 450, '-253': 451, '-252': 452, '-251': 453, '-250': 454, '-249': 455, '-248': 456, '-247': 457, '-246': 458, '-245': 459, '-244': 460, '-243': 461, '-242': 462, '-241': 463, '-240': 464, '-239': 465, '-238': 466, '-237': 467, '-236': 468, '-235': 469, '-234': 470, '-233': 471, '-232': 472, '-231': 473, '-230': 474, '-229': 475, '-228': 476, '-227': 477, '-226': 478, '-225': 479, '-224': 480, '-223': 481, '-222': 482, '-221': 483, '-220': 484, '-219': 485, '-218': 486, '-217': 487, '-216': 488, '-215': 489, '-214': 490, '-213': 491, '-212': 492, '-211': 493, '-210': 494, '-209': 495, '-208': 496, '-207': 497, '-206': 498, '-205': 499, '-204': 500, '-203': 501, '-202': 502, '-201': 503, '-200': 504, '-199': 505, '-198': 506, '-197': 507, '-196': 508, '-195': 509, '-194': 510, '-193': 511, '-192': 512, '-191': 513, '-190': 514, '-189': 515, '-188': 516, '-187': 517, '-186': 518, '-185': 519, '-184': 520, '-183': 521, '-182': 522, '-181': 523, '-180': 524, '-179': 525, '-178': 526, '-177': 527, '-176': 528, '-175': 529, '-174': 530, '-173': 531, '-172': 532, '-171': 533, '-170': 534, '-169': 535, '-168': 536, '-167': 537, '-166': 538, '-165': 539, '-164': 540, '-163': 541, '-162': 542, '-161': 543, '-160': 544, '-159': 545, '-158': 546, '-157': 547, '-156': 548, '-155': 549, '-154': 550, '-153': 551, '-152': 552, '-151': 553, '-150': 554, '-149': 555, '-148': 556, '-147': 557, '-146': 558, '-145': 559, '-144': 560, '-143': 561, '-142': 562, '-141': 563, '-140': 564, '-139': 565, '-138': 566, '-137': 567, '-136': 568, '-135': 569, '-134': 570, '-133': 571, '-132': 572, '-131': 573, '-130': 574, '-129': 575, '-128': 576, '-127': 577, '-126': 578, '-125': 579, '-124': 580, '-123': 581, '-122': 582, '-121': 583, '-120': 584, '-119': 585, '-118': 586, '-117': 587, '-116': 588, '-115': 589, '-114': 590, '-113': 591, '-112': 592, '-111': 593, '-110': 594, '-109': 595, '-108': 596, '-107': 597, '-106': 598, '-105': 599, '-104': 600, '-103': 601, '-102': 602, '-101': 603, '-100': 604, '-99': 605, '-98': 606, '-97': 607, '-96': 608, '-95': 609, '-94': 610, '-93': 611, '-92': 612, '-91': 613, '-90': 614, '-89': 615, '-88': 616, '-87': 617, '-86': 618, '-85': 619, '-84': 620, '-83': 621, '-82': 622, '-81': 623, '-80': 624, '-79': 625, '-78': 626, '-77': 627, '-76': 628, '-75': 629, '-74': 630, '-73': 631, '-72': 632, '-71': 633, '-70': 634, '-69': 635, '-68': 636, '-67': 637, '-66': 638, '-65': 639, '-64': 640, '-63': 641, '-62': 642, '-61': 643, '-60': 644, '-59': 645, '-58': 646, '-57': 647, '-56': 648, '-55': 649, '-54': 650, '-53': 651, '-52': 652, '-51': 653, '-50': 654, '-49': 655, '-48': 656, '-47': 657, '-46': 658, '-45': 659, '-44': 660, '-43': 661, '-42': 662, '-41': 663, '-40': 664, '-39': 665, '-38': 666, '-37': 667, '-36': 668, '-35': 669, '-34': 670, '-33': 671, '-32': 672, '-31': 673, '-30': 674, '-29': 675, '-28': 676, '-27': 677, '-26': 678, '-25': 679, '-24': 680, '-23': 681, '-22': 682, '-21': 683, '-20': 684, '-19': 685, '-18': 686, '-17': 687, '-16': 688, '-15': 689, '-14': 690, '-13': 691, '-12': 692, '-11': 693, '-10': 694, '-9': 695, '-8': 696, '-7': 697, '-6': 698, '-5': 699, '-4': 700, '-3': 701, '-2': 702, '-1': 703, 'STEP': 704, 'ADJ_GROUP': 705, '&': 706, '': 707, '': 708, '': 709, '': 710, '': 711, '': 712, '': 713, '': 714, '': 715, '': 716, '': 717, '': 718, '': 719, '': 720, '': 721, '': 722, '': 723, '': 724, '': 725, '': 726, '': 727, '': 728, '': 729, '': 730, '': 731, '': 732, '': 733, '': 734, '': 735, '': 736, '': 737, '': 738, '': 739, '': 740, '': 741, '': 742, '': 743, '': 744, '': 745, '': 746, '': 747, '': 748, '': 749, '': 750, '': 751, '': 752, '': 753, '': 754, '': 755, '': 756, '': 757, '': 758, '': 759, '': 760, '': 761, '': 762, '': 763, '': 764, '': 765, '': 766, '': 767, '': 768, '': 769, '': 770, '': 771, '': 772, '': 773, '': 774, '': 775, '': 776, '': 777, '': 778, '': 779, '': 780, '': 781, '': 782, '': 783, '': 784, '': 785, '': 786, '': 787, '': 788, '': 789, '': 790, '': 791, '': 792, '': 793, '': 794, '': 795, '': 796, '': 797, '': 798, '': 799, '': 800, '': 801, '': 802, '': 803, '': 804, '': 805, '': 806, '': 807, '': 808, '': 809, '': 810, '': 811, '': 812, '': 813, '': 814, '': 815, '': 816, '': 817, '': 818, '': 819, '': 820, '': 821, '': 822, '': 823, '': 824, '': 825, '': 826, '': 827, '': 828, '': 829, '': 830, '': 831, '': 832, '': 833, '': 834, '': 835, '': 836, '': 837, '': 838, '': 839, '': 840, '': 841, '': 842, '': 843, '': 844, '': 845, '': 846, '': 847, '': 848, '': 849, '': 850, '': 851, '': 852, '': 853, '': 854, '': 855, '': 856, '': 857, '': 858, '': 859, '': 860, '': 861, '': 862, '': 863, '': 864, '': 865, '': 866, '': 867, '': 868, '': 869, '': 870, '': 871, '': 872, '': 873, '': 874, '': 875, '': 876, '': 877, '': 878, '': 879, '': 880, '': 881, '': 882, '': 883, '': 884, '': 885, '': 886, '': 887, '': 888, '': 889, '': 890, '': 891, '': 892, '': 893, '': 894, '': 895, '': 896, '': 897, '': 898, '': 899, '': 900, '': 901, '': 902, '': 903, '': 904, '': 905, '': 906, '': 907, '': 908, '': 909, '': 910, '': 911, '': 912, '': 913, '': 914, '': 915, '': 916, '': 917, '': 918, '': 919, '': 920, '': 921, '': 922, '': 923, '': 924, '': 925, '': 926, '': 927, '': 928, '': 929, '': 930, '': 931, '': 932, '': 933, '': 934, '': 935, '': 936, '': 937, '': 938, '': 939, '': 940, '': 941, '': 942, '': 943, '': 944, '': 945, '': 946, '': 947, '': 948, '': 949, '': 950, '': 951, '': 952, '': 953, '': 954, '': 955, '': 956, '': 957, '': 958, '': 959, '': 960, '': 961, '': 962, '': 963, '': 964, '': 965, '': 966, '': 967, '': 968, '': 969, '': 970, '': 971, '': 972, '': 973, '': 974, '': 975, '': 976, '': 977, '': 978, '': 979, '': 980, '': 981, '': 982, '': 983, '': 984, '': 985, '': 986, '': 987, '': 988, '': 989, '': 990, '': 991, '': 992, '': 993, '': 994, '': 995, '': 996, '': 997, '': 998, '': 999, '': 1000, '': 1001, '': 1002, '': 1003, '': 1004, '': 1005, '': 1006, '': 1007, '': 1008, '': 1009, '': 1010, '': 1011, '': 1012, '': 1013, '': 1014, '': 1015, '': 1016, '': 1017, '': 1018, '': 1019, '': 1020, '': 1021, '': 1022, '': 1023, '': 1024, '': 1025, '': 1026, '': 1027, '': 1028, '': 1029, '': 1030, '': 1031, '': 1032, '': 1033, '': 1034, '': 1035, '': 1036, '': 1037, '': 1038, '': 1039, '': 1040, '': 1041, '': 1042, '': 1043, '': 1044, '': 1045, '': 1046, '': 1047, '': 1048, '': 1049, '': 1050, '': 1051, '': 1052, '': 1053, '': 1054, '': 1055, '': 1056, '': 1057, '': 1058, '': 1059, '': 1060, '': 1061, '': 1062, '': 1063, '': 1064, '': 1065, '': 1066, '': 1067, '': 1068, '': 1069, '': 1070, '': 1071, '': 1072, '': 1073, '': 1074, '': 1075, '': 1076, '': 1077, '': 1078, '': 1079, '': 1080, '': 1081, '': 1082, '': 1083, '': 1084, '': 1085, '': 1086, '': 1087, '': 1088, '': 1089, '': 1090, '': 1091, '': 1092, '': 1093, '': 1094, '': 1095, '': 1096, '': 1097, '': 1098, '': 1099, '': 1100, '': 1101, '': 1102, '': 1103, '': 1104, '': 1105, '': 1106, '': 1107, '': 1108, '': 1109, '': 1110, '': 1111, '': 1112, '': 1113, '': 1114, '': 1115, '': 1116, '': 1117, '': 1118, '': 1119, '': 1120, '': 1121, '': 1122, '': 1123, '': 1124, '': 1125, '': 1126, '': 1127, '': 1128, '': 1129, '': 1130, '': 1131, '': 1132, '': 1133, '': 1134, '': 1135, '': 1136, '': 1137, '': 1138, '': 1139, '': 1140, '': 1141, '': 1142, '': 1143, '': 1144, '': 1145, '': 1146, '': 1147, '': 1148, '': 1149, '': 1150, '': 1151, '': 1152, '': 1153, '': 1154, '': 1155, '': 1156, '': 1157, '': 1158, '': 1159, '': 1160, '': 1161, '': 1162, '': 1163, '': 1164, '': 1165, '': 1166, '': 1167, '': 1168, '': 1169, '': 1170, '': 1171, '': 1172, '': 1173, '': 1174, '': 1175, '': 1176, '': 1177, '': 1178, '': 1179, '': 1180, '': 1181, '': 1182, '': 1183, '': 1184, '': 1185, '': 1186, '': 1187, '': 1188, '': 1189, '': 1190, '': 1191, '': 1192, '': 1193, '': 1194, '': 1195, '': 1196, '': 1197, '': 1198, '': 1199, '': 1200, '': 1201, '': 1202, '': 1203, '': 1204, '': 1205, '': 1206, '': 1207, '': 1208, '': 1209, '': 1210, '': 1211, '': 1212, '': 1213, '': 1214, '': 1215, '': 1216, '': 1217, '': 1218, '': 1219, '': 1220, '': 1221, '': 1222, '': 1223, '': 1224, '': 1225, '': 1226, '': 1227, '': 1228, '': 1229, '': 1230, '': 1231, '': 1232, '': 1233, '': 1234, '': 1235, '': 1236, '': 1237, '': 1238, '': 1239, '': 1240, '': 1241, '': 1242, '': 1243, '': 1244, '': 1245, '': 1246, '': 1247, '': 1248, '': 1249, '': 1250, '': 1251, '': 1252, '': 1253, '': 1254, '': 1255, '': 1256, '': 1257, '': 1258, '': 1259, '': 1260, '': 1261, '': 1262, '': 1263, '': 1264, '': 1265, '': 1266, '': 1267, '': 1268, '': 1269, '': 1270, '': 1271, '': 1272, '': 1273, '': 1274, '': 1275, '': 1276, '': 1277, '': 1278, '': 1279, '': 1280, '': 1281, '': 1282, '': 1283, '': 1284, '': 1285, '': 1286, '': 1287, '': 1288, '': 1289, '': 1290, '': 1291, '': 1292, '': 1293, '': 1294, '': 1295, '': 1296, '': 1297, '': 1298, '': 1299, '': 1300, '': 1301, '': 1302, '': 1303, '': 1304, '': 1305, '': 1306, '': 1307, '': 1308, '': 1309, '': 1310, '': 1311, '': 1312, '': 1313, '': 1314, '': 1315, '': 1316, '': 1317, '': 1318, '': 1319, '': 1320, '': 1321, '': 1322, '': 1323, '': 1324, '': 1325, '': 1326, '': 1327, '': 1328, '': 1329, '': 1330, '': 1331, '': 1332, '': 1333, '': 1334, '': 1335, '': 1336, '': 1337, '': 1338, '': 1339, '': 1340, '': 1341, '': 1342, '': 1343, '': 1344, '': 1345, '': 1346, '': 1347, '': 1348, '': 1349, '': 1350, '': 1351, '': 1352, '': 1353, '': 1354, '': 1355, '': 1356, '': 1357, '': 1358, '': 1359, '': 1360, '': 1361, '': 1362, '': 1363, '': 1364, '': 1365, '': 1366, '': 1367, '': 1368, '': 1369, '': 1370, '': 1371, '': 1372, '': 1373, '': 1374, '': 1375, '': 1376, '': 1377, '': 1378, '': 1379, '': 1380, '': 1381, '': 1382, '': 1383, '': 1384, '': 1385, '': 1386, '': 1387, '': 1388, '': 1389, '': 1390, '': 1391, '': 1392, '': 1393, '': 1394, '': 1395, '': 1396, '': 1397, '': 1398, '': 1399, '': 1400, '': 1401, '': 1402, '': 1403, '': 1404, '': 1405, '': 1406, '': 1407, '': 1408, '': 1409, '': 1410, '': 1411, '': 1412, '': 1413, '': 1414, '': 1415, '': 1416, '': 1417, '': 1418, '': 1419, '': 1420, '': 1421, '': 1422, '': 1423, '': 1424, '': 1425, '': 1426, '': 1427, '': 1428, '': 1429, '': 1430, '': 1431, '': 1432, '': 1433, '': 1434, '': 1435, '': 1436, '': 1437, '': 1438, '': 1439, '': 1440, '': 1441, '': 1442, '': 1443, '': 1444, '': 1445, '': 1446, '': 1447, '': 1448, '': 1449, '': 1450, '': 1451, '': 1452, '': 1453, '': 1454, '': 1455, '': 1456, '': 1457, '': 1458, '': 1459, '': 1460, '': 1461, '': 1462, '': 1463, '': 1464, '': 1465, '': 1466, '': 1467, '': 1468, '': 1469, '': 1470, '': 1471, '': 1472, '': 1473, '': 1474, '': 1475, '': 1476, '': 1477, '': 1478, '': 1479, '': 1480, '': 1481, '': 1482, '': 1483, '': 1484, '': 1485, '': 1486, '': 1487, '': 1488, '': 1489, '': 1490, '': 1491, '': 1492, '': 1493, '': 1494, '': 1495, '': 1496, '': 1497, '': 1498, '': 1499, '': 1500, '': 1501, '': 1502, '': 1503, '': 1504, '': 1505, '': 1506, '': 1507, '': 1508, '': 1509, '': 1510, '': 1511, '': 1512, '': 1513, '': 1514, '': 1515, '': 1516, '': 1517, '': 1518, '': 1519, '': 1520, '': 1521, '': 1522, '': 1523, '': 1524, '': 1525, '': 1526, '': 1527, '': 1528, '': 1529, '': 1530, '': 1531, '': 1532, '': 1533, '': 1534, '': 1535, '': 1536, '': 1537, '': 1538, '': 1539, '': 1540, '': 1541, '': 1542, '': 1543, '': 1544, '': 1545, '': 1546, '': 1547, '': 1548, '': 1549, '': 1550, '': 1551, '': 1552, '': 1553, '': 1554, '': 1555, '': 1556, '': 1557, '': 1558, '': 1559, '': 1560, '': 1561, '': 1562, '': 1563, '': 1564, '': 1565, '': 1566, '': 1567, '': 1568, '': 1569, '': 1570, '': 1571, '': 1572, '': 1573, '': 1574, '': 1575, '': 1576, '': 1577, '': 1578, '': 1579, '': 1580, '': 1581, '': 1582, '': 1583, '': 1584, '': 1585, '': 1586, '': 1587, '': 1588, '': 1589, '': 1590, '': 1591, '': 1592, '': 1593, '': 1594, '': 1595, '(0,0)': 1596, '(0,1)': 1597, '(1,0)': 1598, '(1,1)': 1599, '(0,2)': 1600, '(2,0)': 1601, '(1,2)': 1602, '(2,1)': 1603, '(2,2)': 1604, '(0,3)': 1605, '(3,0)': 1606, '(3,1)': 1607, '(2,3)': 1608, '(3,2)': 1609, '(1,3)': 1610, '(3,3)': 1611, '(0,4)': 1612, '(2,4)': 1613, '(4,0)': 1614, '(1,4)': 1615, '(4,1)': 1616, '(4,2)': 1617, '(3,4)': 1618, '(4,3)': 1619, '(4,4)': 1620, '(0,5)': 1621, '(5,0)': 1622, '(5,1)': 1623, '(2,5)': 1624, '(5,2)': 1625, '(5,3)': 1626, '(4,5)': 1627, '(5,4)': 1628, '(1,5)': 1629, '(3,5)': 1630, '(5,5)': 1631, '(0,6)': 1632, '(2,6)': 1633, '(4,6)': 1634, '(6,0)': 1635, '(1,6)': 1636, '(6,1)': 1637, '(6,2)': 1638, '(3,6)': 1639, '(6,3)': 1640, '(6,4)': 1641, '(5,6)': 1642, '(6,5)': 1643, '(6,6)': 1644, '(0,7)': 1645, '(7,0)': 1646, '(7,1)': 1647, '(2,7)': 1648, '(7,2)': 1649, '(7,3)': 1650, '(4,7)': 1651, '(7,4)': 1652, '(7,5)': 1653, '(6,7)': 1654, '(7,6)': 1655, '(1,7)': 1656, '(3,7)': 1657, '(5,7)': 1658, '(7,7)': 1659, '(0,8)': 1660, '(2,8)': 1661, '(4,8)': 1662, '(6,8)': 1663, '(8,0)': 1664, '(1,8)': 1665, '(8,1)': 1666, '(8,2)': 1667, '(3,8)': 1668, '(8,3)': 1669, '(8,4)': 1670, '(5,8)': 1671, '(8,5)': 1672, '(8,6)': 1673, '(7,8)': 1674, '(8,7)': 1675, '(8,8)': 1676, '(0,9)': 1677, '(9,0)': 1678, '(9,1)': 1679, '(2,9)': 1680, '(9,2)': 1681, '(9,3)': 1682, '(4,9)': 1683, '(9,4)': 1684, '(9,5)': 1685, '(6,9)': 1686, '(9,6)': 1687, '(9,7)': 1688, '(8,9)': 1689, '(9,8)': 1690, '(1,9)': 1691, '(3,9)': 1692, '(5,9)': 1693, '(7,9)': 1694, '(9,9)': 1695, '(0,10)': 1696, '(2,10)': 1697, '(4,10)': 1698, '(6,10)': 1699, '(8,10)': 1700, '(10,0)': 1701, '(1,10)': 1702, '(10,1)': 1703, '(10,2)': 1704, '(3,10)': 1705, '(10,3)': 1706, '(10,4)': 1707, '(5,10)': 1708, '(10,5)': 1709, '(10,6)': 1710, '(7,10)': 1711, '(10,7)': 1712, '(10,8)': 1713, '(9,10)': 1714, '(10,9)': 1715, '(10,10)': 1716, '(0,11)': 1717, '(11,0)': 1718, '(11,1)': 1719, '(2,11)': 1720, '(11,2)': 1721, '(11,3)': 1722, '(4,11)': 1723, '(11,4)': 1724, '(11,5)': 1725, '(6,11)': 1726, '(11,6)': 1727, '(11,7)': 1728, '(8,11)': 1729, '(11,8)': 1730, '(11,9)': 1731, '(10,11)': 1732, '(11,10)': 1733, '(1,11)': 1734, '(3,11)': 1735, '(5,11)': 1736, '(7,11)': 1737, '(9,11)': 1738, '(11,11)': 1739, '(0,12)': 1740, '(2,12)': 1741, '(4,12)': 1742, '(6,12)': 1743, '(8,12)': 1744, '(10,12)': 1745, '(12,0)': 1746, '(1,12)': 1747, '(12,1)': 1748, '(12,2)': 1749, '(3,12)': 1750, '(12,3)': 1751, '(12,4)': 1752, '(5,12)': 1753, '(12,5)': 1754, '(12,6)': 1755, '(7,12)': 1756, '(12,7)': 1757, '(12,8)': 1758, '(9,12)': 1759, '(12,9)': 1760, '(12,10)': 1761, '(11,12)': 1762, '(12,11)': 1763, '(12,12)': 1764, '(0,13)': 1765, '(13,0)': 1766, '(13,1)': 1767, '(2,13)': 1768, '(13,2)': 1769, '(13,3)': 1770, '(4,13)': 1771, '(13,4)': 1772, '(13,5)': 1773, '(6,13)': 1774, '(13,6)': 1775, '(13,7)': 1776, '(8,13)': 1777, '(13,8)': 1778, '(13,9)': 1779, '(10,13)': 1780, '(13,10)': 1781, '(13,11)': 1782, '(12,13)': 1783, '(13,12)': 1784, '(1,13)': 1785, '(3,13)': 1786, '(5,13)': 1787, '(7,13)': 1788, '(9,13)': 1789, '(11,13)': 1790, '(13,13)': 1791, '(0,14)': 1792, '(2,14)': 1793, '(4,14)': 1794, '(6,14)': 1795, '(8,14)': 1796, '(10,14)': 1797, '(12,14)': 1798, '(14,0)': 1799, '(1,14)': 1800, '(14,1)': 1801, '(14,2)': 1802, '(3,14)': 1803, '(14,3)': 1804, '(14,4)': 1805, '(5,14)': 1806, '(14,5)': 1807, '(14,6)': 1808, '(7,14)': 1809, '(14,7)': 1810, '(14,8)': 1811, '(9,14)': 1812, '(14,9)': 1813, '(14,10)': 1814, '(11,14)': 1815, '(14,11)': 1816, '(14,12)': 1817, '(13,14)': 1818, '(14,13)': 1819, '(14,14)': 1820, '(0,15)': 1821, '(15,0)': 1822, '(15,1)': 1823, '(2,15)': 1824, '(15,2)': 1825, '(15,3)': 1826, '(4,15)': 1827, '(15,4)': 1828, '(15,5)': 1829, '(6,15)': 1830, '(15,6)': 1831, '(15,7)': 1832, '(8,15)': 1833, '(15,8)': 1834, '(15,9)': 1835, '(10,15)': 1836, '(15,10)': 1837, '(15,11)': 1838, '(12,15)': 1839, '(15,12)': 1840, '(15,13)': 1841, '(14,15)': 1842, '(15,14)': 1843, '(1,15)': 1844, '(3,15)': 1845, '(5,15)': 1846, '(7,15)': 1847, '(9,15)': 1848, '(11,15)': 1849, '(13,15)': 1850, '(15,15)': 1851, '(0,16)': 1852, '(2,16)': 1853, '(4,16)': 1854, '(6,16)': 1855, '(8,16)': 1856, '(10,16)': 1857, '(12,16)': 1858, '(14,16)': 1859, '(16,0)': 1860, '(1,16)': 1861, '(16,1)': 1862, '(16,2)': 1863, '(3,16)': 1864, '(16,3)': 1865, '(16,4)': 1866, '(5,16)': 1867, '(16,5)': 1868, '(16,6)': 1869, '(7,16)': 1870, '(16,7)': 1871, '(16,8)': 1872, '(9,16)': 1873, '(16,9)': 1874, '(16,10)': 1875, '(11,16)': 1876, '(16,11)': 1877, '(16,12)': 1878, '(13,16)': 1879, '(16,13)': 1880, '(16,14)': 1881, '(15,16)': 1882, '(16,15)': 1883, '(16,16)': 1884, '(0,17)': 1885, '(17,0)': 1886, '(17,1)': 1887, '(2,17)': 1888, '(17,2)': 1889, '(17,3)': 1890, '(4,17)': 1891, '(17,4)': 1892, '(17,5)': 1893, '(6,17)': 1894, '(17,6)': 1895, '(17,7)': 1896, '(8,17)': 1897, '(17,8)': 1898, '(17,9)': 1899, '(10,17)': 1900, '(17,10)': 1901, '(17,11)': 1902, '(12,17)': 1903, '(17,12)': 1904, '(17,13)': 1905, '(14,17)': 1906, '(17,14)': 1907, '(17,15)': 1908, '(16,17)': 1909, '(17,16)': 1910, '(1,17)': 1911, '(3,17)': 1912, '(5,17)': 1913, '(7,17)': 1914, '(9,17)': 1915, '(11,17)': 1916, '(13,17)': 1917, '(15,17)': 1918, '(17,17)': 1919, '(0,18)': 1920, '(2,18)': 1921, '(4,18)': 1922, '(6,18)': 1923, '(8,18)': 1924, '(10,18)': 1925, '(12,18)': 1926, '(14,18)': 1927, '(16,18)': 1928, '(18,0)': 1929, '(1,18)': 1930, '(18,1)': 1931, '(18,2)': 1932, '(3,18)': 1933, '(18,3)': 1934, '(18,4)': 1935, '(5,18)': 1936, '(18,5)': 1937, '(18,6)': 1938, '(7,18)': 1939, '(18,7)': 1940, '(18,8)': 1941, '(9,18)': 1942, '(18,9)': 1943, '(18,10)': 1944, '(11,18)': 1945, '(18,11)': 1946, '(18,12)': 1947, '(13,18)': 1948, '(18,13)': 1949, '(18,14)': 1950, '(15,18)': 1951, '(18,15)': 1952, '(18,16)': 1953, '(17,18)': 1954, '(18,17)': 1955, '(18,18)': 1956, '(0,19)': 1957, '(19,0)': 1958, '(19,1)': 1959, '(2,19)': 1960, '(19,2)': 1961, '(19,3)': 1962, '(4,19)': 1963, '(19,4)': 1964, '(19,5)': 1965, '(6,19)': 1966, '(19,6)': 1967, '(19,7)': 1968, '(8,19)': 1969, '(19,8)': 1970, '(19,9)': 1971, '(10,19)': 1972, '(19,10)': 1973, '(19,11)': 1974, '(12,19)': 1975, '(19,12)': 1976, '(19,13)': 1977, '(14,19)': 1978, '(19,14)': 1979, '(19,15)': 1980, '(16,19)': 1981, '(19,16)': 1982, '(19,17)': 1983, '(18,19)': 1984, '(19,18)': 1985, '(1,19)': 1986, '(3,19)': 1987, '(5,19)': 1988, '(7,19)': 1989, '(9,19)': 1990, '(11,19)': 1991, '(13,19)': 1992, '(15,19)': 1993, '(17,19)': 1994, '(19,19)': 1995, '(0,20)': 1996, '(2,20)': 1997, '(4,20)': 1998, '(6,20)': 1999, '(8,20)': 2000, '(10,20)': 2001, '(12,20)': 2002, '(14,20)': 2003, '(16,20)': 2004, '(18,20)': 2005, '(20,0)': 2006, '(1,20)': 2007, '(20,1)': 2008, '(20,2)': 2009, '(3,20)': 2010, '(20,3)': 2011, '(20,4)': 2012, '(5,20)': 2013, '(20,5)': 2014, '(20,6)': 2015, '(7,20)': 2016, '(20,7)': 2017, '(20,8)': 2018, '(9,20)': 2019, '(20,9)': 2020, '(20,10)': 2021, '(11,20)': 2022, '(20,11)': 2023, '(20,12)': 2024, '(13,20)': 2025, '(20,13)': 2026, '(20,14)': 2027, '(15,20)': 2028, '(20,15)': 2029, '(20,16)': 2030, '(17,20)': 2031, '(20,17)': 2032, '(20,18)': 2033, '(19,20)': 2034, '(20,19)': 2035, '(20,20)': 2036, '(0,21)': 2037, '(21,0)': 2038, '(21,1)': 2039, '(2,21)': 2040, '(21,2)': 2041, '(21,3)': 2042, '(4,21)': 2043, '(21,4)': 2044, '(21,5)': 2045, '(6,21)': 2046, '(21,6)': 2047, '(21,7)': 2048, '(8,21)': 2049, '(21,8)': 2050, '(21,9)': 2051, '(10,21)': 2052, '(21,10)': 2053, '(21,11)': 2054, '(12,21)': 2055, '(21,12)': 2056, '(21,13)': 2057, '(14,21)': 2058, '(21,14)': 2059, '(21,15)': 2060, '(16,21)': 2061, '(21,16)': 2062, '(21,17)': 2063, '(18,21)': 2064, '(21,18)': 2065, '(21,19)': 2066, '(20,21)': 2067, '(21,20)': 2068, '(1,21)': 2069, '(3,21)': 2070, '(5,21)': 2071, '(7,21)': 2072, '(9,21)': 2073, '(11,21)': 2074, '(13,21)': 2075, '(15,21)': 2076, '(17,21)': 2077, '(19,21)': 2078, '(21,21)': 2079, '(0,22)': 2080, '(2,22)': 2081, '(4,22)': 2082, '(6,22)': 2083, '(8,22)': 2084, '(10,22)': 2085, '(12,22)': 2086, '(14,22)': 2087, '(16,22)': 2088, '(18,22)': 2089, '(20,22)': 2090, '(22,0)': 2091, '(1,22)': 2092, '(22,1)': 2093, '(22,2)': 2094, '(3,22)': 2095, '(22,3)': 2096, '(22,4)': 2097, '(5,22)': 2098, '(22,5)': 2099, '(22,6)': 2100, '(7,22)': 2101, '(22,7)': 2102, '(22,8)': 2103, '(9,22)': 2104, '(22,9)': 2105, '(22,10)': 2106, '(11,22)': 2107, '(22,11)': 2108, '(22,12)': 2109, '(13,22)': 2110, '(22,13)': 2111, '(22,14)': 2112, '(15,22)': 2113, '(22,15)': 2114, '(22,16)': 2115, '(17,22)': 2116, '(22,17)': 2117, '(22,18)': 2118, '(19,22)': 2119, '(22,19)': 2120, '(22,20)': 2121, '(21,22)': 2122, '(22,21)': 2123, '(22,22)': 2124, '(0,23)': 2125, '(23,0)': 2126, '(23,1)': 2127, '(2,23)': 2128, '(23,2)': 2129, '(23,3)': 2130, '(4,23)': 2131, '(23,4)': 2132, '(23,5)': 2133, '(6,23)': 2134, '(23,6)': 2135, '(23,7)': 2136, '(8,23)': 2137, '(23,8)': 2138, '(23,9)': 2139, '(10,23)': 2140, '(23,10)': 2141, '(23,11)': 2142, '(12,23)': 2143, '(23,12)': 2144, '(23,13)': 2145, '(14,23)': 2146, '(23,14)': 2147, '(23,15)': 2148, '(16,23)': 2149, '(23,16)': 2150, '(23,17)': 2151, '(18,23)': 2152, '(23,18)': 2153, '(23,19)': 2154, '(20,23)': 2155, '(23,20)': 2156, '(23,21)': 2157, '(22,23)': 2158, '(23,22)': 2159, '(1,23)': 2160, '(3,23)': 2161, '(5,23)': 2162, '(7,23)': 2163, '(9,23)': 2164, '(11,23)': 2165, '(13,23)': 2166, '(15,23)': 2167, '(17,23)': 2168, '(19,23)': 2169, '(21,23)': 2170, '(23,23)': 2171, '(0,24)': 2172, '(2,24)': 2173, '(4,24)': 2174, '(6,24)': 2175, '(8,24)': 2176, '(10,24)': 2177, '(12,24)': 2178, '(14,24)': 2179, '(16,24)': 2180, '(18,24)': 2181, '(20,24)': 2182, '(22,24)': 2183, '(24,0)': 2184, '(1,24)': 2185, '(24,1)': 2186, '(24,2)': 2187, '(3,24)': 2188, '(24,3)': 2189, '(24,4)': 2190, '(5,24)': 2191, '(24,5)': 2192, '(24,6)': 2193, '(7,24)': 2194, '(24,7)': 2195, '(24,8)': 2196, '(9,24)': 2197, '(24,9)': 2198, '(24,10)': 2199, '(11,24)': 2200, '(24,11)': 2201, '(24,12)': 2202, '(13,24)': 2203, '(24,13)': 2204, '(24,14)': 2205, '(15,24)': 2206, '(24,15)': 2207, '(24,16)': 2208, '(17,24)': 2209, '(24,17)': 2210, '(24,18)': 2211, '(19,24)': 2212, '(24,19)': 2213, '(24,20)': 2214, '(21,24)': 2215, '(24,21)': 2216, '(24,22)': 2217, '(23,24)': 2218, '(24,23)': 2219, '(24,24)': 2220, '(0,25)': 2221, '(25,0)': 2222, '(25,1)': 2223, '(2,25)': 2224, '(25,2)': 2225, '(25,3)': 2226, '(4,25)': 2227, '(25,4)': 2228, '(25,5)': 2229, '(6,25)': 2230, '(25,6)': 2231, '(25,7)': 2232, '(8,25)': 2233, '(25,8)': 2234, '(25,9)': 2235, '(10,25)': 2236, '(25,10)': 2237, '(25,11)': 2238, '(12,25)': 2239, '(25,12)': 2240, '(25,13)': 2241, '(14,25)': 2242, '(25,14)': 2243, '(25,15)': 2244, '(16,25)': 2245, '(25,16)': 2246, '(25,17)': 2247, '(18,25)': 2248, '(25,18)': 2249, '(25,19)': 2250, '(20,25)': 2251, '(25,20)': 2252, '(25,21)': 2253, '(22,25)': 2254, '(25,22)': 2255, '(25,23)': 2256, '(24,25)': 2257, '(25,24)': 2258, '(1,25)': 2259, '(3,25)': 2260, '(5,25)': 2261, '(7,25)': 2262, '(9,25)': 2263, '(11,25)': 2264, '(13,25)': 2265, '(15,25)': 2266, '(17,25)': 2267, '(19,25)': 2268, '(21,25)': 2269, '(23,25)': 2270, '(25,25)': 2271, '(0,26)': 2272, '(2,26)': 2273, '(4,26)': 2274, '(6,26)': 2275, '(8,26)': 2276, '(10,26)': 2277, '(12,26)': 2278, '(14,26)': 2279, '(16,26)': 2280, '(18,26)': 2281, '(20,26)': 2282, '(22,26)': 2283, '(24,26)': 2284, '(26,0)': 2285, '(1,26)': 2286, '(26,1)': 2287, '(26,2)': 2288, '(3,26)': 2289, '(26,3)': 2290, '(26,4)': 2291, '(5,26)': 2292, '(26,5)': 2293, '(26,6)': 2294, '(7,26)': 2295, '(26,7)': 2296, '(26,8)': 2297, '(9,26)': 2298, '(26,9)': 2299, '(26,10)': 2300, '(11,26)': 2301, '(26,11)': 2302, '(26,12)': 2303, '(13,26)': 2304, '(26,13)': 2305, '(26,14)': 2306, '(15,26)': 2307, '(26,15)': 2308, '(26,16)': 2309, '(17,26)': 2310, '(26,17)': 2311, '(26,18)': 2312, '(19,26)': 2313, '(26,19)': 2314, '(26,20)': 2315, '(21,26)': 2316, '(26,21)': 2317, '(26,22)': 2318, '(23,26)': 2319, '(26,23)': 2320, '(26,24)': 2321, '(25,26)': 2322, '(26,25)': 2323, '(26,26)': 2324, '(0,27)': 2325, '(27,0)': 2326, '(27,1)': 2327, '(2,27)': 2328, '(27,2)': 2329, '(27,3)': 2330, '(4,27)': 2331, '(27,4)': 2332, '(27,5)': 2333, '(6,27)': 2334, '(27,6)': 2335, '(27,7)': 2336, '(8,27)': 2337, '(27,8)': 2338, '(27,9)': 2339, '(10,27)': 2340, '(27,10)': 2341, '(27,11)': 2342, '(12,27)': 2343, '(27,12)': 2344, '(27,13)': 2345, '(14,27)': 2346, '(27,14)': 2347, '(27,15)': 2348, '(16,27)': 2349, '(27,16)': 2350, '(27,17)': 2351, '(18,27)': 2352, '(27,18)': 2353, '(27,19)': 2354, '(20,27)': 2355, '(27,20)': 2356, '(27,21)': 2357, '(22,27)': 2358, '(27,22)': 2359, '(27,23)': 2360, '(24,27)': 2361, '(27,24)': 2362, '(27,25)': 2363, '(26,27)': 2364, '(27,26)': 2365, '(1,27)': 2366, '(3,27)': 2367, '(5,27)': 2368, '(7,27)': 2369, '(9,27)': 2370, '(11,27)': 2371, '(13,27)': 2372, '(15,27)': 2373, '(17,27)': 2374, '(19,27)': 2375, '(21,27)': 2376, '(23,27)': 2377, '(25,27)': 2378, '(27,27)': 2379, '(0,28)': 2380, '(2,28)': 2381, '(4,28)': 2382, '(6,28)': 2383, '(8,28)': 2384, '(10,28)': 2385, '(12,28)': 2386, '(14,28)': 2387, '(16,28)': 2388, '(18,28)': 2389, '(20,28)': 2390, '(22,28)': 2391, '(24,28)': 2392, '(26,28)': 2393, '(28,0)': 2394, '(1,28)': 2395, '(28,1)': 2396, '(28,2)': 2397, '(3,28)': 2398, '(28,3)': 2399, '(28,4)': 2400, '(5,28)': 2401, '(28,5)': 2402, '(28,6)': 2403, '(7,28)': 2404, '(28,7)': 2405, '(28,8)': 2406, '(9,28)': 2407, '(28,9)': 2408, '(28,10)': 2409, '(11,28)': 2410, '(28,11)': 2411, '(28,12)': 2412, '(13,28)': 2413, '(28,13)': 2414, '(28,14)': 2415, '(15,28)': 2416, '(28,15)': 2417, '(28,16)': 2418, '(17,28)': 2419, '(28,17)': 2420, '(28,18)': 2421, '(19,28)': 2422, '(28,19)': 2423, '(28,20)': 2424, '(21,28)': 2425, '(28,21)': 2426, '(28,22)': 2427, '(23,28)': 2428, '(28,23)': 2429, '(28,24)': 2430, '(25,28)': 2431, '(28,25)': 2432, '(28,26)': 2433, '(27,28)': 2434, '(28,27)': 2435, '(28,28)': 2436, '(0,29)': 2437, '(29,0)': 2438, '(29,1)': 2439, '(2,29)': 2440, '(29,2)': 2441, '(29,3)': 2442, '(4,29)': 2443, '(29,4)': 2444, '(29,5)': 2445, '(6,29)': 2446, '(29,6)': 2447, '(29,7)': 2448, '(8,29)': 2449, '(29,8)': 2450, '(29,9)': 2451, '(10,29)': 2452, '(29,10)': 2453, '(29,11)': 2454, '(12,29)': 2455, '(29,12)': 2456, '(29,13)': 2457, '(14,29)': 2458, '(29,14)': 2459, '(29,15)': 2460, '(16,29)': 2461, '(29,16)': 2462, '(29,17)': 2463, '(18,29)': 2464, '(29,18)': 2465, '(29,19)': 2466, '(20,29)': 2467, '(29,20)': 2468, '(29,21)': 2469, '(22,29)': 2470, '(29,22)': 2471, '(29,23)': 2472, '(24,29)': 2473, '(29,24)': 2474, '(29,25)': 2475, '(26,29)': 2476, '(29,26)': 2477, '(29,27)': 2478, '(28,29)': 2479, '(29,28)': 2480, '(1,29)': 2481, '(3,29)': 2482, '(5,29)': 2483, '(7,29)': 2484, '(9,29)': 2485, '(11,29)': 2486, '(13,29)': 2487, '(15,29)': 2488, '(17,29)': 2489, '(19,29)': 2490, '(21,29)': 2491, '(23,29)': 2492, '(25,29)': 2493, '(27,29)': 2494, '(29,29)': 2495, '(0,30)': 2496, '(2,30)': 2497, '(4,30)': 2498, '(6,30)': 2499, '(8,30)': 2500, '(10,30)': 2501, '(12,30)': 2502, '(14,30)': 2503, '(16,30)': 2504, '(18,30)': 2505, '(20,30)': 2506, '(22,30)': 2507, '(24,30)': 2508, '(26,30)': 2509, '(28,30)': 2510, '(30,0)': 2511, '(1,30)': 2512, '(30,1)': 2513, '(30,2)': 2514, '(3,30)': 2515, '(30,3)': 2516, '(30,4)': 2517, '(5,30)': 2518, '(30,5)': 2519, '(30,6)': 2520, '(7,30)': 2521, '(30,7)': 2522, '(30,8)': 2523, '(9,30)': 2524, '(30,9)': 2525, '(30,10)': 2526, '(11,30)': 2527, '(30,11)': 2528, '(30,12)': 2529, '(13,30)': 2530, '(30,13)': 2531, '(30,14)': 2532, '(15,30)': 2533, '(30,15)': 2534, '(30,16)': 2535, '(17,30)': 2536, '(30,17)': 2537, '(30,18)': 2538, '(19,30)': 2539, '(30,19)': 2540, '(30,20)': 2541, '(21,30)': 2542, '(30,21)': 2543, '(30,22)': 2544, '(23,30)': 2545, '(30,23)': 2546, '(30,24)': 2547, '(25,30)': 2548, '(30,25)': 2549, '(30,26)': 2550, '(27,30)': 2551, '(30,27)': 2552, '(30,28)': 2553, '(29,30)': 2554, '(30,29)': 2555, '(30,30)': 2556, '(0,31)': 2557, '(31,0)': 2558, '(31,1)': 2559, '(2,31)': 2560, '(31,2)': 2561, '(31,3)': 2562, '(4,31)': 2563, '(31,4)': 2564, '(31,5)': 2565, '(6,31)': 2566, '(31,6)': 2567, '(31,7)': 2568, '(8,31)': 2569, '(31,8)': 2570, '(31,9)': 2571, '(10,31)': 2572, '(31,10)': 2573, '(31,11)': 2574, '(12,31)': 2575, '(31,12)': 2576, '(31,13)': 2577, '(14,31)': 2578, '(31,14)': 2579, '(31,15)': 2580, '(16,31)': 2581, '(31,16)': 2582, '(31,17)': 2583, '(18,31)': 2584, '(31,18)': 2585, '(31,19)': 2586, '(20,31)': 2587, '(31,20)': 2588, '(31,21)': 2589, '(22,31)': 2590, '(31,22)': 2591, '(31,23)': 2592, '(24,31)': 2593, '(31,24)': 2594, '(31,25)': 2595, '(26,31)': 2596, '(31,26)': 2597, '(31,27)': 2598, '(28,31)': 2599, '(31,28)': 2600, '(31,29)': 2601, '(30,31)': 2602, '(31,30)': 2603, '(1,31)': 2604, '(3,31)': 2605, '(5,31)': 2606, '(7,31)': 2607, '(9,31)': 2608, '(11,31)': 2609, '(13,31)': 2610, '(15,31)': 2611, '(17,31)': 2612, '(19,31)': 2613, '(21,31)': 2614, '(23,31)': 2615, '(25,31)': 2616, '(27,31)': 2617, '(29,31)': 2618, '(31,31)': 2619, '(0,32)': 2620, '(2,32)': 2621, '(4,32)': 2622, '(6,32)': 2623, '(8,32)': 2624, '(10,32)': 2625, '(12,32)': 2626, '(14,32)': 2627, '(16,32)': 2628, '(18,32)': 2629, '(20,32)': 2630, '(22,32)': 2631, '(24,32)': 2632, '(26,32)': 2633, '(28,32)': 2634, '(30,32)': 2635, '(32,0)': 2636, '(1,32)': 2637, '(32,1)': 2638, '(32,2)': 2639, '(3,32)': 2640, '(32,3)': 2641, '(32,4)': 2642, '(5,32)': 2643, '(32,5)': 2644, '(32,6)': 2645, '(7,32)': 2646, '(32,7)': 2647, '(32,8)': 2648, '(9,32)': 2649, '(32,9)': 2650, '(32,10)': 2651, '(11,32)': 2652, '(32,11)': 2653, '(32,12)': 2654, '(13,32)': 2655, '(32,13)': 2656, '(32,14)': 2657, '(15,32)': 2658, '(32,15)': 2659, '(32,16)': 2660, '(17,32)': 2661, '(32,17)': 2662, '(32,18)': 2663, '(19,32)': 2664, '(32,19)': 2665, '(32,20)': 2666, '(21,32)': 2667, '(32,21)': 2668, '(32,22)': 2669, '(23,32)': 2670, '(32,23)': 2671, '(32,24)': 2672, '(25,32)': 2673, '(32,25)': 2674, '(32,26)': 2675, '(27,32)': 2676, '(32,27)': 2677, '(32,28)': 2678, '(29,32)': 2679, '(32,29)': 2680, '(32,30)': 2681, '(31,32)': 2682, '(32,31)': 2683, '(32,32)': 2684, '(0,33)': 2685, '(33,0)': 2686, '(33,1)': 2687, '(2,33)': 2688, '(33,2)': 2689, '(33,3)': 2690, '(4,33)': 2691, '(33,4)': 2692, '(33,5)': 2693, '(6,33)': 2694, '(33,6)': 2695, '(33,7)': 2696, '(8,33)': 2697, '(33,8)': 2698, '(33,9)': 2699, '(10,33)': 2700, '(33,10)': 2701, '(33,11)': 2702, '(12,33)': 2703, '(33,12)': 2704, '(33,13)': 2705, '(14,33)': 2706, '(33,14)': 2707, '(33,15)': 2708, '(16,33)': 2709, '(33,16)': 2710, '(33,17)': 2711, '(18,33)': 2712, '(33,18)': 2713, '(33,19)': 2714, '(20,33)': 2715, '(33,20)': 2716, '(33,21)': 2717, '(22,33)': 2718, '(33,22)': 2719, '(33,23)': 2720, '(24,33)': 2721, '(33,24)': 2722, '(33,25)': 2723, '(26,33)': 2724, '(33,26)': 2725, '(33,27)': 2726, '(28,33)': 2727, '(33,28)': 2728, '(33,29)': 2729, '(30,33)': 2730, '(33,30)': 2731, '(33,31)': 2732, '(32,33)': 2733, '(33,32)': 2734, '(1,33)': 2735, '(3,33)': 2736, '(5,33)': 2737, '(7,33)': 2738, '(9,33)': 2739, '(11,33)': 2740, '(13,33)': 2741, '(15,33)': 2742, '(17,33)': 2743, '(19,33)': 2744, '(21,33)': 2745, '(23,33)': 2746, '(25,33)': 2747, '(27,33)': 2748, '(29,33)': 2749, '(31,33)': 2750, '(33,33)': 2751, '(0,34)': 2752, '(2,34)': 2753, '(4,34)': 2754, '(6,34)': 2755, '(8,34)': 2756, '(10,34)': 2757, '(12,34)': 2758, '(14,34)': 2759, '(16,34)': 2760, '(18,34)': 2761, '(20,34)': 2762, '(22,34)': 2763, '(24,34)': 2764, '(26,34)': 2765, '(28,34)': 2766, '(30,34)': 2767, '(32,34)': 2768, '(34,0)': 2769, '(1,34)': 2770, '(34,1)': 2771, '(34,2)': 2772, '(3,34)': 2773, '(34,3)': 2774, '(34,4)': 2775, '(5,34)': 2776, '(34,5)': 2777, '(34,6)': 2778, '(7,34)': 2779, '(34,7)': 2780, '(34,8)': 2781, '(9,34)': 2782, '(34,9)': 2783, '(34,10)': 2784, '(11,34)': 2785, '(34,11)': 2786, '(34,12)': 2787, '(13,34)': 2788, '(34,13)': 2789, '(34,14)': 2790, '(15,34)': 2791, '(34,15)': 2792, '(34,16)': 2793, '(17,34)': 2794, '(34,17)': 2795, '(34,18)': 2796, '(19,34)': 2797, '(34,19)': 2798, '(34,20)': 2799, '(21,34)': 2800, '(34,21)': 2801, '(34,22)': 2802, '(23,34)': 2803, '(34,23)': 2804, '(34,24)': 2805, '(25,34)': 2806, '(34,25)': 2807, '(34,26)': 2808, '(27,34)': 2809, '(34,27)': 2810, '(34,28)': 2811, '(29,34)': 2812, '(34,29)': 2813, '(34,30)': 2814, '(31,34)': 2815, '(34,31)': 2816, '(34,32)': 2817, '(33,34)': 2818, '(34,33)': 2819, '(34,34)': 2820, '(0,35)': 2821, '(35,0)': 2822, '(35,1)': 2823, '(2,35)': 2824, '(35,2)': 2825, '(35,3)': 2826, '(4,35)': 2827, '(35,4)': 2828, '(35,5)': 2829, '(6,35)': 2830, '(35,6)': 2831, '(35,7)': 2832, '(8,35)': 2833, '(35,8)': 2834, '(35,9)': 2835, '(10,35)': 2836, '(35,10)': 2837, '(35,11)': 2838, '(12,35)': 2839, '(35,12)': 2840, '(35,13)': 2841, '(14,35)': 2842, '(35,14)': 2843, '(35,15)': 2844, '(16,35)': 2845, '(35,16)': 2846, '(35,17)': 2847, '(18,35)': 2848, '(35,18)': 2849, '(35,19)': 2850, '(20,35)': 2851, '(35,20)': 2852, '(35,21)': 2853, '(22,35)': 2854, '(35,22)': 2855, '(35,23)': 2856, '(24,35)': 2857, '(35,24)': 2858, '(35,25)': 2859, '(26,35)': 2860, '(35,26)': 2861, '(35,27)': 2862, '(28,35)': 2863, '(35,28)': 2864, '(35,29)': 2865, '(30,35)': 2866, '(35,30)': 2867, '(35,31)': 2868, '(32,35)': 2869, '(35,32)': 2870, '(35,33)': 2871, '(34,35)': 2872, '(35,34)': 2873, '(1,35)': 2874, '(3,35)': 2875, '(5,35)': 2876, '(7,35)': 2877, '(9,35)': 2878, '(11,35)': 2879, '(13,35)': 2880, '(15,35)': 2881, '(17,35)': 2882, '(19,35)': 2883, '(21,35)': 2884, '(23,35)': 2885, '(25,35)': 2886, '(27,35)': 2887, '(29,35)': 2888, '(31,35)': 2889, '(33,35)': 2890, '(35,35)': 2891, '(0,36)': 2892, '(2,36)': 2893, '(4,36)': 2894, '(6,36)': 2895, '(8,36)': 2896, '(10,36)': 2897, '(12,36)': 2898, '(14,36)': 2899, '(16,36)': 2900, '(18,36)': 2901, '(20,36)': 2902, '(22,36)': 2903, '(24,36)': 2904, '(26,36)': 2905, '(28,36)': 2906, '(30,36)': 2907, '(32,36)': 2908, '(34,36)': 2909, '(36,0)': 2910, '(1,36)': 2911, '(36,1)': 2912, '(36,2)': 2913, '(3,36)': 2914, '(36,3)': 2915, '(36,4)': 2916, '(5,36)': 2917, '(36,5)': 2918, '(36,6)': 2919, '(7,36)': 2920, '(36,7)': 2921, '(36,8)': 2922, '(9,36)': 2923, '(36,9)': 2924, '(36,10)': 2925, '(11,36)': 2926, '(36,11)': 2927, '(36,12)': 2928, '(13,36)': 2929, '(36,13)': 2930, '(36,14)': 2931, '(15,36)': 2932, '(36,15)': 2933, '(36,16)': 2934, '(17,36)': 2935, '(36,17)': 2936, '(36,18)': 2937, '(19,36)': 2938, '(36,19)': 2939, '(36,20)': 2940, '(21,36)': 2941, '(36,21)': 2942, '(36,22)': 2943, '(23,36)': 2944, '(36,23)': 2945, '(36,24)': 2946, '(25,36)': 2947, '(36,25)': 2948, '(36,26)': 2949, '(27,36)': 2950, '(36,27)': 2951, '(36,28)': 2952, '(29,36)': 2953, '(36,29)': 2954, '(36,30)': 2955, '(31,36)': 2956, '(36,31)': 2957, '(36,32)': 2958, '(33,36)': 2959, '(36,33)': 2960, '(36,34)': 2961, '(35,36)': 2962, '(36,35)': 2963, '(36,36)': 2964, '(0,37)': 2965, '(37,0)': 2966, '(37,1)': 2967, '(2,37)': 2968, '(37,2)': 2969, '(37,3)': 2970, '(4,37)': 2971, '(37,4)': 2972, '(37,5)': 2973, '(6,37)': 2974, '(37,6)': 2975, '(37,7)': 2976, '(8,37)': 2977, '(37,8)': 2978, '(37,9)': 2979, '(10,37)': 2980, '(37,10)': 2981, '(37,11)': 2982, '(12,37)': 2983, '(37,12)': 2984, '(37,13)': 2985, '(14,37)': 2986, '(37,14)': 2987, '(37,15)': 2988, '(16,37)': 2989, '(37,16)': 2990, '(37,17)': 2991, '(18,37)': 2992, '(37,18)': 2993, '(37,19)': 2994, '(20,37)': 2995, '(37,20)': 2996, '(37,21)': 2997, '(22,37)': 2998, '(37,22)': 2999, '(37,23)': 3000, '(24,37)': 3001, '(37,24)': 3002, '(37,25)': 3003, '(26,37)': 3004, '(37,26)': 3005, '(37,27)': 3006, '(28,37)': 3007, '(37,28)': 3008, '(37,29)': 3009, '(30,37)': 3010, '(37,30)': 3011, '(37,31)': 3012, '(32,37)': 3013, '(37,32)': 3014, '(37,33)': 3015, '(34,37)': 3016, '(37,34)': 3017, '(37,35)': 3018, '(36,37)': 3019, '(37,36)': 3020, '(1,37)': 3021, '(3,37)': 3022, '(5,37)': 3023, '(7,37)': 3024, '(9,37)': 3025, '(11,37)': 3026, '(13,37)': 3027, '(15,37)': 3028, '(17,37)': 3029, '(19,37)': 3030, '(21,37)': 3031, '(23,37)': 3032, '(25,37)': 3033, '(27,37)': 3034, '(29,37)': 3035, '(31,37)': 3036, '(33,37)': 3037, '(35,37)': 3038, '(37,37)': 3039, '(0,38)': 3040, '(2,38)': 3041, '(4,38)': 3042, '(6,38)': 3043, '(8,38)': 3044, '(10,38)': 3045, '(12,38)': 3046, '(14,38)': 3047, '(16,38)': 3048, '(18,38)': 3049, '(20,38)': 3050, '(22,38)': 3051, '(24,38)': 3052, '(26,38)': 3053, '(28,38)': 3054, '(30,38)': 3055, '(32,38)': 3056, '(34,38)': 3057, '(36,38)': 3058, '(38,0)': 3059, '(1,38)': 3060, '(38,1)': 3061, '(38,2)': 3062, '(3,38)': 3063, '(38,3)': 3064, '(38,4)': 3065, '(5,38)': 3066, '(38,5)': 3067, '(38,6)': 3068, '(7,38)': 3069, '(38,7)': 3070, '(38,8)': 3071, '(9,38)': 3072, '(38,9)': 3073, '(38,10)': 3074, '(11,38)': 3075, '(38,11)': 3076, '(38,12)': 3077, '(13,38)': 3078, '(38,13)': 3079, '(38,14)': 3080, '(15,38)': 3081, '(38,15)': 3082, '(38,16)': 3083, '(17,38)': 3084, '(38,17)': 3085, '(38,18)': 3086, '(19,38)': 3087, '(38,19)': 3088, '(38,20)': 3089, '(21,38)': 3090, '(38,21)': 3091, '(38,22)': 3092, '(23,38)': 3093, '(38,23)': 3094, '(38,24)': 3095, '(25,38)': 3096, '(38,25)': 3097, '(38,26)': 3098, '(27,38)': 3099, '(38,27)': 3100, '(38,28)': 3101, '(29,38)': 3102, '(38,29)': 3103, '(38,30)': 3104, '(31,38)': 3105, '(38,31)': 3106, '(38,32)': 3107, '(33,38)': 3108, '(38,33)': 3109, '(38,34)': 3110, '(35,38)': 3111, '(38,35)': 3112, '(38,36)': 3113, '(37,38)': 3114, '(38,37)': 3115, '(38,38)': 3116, '(0,39)': 3117, '(39,0)': 3118, '(39,1)': 3119, '(2,39)': 3120, '(39,2)': 3121, '(39,3)': 3122, '(4,39)': 3123, '(39,4)': 3124, '(39,5)': 3125, '(6,39)': 3126, '(39,6)': 3127, '(39,7)': 3128, '(8,39)': 3129, '(39,8)': 3130, '(39,9)': 3131, '(10,39)': 3132, '(39,10)': 3133, '(39,11)': 3134, '(12,39)': 3135, '(39,12)': 3136, '(39,13)': 3137, '(14,39)': 3138, '(39,14)': 3139, '(39,15)': 3140, '(16,39)': 3141, '(39,16)': 3142, '(39,17)': 3143, '(18,39)': 3144, '(39,18)': 3145, '(39,19)': 3146, '(20,39)': 3147, '(39,20)': 3148, '(39,21)': 3149, '(22,39)': 3150, '(39,22)': 3151, '(39,23)': 3152, '(24,39)': 3153, '(39,24)': 3154, '(39,25)': 3155, '(26,39)': 3156, '(39,26)': 3157, '(39,27)': 3158, '(28,39)': 3159, '(39,28)': 3160, '(39,29)': 3161, '(30,39)': 3162, '(39,30)': 3163, '(39,31)': 3164, '(32,39)': 3165, '(39,32)': 3166, '(39,33)': 3167, '(34,39)': 3168, '(39,34)': 3169, '(39,35)': 3170, '(36,39)': 3171, '(39,36)': 3172, '(39,37)': 3173, '(38,39)': 3174, '(39,38)': 3175, '(1,39)': 3176, '(3,39)': 3177, '(5,39)': 3178, '(7,39)': 3179, '(9,39)': 3180, '(11,39)': 3181, '(13,39)': 3182, '(15,39)': 3183, '(17,39)': 3184, '(19,39)': 3185, '(21,39)': 3186, '(23,39)': 3187, '(25,39)': 3188, '(27,39)': 3189, '(29,39)': 3190, '(31,39)': 3191, '(33,39)': 3192, '(35,39)': 3193, '(37,39)': 3194, '(39,39)': 3195, '(0,40)': 3196, '(2,40)': 3197, '(4,40)': 3198, '(6,40)': 3199, '(8,40)': 3200, '(10,40)': 3201, '(12,40)': 3202, '(14,40)': 3203, '(16,40)': 3204, '(18,40)': 3205, '(20,40)': 3206, '(22,40)': 3207, '(24,40)': 3208, '(26,40)': 3209, '(28,40)': 3210, '(30,40)': 3211, '(32,40)': 3212, '(34,40)': 3213, '(36,40)': 3214, '(38,40)': 3215, '(40,0)': 3216, '(1,40)': 3217, '(40,1)': 3218, '(40,2)': 3219, '(3,40)': 3220, '(40,3)': 3221, '(40,4)': 3222, '(5,40)': 3223, '(40,5)': 3224, '(40,6)': 3225, '(7,40)': 3226, '(40,7)': 3227, '(40,8)': 3228, '(9,40)': 3229, '(40,9)': 3230, '(40,10)': 3231, '(11,40)': 3232, '(40,11)': 3233, '(40,12)': 3234, '(13,40)': 3235, '(40,13)': 3236, '(40,14)': 3237, '(15,40)': 3238, '(40,15)': 3239, '(40,16)': 3240, '(17,40)': 3241, '(40,17)': 3242, '(40,18)': 3243, '(19,40)': 3244, '(40,19)': 3245, '(40,20)': 3246, '(21,40)': 3247, '(40,21)': 3248, '(40,22)': 3249, '(23,40)': 3250, '(40,23)': 3251, '(40,24)': 3252, '(25,40)': 3253, '(40,25)': 3254, '(40,26)': 3255, '(27,40)': 3256, '(40,27)': 3257, '(40,28)': 3258, '(29,40)': 3259, '(40,29)': 3260, '(40,30)': 3261, '(31,40)': 3262, '(40,31)': 3263, '(40,32)': 3264, '(33,40)': 3265, '(40,33)': 3266, '(40,34)': 3267, '(35,40)': 3268, '(40,35)': 3269, '(40,36)': 3270, '(37,40)': 3271, '(40,37)': 3272, '(40,38)': 3273, '(39,40)': 3274, '(40,39)': 3275, '(40,40)': 3276, '(0,41)': 3277, '(41,0)': 3278, '(41,1)': 3279, '(2,41)': 3280, '(41,2)': 3281, '(41,3)': 3282, '(4,41)': 3283, '(41,4)': 3284, '(41,5)': 3285, '(6,41)': 3286, '(41,6)': 3287, '(41,7)': 3288, '(8,41)': 3289, '(41,8)': 3290, '(41,9)': 3291, '(10,41)': 3292, '(41,10)': 3293, '(41,11)': 3294, '(12,41)': 3295, '(41,12)': 3296, '(41,13)': 3297, '(14,41)': 3298, '(41,14)': 3299, '(41,15)': 3300, '(16,41)': 3301, '(41,16)': 3302, '(41,17)': 3303, '(18,41)': 3304, '(41,18)': 3305, '(41,19)': 3306, '(20,41)': 3307, '(41,20)': 3308, '(41,21)': 3309, '(22,41)': 3310, '(41,22)': 3311, '(41,23)': 3312, '(24,41)': 3313, '(41,24)': 3314, '(41,25)': 3315, '(26,41)': 3316, '(41,26)': 3317, '(41,27)': 3318, '(28,41)': 3319, '(41,28)': 3320, '(41,29)': 3321, '(30,41)': 3322, '(41,30)': 3323, '(41,31)': 3324, '(32,41)': 3325, '(41,32)': 3326, '(41,33)': 3327, '(34,41)': 3328, '(41,34)': 3329, '(41,35)': 3330, '(36,41)': 3331, '(41,36)': 3332, '(41,37)': 3333, '(38,41)': 3334, '(41,38)': 3335, '(41,39)': 3336, '(40,41)': 3337, '(41,40)': 3338, '(1,41)': 3339, '(3,41)': 3340, '(5,41)': 3341, '(7,41)': 3342, '(9,41)': 3343, '(11,41)': 3344, '(13,41)': 3345, '(15,41)': 3346, '(17,41)': 3347, '(19,41)': 3348, '(21,41)': 3349, '(23,41)': 3350, '(25,41)': 3351, '(27,41)': 3352, '(29,41)': 3353, '(31,41)': 3354, '(33,41)': 3355, '(35,41)': 3356, '(37,41)': 3357, '(39,41)': 3358, '(41,41)': 3359, '(0,42)': 3360, '(2,42)': 3361, '(4,42)': 3362, '(6,42)': 3363, '(8,42)': 3364, '(10,42)': 3365, '(12,42)': 3366, '(14,42)': 3367, '(16,42)': 3368, '(18,42)': 3369, '(20,42)': 3370, '(22,42)': 3371, '(24,42)': 3372, '(26,42)': 3373, '(28,42)': 3374, '(30,42)': 3375, '(32,42)': 3376, '(34,42)': 3377, '(36,42)': 3378, '(38,42)': 3379, '(40,42)': 3380, '(42,0)': 3381, '(1,42)': 3382, '(42,1)': 3383, '(42,2)': 3384, '(3,42)': 3385, '(42,3)': 3386, '(42,4)': 3387, '(5,42)': 3388, '(42,5)': 3389, '(42,6)': 3390, '(7,42)': 3391, '(42,7)': 3392, '(42,8)': 3393, '(9,42)': 3394, '(42,9)': 3395, '(42,10)': 3396, '(11,42)': 3397, '(42,11)': 3398, '(42,12)': 3399, '(13,42)': 3400, '(42,13)': 3401, '(42,14)': 3402, '(15,42)': 3403, '(42,15)': 3404, '(42,16)': 3405, '(17,42)': 3406, '(42,17)': 3407, '(42,18)': 3408, '(19,42)': 3409, '(42,19)': 3410, '(42,20)': 3411, '(21,42)': 3412, '(42,21)': 3413, '(42,22)': 3414, '(23,42)': 3415, '(42,23)': 3416, '(42,24)': 3417, '(25,42)': 3418, '(42,25)': 3419, '(42,26)': 3420, '(27,42)': 3421, '(42,27)': 3422, '(42,28)': 3423, '(29,42)': 3424, '(42,29)': 3425, '(42,30)': 3426, '(31,42)': 3427, '(42,31)': 3428, '(42,32)': 3429, '(33,42)': 3430, '(42,33)': 3431, '(42,34)': 3432, '(35,42)': 3433, '(42,35)': 3434, '(42,36)': 3435, '(37,42)': 3436, '(42,37)': 3437, '(42,38)': 3438, '(39,42)': 3439, '(42,39)': 3440, '(42,40)': 3441, '(41,42)': 3442, '(42,41)': 3443, '(42,42)': 3444, '(0,43)': 3445, '(43,0)': 3446, '(43,1)': 3447, '(2,43)': 3448, '(43,2)': 3449, '(43,3)': 3450, '(4,43)': 3451, '(43,4)': 3452, '(43,5)': 3453, '(6,43)': 3454, '(43,6)': 3455, '(43,7)': 3456, '(8,43)': 3457, '(43,8)': 3458, '(43,9)': 3459, '(10,43)': 3460, '(43,10)': 3461, '(43,11)': 3462, '(12,43)': 3463, '(43,12)': 3464, '(43,13)': 3465, '(14,43)': 3466, '(43,14)': 3467, '(43,15)': 3468, '(16,43)': 3469, '(43,16)': 3470, '(43,17)': 3471, '(18,43)': 3472, '(43,18)': 3473, '(43,19)': 3474, '(20,43)': 3475, '(43,20)': 3476, '(43,21)': 3477, '(22,43)': 3478, '(43,22)': 3479, '(43,23)': 3480, '(24,43)': 3481, '(43,24)': 3482, '(43,25)': 3483, '(26,43)': 3484, '(43,26)': 3485, '(43,27)': 3486, '(28,43)': 3487, '(43,28)': 3488, '(43,29)': 3489, '(30,43)': 3490, '(43,30)': 3491, '(43,31)': 3492, '(32,43)': 3493, '(43,32)': 3494, '(43,33)': 3495, '(34,43)': 3496, '(43,34)': 3497, '(43,35)': 3498, '(36,43)': 3499, '(43,36)': 3500, '(43,37)': 3501, '(38,43)': 3502, '(43,38)': 3503, '(43,39)': 3504, '(40,43)': 3505, '(43,40)': 3506, '(43,41)': 3507, '(42,43)': 3508, '(43,42)': 3509, '(1,43)': 3510, '(3,43)': 3511, '(5,43)': 3512, '(7,43)': 3513, '(9,43)': 3514, '(11,43)': 3515, '(13,43)': 3516, '(15,43)': 3517, '(17,43)': 3518, '(19,43)': 3519, '(21,43)': 3520, '(23,43)': 3521, '(25,43)': 3522, '(27,43)': 3523, '(29,43)': 3524, '(31,43)': 3525, '(33,43)': 3526, '(35,43)': 3527, '(37,43)': 3528, '(39,43)': 3529, '(41,43)': 3530, '(43,43)': 3531, '(0,44)': 3532, '(2,44)': 3533, '(4,44)': 3534, '(6,44)': 3535, '(8,44)': 3536, '(10,44)': 3537, '(12,44)': 3538, '(14,44)': 3539, '(16,44)': 3540, '(18,44)': 3541, '(20,44)': 3542, '(22,44)': 3543, '(24,44)': 3544, '(26,44)': 3545, '(28,44)': 3546, '(30,44)': 3547, '(32,44)': 3548, '(34,44)': 3549, '(36,44)': 3550, '(38,44)': 3551, '(40,44)': 3552, '(42,44)': 3553, '(44,0)': 3554, '(1,44)': 3555, '(44,1)': 3556, '(44,2)': 3557, '(3,44)': 3558, '(44,3)': 3559, '(44,4)': 3560, '(5,44)': 3561, '(44,5)': 3562, '(44,6)': 3563, '(7,44)': 3564, '(44,7)': 3565, '(44,8)': 3566, '(9,44)': 3567, '(44,9)': 3568, '(44,10)': 3569, '(11,44)': 3570, '(44,11)': 3571, '(44,12)': 3572, '(13,44)': 3573, '(44,13)': 3574, '(44,14)': 3575, '(15,44)': 3576, '(44,15)': 3577, '(44,16)': 3578, '(17,44)': 3579, '(44,17)': 3580, '(44,18)': 3581, '(19,44)': 3582, '(44,19)': 3583, '(44,20)': 3584, '(21,44)': 3585, '(44,21)': 3586, '(44,22)': 3587, '(23,44)': 3588, '(44,23)': 3589, '(44,24)': 3590, '(25,44)': 3591, '(44,25)': 3592, '(44,26)': 3593, '(27,44)': 3594, '(44,27)': 3595, '(44,28)': 3596, '(29,44)': 3597, '(44,29)': 3598, '(44,30)': 3599, '(31,44)': 3600, '(44,31)': 3601, '(44,32)': 3602, '(33,44)': 3603, '(44,33)': 3604, '(44,34)': 3605, '(35,44)': 3606, '(44,35)': 3607, '(44,36)': 3608, '(37,44)': 3609, '(44,37)': 3610, '(44,38)': 3611, '(39,44)': 3612, '(44,39)': 3613, '(44,40)': 3614, '(41,44)': 3615, '(44,41)': 3616, '(44,42)': 3617, '(43,44)': 3618, '(44,43)': 3619, '(44,44)': 3620, '(0,45)': 3621, '(45,0)': 3622, '(45,1)': 3623, '(2,45)': 3624, '(45,2)': 3625, '(45,3)': 3626, '(4,45)': 3627, '(45,4)': 3628, '(45,5)': 3629, '(6,45)': 3630, '(45,6)': 3631, '(45,7)': 3632, '(8,45)': 3633, '(45,8)': 3634, '(45,9)': 3635, '(10,45)': 3636, '(45,10)': 3637, '(45,11)': 3638, '(12,45)': 3639, '(45,12)': 3640, '(45,13)': 3641, '(14,45)': 3642, '(45,14)': 3643, '(45,15)': 3644, '(16,45)': 3645, '(45,16)': 3646, '(45,17)': 3647, '(18,45)': 3648, '(45,18)': 3649, '(45,19)': 3650, '(20,45)': 3651, '(45,20)': 3652, '(45,21)': 3653, '(22,45)': 3654, '(45,22)': 3655, '(45,23)': 3656, '(24,45)': 3657, '(45,24)': 3658, '(45,25)': 3659, '(26,45)': 3660, '(45,26)': 3661, '(45,27)': 3662, '(28,45)': 3663, '(45,28)': 3664, '(45,29)': 3665, '(30,45)': 3666, '(45,30)': 3667, '(45,31)': 3668, '(32,45)': 3669, '(45,32)': 3670, '(45,33)': 3671, '(34,45)': 3672, '(45,34)': 3673, '(45,35)': 3674, '(36,45)': 3675, '(45,36)': 3676, '(45,37)': 3677, '(38,45)': 3678, '(45,38)': 3679, '(45,39)': 3680, '(40,45)': 3681, '(45,40)': 3682, '(45,41)': 3683, '(42,45)': 3684, '(45,42)': 3685, '(45,43)': 3686, '(44,45)': 3687, '(45,44)': 3688, '(1,45)': 3689, '(3,45)': 3690, '(5,45)': 3691, '(7,45)': 3692, '(9,45)': 3693, '(11,45)': 3694, '(13,45)': 3695, '(15,45)': 3696, '(17,45)': 3697, '(19,45)': 3698, '(21,45)': 3699, '(23,45)': 3700, '(25,45)': 3701, '(27,45)': 3702, '(29,45)': 3703, '(31,45)': 3704, '(33,45)': 3705, '(35,45)': 3706, '(37,45)': 3707, '(39,45)': 3708, '(41,45)': 3709, '(43,45)': 3710, '(45,45)': 3711, '(0,46)': 3712, '(2,46)': 3713, '(4,46)': 3714, '(6,46)': 3715, '(8,46)': 3716, '(10,46)': 3717, '(12,46)': 3718, '(14,46)': 3719, '(16,46)': 3720, '(18,46)': 3721, '(20,46)': 3722, '(22,46)': 3723, '(24,46)': 3724, '(26,46)': 3725, '(28,46)': 3726, '(30,46)': 3727, '(32,46)': 3728, '(34,46)': 3729, '(36,46)': 3730, '(38,46)': 3731, '(40,46)': 3732, '(42,46)': 3733, '(44,46)': 3734, '(46,0)': 3735, '(1,46)': 3736, '(46,1)': 3737, '(46,2)': 3738, '(3,46)': 3739, '(46,3)': 3740, '(46,4)': 3741, '(5,46)': 3742, '(46,5)': 3743, '(46,6)': 3744, '(7,46)': 3745, '(46,7)': 3746, '(46,8)': 3747, '(9,46)': 3748, '(46,9)': 3749, '(46,10)': 3750, '(11,46)': 3751, '(46,11)': 3752, '(46,12)': 3753, '(13,46)': 3754, '(46,13)': 3755, '(46,14)': 3756, '(15,46)': 3757, '(46,15)': 3758, '(46,16)': 3759, '(17,46)': 3760, '(46,17)': 3761, '(46,18)': 3762, '(19,46)': 3763, '(46,19)': 3764, '(46,20)': 3765, '(21,46)': 3766, '(46,21)': 3767, '(46,22)': 3768, '(23,46)': 3769, '(46,23)': 3770, '(46,24)': 3771, '(25,46)': 3772, '(46,25)': 3773, '(46,26)': 3774, '(27,46)': 3775, '(46,27)': 3776, '(46,28)': 3777, '(29,46)': 3778, '(46,29)': 3779, '(46,30)': 3780, '(31,46)': 3781, '(46,31)': 3782, '(46,32)': 3783, '(33,46)': 3784, '(46,33)': 3785, '(46,34)': 3786, '(35,46)': 3787, '(46,35)': 3788, '(46,36)': 3789, '(37,46)': 3790, '(46,37)': 3791, '(46,38)': 3792, '(39,46)': 3793, '(46,39)': 3794, '(46,40)': 3795, '(41,46)': 3796, '(46,41)': 3797, '(46,42)': 3798, '(43,46)': 3799, '(46,43)': 3800, '(46,44)': 3801, '(45,46)': 3802, '(46,45)': 3803, '(46,46)': 3804, '(0,47)': 3805, '(47,0)': 3806, '(47,1)': 3807, '(2,47)': 3808, '(47,2)': 3809, '(47,3)': 3810, '(4,47)': 3811, '(47,4)': 3812, '(47,5)': 3813, '(6,47)': 3814, '(47,6)': 3815, '(47,7)': 3816, '(8,47)': 3817, '(47,8)': 3818, '(47,9)': 3819, '(10,47)': 3820, '(47,10)': 3821, '(47,11)': 3822, '(12,47)': 3823, '(47,12)': 3824, '(47,13)': 3825, '(14,47)': 3826, '(47,14)': 3827, '(47,15)': 3828, '(16,47)': 3829, '(47,16)': 3830, '(47,17)': 3831, '(18,47)': 3832, '(47,18)': 3833, '(47,19)': 3834, '(20,47)': 3835, '(47,20)': 3836, '(47,21)': 3837, '(22,47)': 3838, '(47,22)': 3839, '(47,23)': 3840, '(24,47)': 3841, '(47,24)': 3842, '(47,25)': 3843, '(26,47)': 3844, '(47,26)': 3845, '(47,27)': 3846, '(28,47)': 3847, '(47,28)': 3848, '(47,29)': 3849, '(30,47)': 3850, '(47,30)': 3851, '(47,31)': 3852, '(32,47)': 3853, '(47,32)': 3854, '(47,33)': 3855, '(34,47)': 3856, '(47,34)': 3857, '(47,35)': 3858, '(36,47)': 3859, '(47,36)': 3860, '(47,37)': 3861, '(38,47)': 3862, '(47,38)': 3863, '(47,39)': 3864, '(40,47)': 3865, '(47,40)': 3866, '(47,41)': 3867, '(42,47)': 3868, '(47,42)': 3869, '(47,43)': 3870, '(44,47)': 3871, '(47,44)': 3872, '(47,45)': 3873, '(46,47)': 3874, '(47,46)': 3875, '(1,47)': 3876, '(3,47)': 3877, '(5,47)': 3878, '(7,47)': 3879, '(9,47)': 3880, '(11,47)': 3881, '(13,47)': 3882, '(15,47)': 3883, '(17,47)': 3884, '(19,47)': 3885, '(21,47)': 3886, '(23,47)': 3887, '(25,47)': 3888, '(27,47)': 3889, '(29,47)': 3890, '(31,47)': 3891, '(33,47)': 3892, '(35,47)': 3893, '(37,47)': 3894, '(39,47)': 3895, '(41,47)': 3896, '(43,47)': 3897, '(45,47)': 3898, '(47,47)': 3899, '(0,48)': 3900, '(2,48)': 3901, '(4,48)': 3902, '(6,48)': 3903, '(8,48)': 3904, '(10,48)': 3905, '(12,48)': 3906, '(14,48)': 3907, '(16,48)': 3908, '(18,48)': 3909, '(20,48)': 3910, '(22,48)': 3911, '(24,48)': 3912, '(26,48)': 3913, '(28,48)': 3914, '(30,48)': 3915, '(32,48)': 3916, '(34,48)': 3917, '(36,48)': 3918, '(38,48)': 3919, '(40,48)': 3920, '(42,48)': 3921, '(44,48)': 3922, '(46,48)': 3923, '(48,0)': 3924, '(1,48)': 3925, '(48,1)': 3926, '(48,2)': 3927, '(3,48)': 3928, '(48,3)': 3929, '(48,4)': 3930, '(5,48)': 3931, '(48,5)': 3932, '(48,6)': 3933, '(7,48)': 3934, '(48,7)': 3935, '(48,8)': 3936, '(9,48)': 3937, '(48,9)': 3938, '(48,10)': 3939, '(11,48)': 3940, '(48,11)': 3941, '(48,12)': 3942, '(13,48)': 3943, '(48,13)': 3944, '(48,14)': 3945, '(15,48)': 3946, '(48,15)': 3947, '(48,16)': 3948, '(17,48)': 3949, '(48,17)': 3950, '(48,18)': 3951, '(19,48)': 3952, '(48,19)': 3953, '(48,20)': 3954, '(21,48)': 3955, '(48,21)': 3956, '(48,22)': 3957, '(23,48)': 3958, '(48,23)': 3959, '(48,24)': 3960, '(25,48)': 3961, '(48,25)': 3962, '(48,26)': 3963, '(27,48)': 3964, '(48,27)': 3965, '(48,28)': 3966, '(29,48)': 3967, '(48,29)': 3968, '(48,30)': 3969, '(31,48)': 3970, '(48,31)': 3971, '(48,32)': 3972, '(33,48)': 3973, '(48,33)': 3974, '(48,34)': 3975, '(35,48)': 3976, '(48,35)': 3977, '(48,36)': 3978, '(37,48)': 3979, '(48,37)': 3980, '(48,38)': 3981, '(39,48)': 3982, '(48,39)': 3983, '(48,40)': 3984, '(41,48)': 3985, '(48,41)': 3986, '(48,42)': 3987, '(43,48)': 3988, '(48,43)': 3989, '(48,44)': 3990, '(45,48)': 3991, '(48,45)': 3992, '(48,46)': 3993, '(47,48)': 3994, '(48,47)': 3995, '(48,48)': 3996, '(0,49)': 3997, '(49,0)': 3998, '(49,1)': 3999, '(2,49)': 4000, '(49,2)': 4001, '(49,3)': 4002, '(4,49)': 4003, '(49,4)': 4004, '(49,5)': 4005, '(6,49)': 4006, '(49,6)': 4007, '(49,7)': 4008, '(8,49)': 4009, '(49,8)': 4010, '(49,9)': 4011, '(10,49)': 4012, '(49,10)': 4013, '(49,11)': 4014, '(12,49)': 4015, '(49,12)': 4016, '(49,13)': 4017, '(14,49)': 4018, '(49,14)': 4019, '(49,15)': 4020, '(16,49)': 4021, '(49,16)': 4022, '(49,17)': 4023, '(18,49)': 4024, '(49,18)': 4025, '(49,19)': 4026, '(20,49)': 4027, '(49,20)': 4028, '(49,21)': 4029, '(22,49)': 4030, '(49,22)': 4031, '(49,23)': 4032, '(24,49)': 4033, '(49,24)': 4034, '(49,25)': 4035, '(26,49)': 4036, '(49,26)': 4037, '(49,27)': 4038, '(28,49)': 4039, '(49,28)': 4040, '(49,29)': 4041, '(30,49)': 4042, '(49,30)': 4043, '(49,31)': 4044, '(32,49)': 4045, '(49,32)': 4046, '(49,33)': 4047, '(34,49)': 4048, '(49,34)': 4049, '(49,35)': 4050, '(36,49)': 4051, '(49,36)': 4052, '(49,37)': 4053, '(38,49)': 4054, '(49,38)': 4055, '(49,39)': 4056, '(40,49)': 4057, '(49,40)': 4058, '(49,41)': 4059, '(42,49)': 4060, '(49,42)': 4061, '(49,43)': 4062, '(44,49)': 4063, '(49,44)': 4064, '(49,45)': 4065, '(46,49)': 4066, '(49,46)': 4067, '(49,47)': 4068, '(48,49)': 4069, '(49,48)': 4070, '(1,49)': 4071, '(3,49)': 4072, '(5,49)': 4073, '(7,49)': 4074, '(9,49)': 4075, '(11,49)': 4076, '(13,49)': 4077, '(15,49)': 4078, '(17,49)': 4079, '(19,49)': 4080, '(21,49)': 4081, '(23,49)': 4082, '(25,49)': 4083, '(27,49)': 4084, '(29,49)': 4085, '(31,49)': 4086, '(33,49)': 4087, '(35,49)': 4088, '(37,49)': 4089, '(39,49)': 4090, '(41,49)': 4091, '(43,49)': 4092, '(45,49)': 4093, '(47,49)': 4094, '(49,49)': 4095} +map of VOCAB tokens to their indices + - CARDINAL_MAP: dict[tuple[int, int], str] = {(-1, 0): 'NORTH', (1, 0): 'SOUTH', (0, -1): 'WEST', (0, 1): 'EAST'} +map of cardinal directions to appropriate tokens + docs for maze-dataset v1.0.1 Contents @@ -1739,7 +1750,7 @@ View Source on GitHub return the dataset as tokens according to the passed maze_tokenizer the maze_tokenizer should be either a MazeTokenizer or a -ModularMazeTokenizer +MazeTokenizerModular if join_tokens_individual_maze is True, then the tokens of each maze are joined with a space, and the result is a list of strings. i.e.: @@ -3087,7 +3098,7 @@ View Source on GitHub return the dataset as tokens according to the passed maze_tokenizer the maze_tokenizer should be either a MazeTokenizer or a -ModularMazeTokenizer +MazeTokenizerModular if join_tokens_individual_maze is True, then the tokens of each maze are joined with a space, and the result is a list of strings. i.e.: @@ -3733,7 +3744,7 @@ View Source on GitHub helper function to get a maze already with a solution -- numpy_rng = Generator(PCG64) at 0x1BCBFFCA5E0 +- numpy_rng = Generator(PCG64) at 0x1674FA9E5E0 docs for maze-dataset v1.0.1 @@ -3783,7 +3794,7 @@ LatticeMazeGenerators View Source on GitHub -- numpy_rng = Generator(PCG64) at 0x1BCBFFCA5E0 +- numpy_rng = Generator(PCG64) at 0x1674FA9E5E0 def get_neighbors_in_bounds @@ -4420,7 +4431,8 @@ def generate_random_path allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] View Source on GitHub @@ -4445,6 +4457,8 @@ Parameters: deadend (defaults to False) (defaults to False) - deadend_end : bool whether to force the end position to be a deadend (defaults to False) (defaults to False) +- endpoints_not_equal : bool whether to ensure tha the start and end + point are not the same (defaults to False) Returns: @@ -4890,7 +4904,8 @@ def generate_random_path allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] View Source on GitHub @@ -4915,6 +4930,8 @@ Parameters: deadend (defaults to False) (defaults to False) - deadend_end : bool whether to force the end position to be a deadend (defaults to False) (defaults to False) +- endpoints_not_equal : bool whether to ensure tha the start and end + point are not the same (defaults to False) Returns: @@ -6885,7 +6902,11 @@ class TokenizationMode(enum.Enum): View Source on GitHub -LEGACY: mode of tokenization +legacy tokenization modes + + [!CAUTION] Legacy mode of tokenization. will still be around in future + releases, but is no longer recommended for use. Use + MazeTokenizerModular instead. Abbreviations: @@ -6933,11 +6954,11 @@ functionality for maze tokenization. Development -Due to the functionality of ALL_TOKENIZERS, _TokenizerElement subclasses -may only contain fields of type utils.FiniteValued. Implementing a -subclass with an int or float-typed field, for example, is not -supported. In the event that adding such fields is deemed necessary, -ALL_TOKENIZERS must be updated. + [!TIP] Due to the functionality of get_all_tokenizers(), + _TokenizerElement subclasses may only contain fields of type + utils.FiniteValued. Implementing a subclass with an int or float-typed + field, for example, is not supported. In the event that adding such + fields is deemed necessary, get_all_tokenizers() must be updated. - name: str @@ -7232,12 +7253,11 @@ def is_tested_tokenizer View Source on GitHub Returns if the tokenizer is returned by -all_tokenizers._get_all_tokenizers, the set of tested and reliable +all_tokenizers.get_all_tokenizers, the set of tested and reliable tokenizers. -Since evaluating all_tokenizers._get_all_tokenizers is expensive, -instead checks for membership of self’s hash in -get_all_tokenizer_hashes(). +Since evaluating all_tokenizers.get_all_tokenizers is expensive, instead +checks for membership of self’s hash in get_all_tokenizer_hashes(). if do_assert is True, raises an AssertionError if the tokenizer is not tested. @@ -7386,12 +7406,8 @@ class PromptSequencers(maze_dataset.tokenization.maze_tokenizer.__TokenizerEleme View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _PromptSequencer subclass hierarchy used by +MazeTokenizerModular. - key = 'prompt_sequencer' @@ -7566,12 +7582,8 @@ class CoordTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElemen View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _CoordTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'coord_tokenizer' @@ -7749,12 +7761,8 @@ class AdjListTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElem View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _AdjListTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'adj_list_tokenizer' @@ -7936,7 +7944,8 @@ class EdgeGroupings(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementN View Source on GitHub -Namespace for EdgeGrouping subclass hierarchy used by AdjListTokenizer. +Namespace for _EdgeGrouping subclass hierarchy used by +_AdjListTokenizer. - key = 'edge_grouping' @@ -8159,7 +8168,8 @@ class EdgePermuters(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementN View Source on GitHub -Namespace for EdgePermuter subclass hierarchy used by AdjListTokenizer. +Namespace for _EdgePermuter subclass hierarchy used by +_AdjListTokenizer. - key = 'edge_permuter' @@ -8365,7 +8375,7 @@ class EdgeSubsets(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNam View Source on GitHub -Namespace for EdgeSubset subclass hierarchy used by AdjListTokenizer. +Namespace for _EdgeSubset subclass hierarchy used by _AdjListTokenizer. - key = 'edge_subset' @@ -8514,12 +8524,8 @@ class TargetTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerEleme View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _TargetTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'target_tokenizer' @@ -8655,12 +8661,7 @@ class StepSizes(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNames View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _StepSize subclass hierarchy used by MazeTokenizerModular. - key = 'step_size' @@ -9040,12 +9041,8 @@ class StepTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElement View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _StepTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'step_tokenizers' @@ -9404,12 +9401,8 @@ class PathTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElement View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _PathTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'path_tokenizer' @@ -9782,28 +9775,29 @@ docs for maze-dataset v1.0.1 Contents -Contains ALL_TOKENIZERS and supporting limited-use functions. +Contains get_all_tokenizers() and supporting limited-use functions. -ALL_TOKENIZERS +get_all_tokenizers() -A comprehensive collection of all valid MazeTokenizerModular objects. -This is an overwhelming majority subset of the set of all possible -MazeTokenizerModular objects. Other tokenizers not contained in -ALL_TOKENIZERS may be possible to construct, but they are untested and -not guaranteed to work. This collection is in a separate module since it -is expensive to compute and will grow more expensive as features are -added to MazeTokenizerModular. +returns a comprehensive collection of all valid MazeTokenizerModular +objects. This is an overwhelming majority subset of the set of all +possible MazeTokenizerModular objects. Other tokenizers not contained in +get_all_tokenizers() may be possible to construct, but they are untested +and not guaranteed to work. This collection is in a separate module +since it is expensive to compute and will grow more expensive as +features are added to MazeTokenizerModular. Use Cases In general, uses for this module are limited to development of the library and specific research studying many tokenization behaviors. - Unit testing: - Tokenizers to use in unit tests are sampled from -ALL_TOKENIZERS - Large-scale tokenizer research: - Specific research -training models on many tokenization behaviors can use ALL_TOKENIZERS as -the maximally inclusive collection - ALL_TOKENIZERS may be subsequently -filtered using MazeTokenizerModular.has_element For other uses, it’s -likely that the computational expense can be avoided by using - +get_all_tokenizers() - Large-scale tokenizer research: - Specific +research training models on many tokenization behaviors can use +get_all_tokenizers() as the maximally inclusive collection - +get_all_tokenizers() may be subsequently filtered using +MazeTokenizerModular.has_element For other uses, it’s likely that the +computational expense can be avoided by using - maze_tokenizer.get_all_tokenizer_hashes() for membership checks - utils.all_instances for generating smaller subsets of MazeTokenizerModular or _TokenizerElement objects @@ -9828,28 +9822,29 @@ View Source on GitHub maze_dataset.tokenization.all_tokenizers -Contains ALL_TOKENIZERS and supporting limited-use functions. +Contains get_all_tokenizers() and supporting limited-use functions. -ALL_TOKENIZERS +get_all_tokenizers() -A comprehensive collection of all valid MazeTokenizerModular objects. -This is an overwhelming majority subset of the set of all possible -MazeTokenizerModular objects. Other tokenizers not contained in -ALL_TOKENIZERS may be possible to construct, but they are untested and -not guaranteed to work. This collection is in a separate module since it -is expensive to compute and will grow more expensive as features are -added to MazeTokenizerModular. +returns a comprehensive collection of all valid MazeTokenizerModular +objects. This is an overwhelming majority subset of the set of all +possible MazeTokenizerModular objects. Other tokenizers not contained in +get_all_tokenizers() may be possible to construct, but they are untested +and not guaranteed to work. This collection is in a separate module +since it is expensive to compute and will grow more expensive as +features are added to MazeTokenizerModular. Use Cases In general, uses for this module are limited to development of the library and specific research studying many tokenization behaviors. - Unit testing: - Tokenizers to use in unit tests are sampled from -ALL_TOKENIZERS - Large-scale tokenizer research: - Specific research -training models on many tokenization behaviors can use ALL_TOKENIZERS as -the maximally inclusive collection - ALL_TOKENIZERS may be subsequently -filtered using MazeTokenizerModular.has_element For other uses, it’s -likely that the computational expense can be avoided by using - +get_all_tokenizers() - Large-scale tokenizer research: - Specific +research training models on many tokenization behaviors can use +get_all_tokenizers() as the maximally inclusive collection - +get_all_tokenizers() may be subsequently filtered using +MazeTokenizerModular.has_element For other uses, it’s likely that the +computational expense can be avoided by using - maze_tokenizer.get_all_tokenizer_hashes() for membership checks - utils.all_instances for generating smaller subsets of MazeTokenizerModular or _TokenizerElement objects @@ -9881,7 +9876,7 @@ def all_tokenizers_set View Source on GitHub -Casts ALL_TOKENIZERS to a set. +Casts get_all_tokenizers() to a set. def sample_all_tokenizers @@ -9891,7 +9886,7 @@ def sample_all_tokenizers View Source on GitHub -Samples n tokenizers from ALL_TOKENIZERS. +Samples n tokenizers from get_all_tokenizers(). def sample_tokenizers_for_test @@ -9901,7 +9896,7 @@ def sample_tokenizers_for_test View Source on GitHub -Returns a sample of size n of unique elements from ALL_TOKENIZERS, +Returns a sample of size n of unique elements from get_all_tokenizers(), always including every element in EVERY_TEST_TOKENIZERS. def save_hashes @@ -9914,7 +9909,8 @@ def save_hashes View Source on GitHub -Computes, sorts, and saves the hashes of every member of ALL_TOKENIZERS. +Computes, sorts, and saves the hashes of every member of +get_all_tokenizers(). docs for maze-dataset v1.0.1 @@ -9974,7 +9970,11 @@ class TokenizationMode(enum.Enum): View Source on GitHub -LEGACY: mode of tokenization +legacy tokenization modes + + [!CAUTION] Legacy mode of tokenization. will still be around in future + releases, but is no longer recommended for use. Use + MazeTokenizerModular instead. Abbreviations: @@ -10240,8 +10240,8 @@ View Source on GitHub mark a _TokenizerElement as unsupported. -Classes marked with this decorator won’t show up in ALL_TOKENIZERS and -thus wont be tested. The classes marked in release 1.0.0 did work +Classes marked with this decorator won’t show up in get_all_tokenizers() +and thus wont be tested. The classes marked in release 1.0.0 did work reliably before being marked, but they can’t be instantiated since the decorator adds an abstract method. The decorator exists to prune the space of tokenizers returned by all_instances both for testing and @@ -10253,12 +10253,8 @@ class CoordTokenizers(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _CoordTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'coord_tokenizer' @@ -10436,7 +10432,8 @@ class EdgeGroupings(__TokenizerElementNamespace): View Source on GitHub -Namespace for EdgeGrouping subclass hierarchy used by AdjListTokenizer. +Namespace for _EdgeGrouping subclass hierarchy used by +_AdjListTokenizer. - key = 'edge_grouping' @@ -10659,7 +10656,8 @@ class EdgePermuters(__TokenizerElementNamespace): View Source on GitHub -Namespace for EdgePermuter subclass hierarchy used by AdjListTokenizer. +Namespace for _EdgePermuter subclass hierarchy used by +_AdjListTokenizer. - key = 'edge_permuter' @@ -10865,7 +10863,7 @@ class EdgeSubsets(__TokenizerElementNamespace): View Source on GitHub -Namespace for EdgeSubset subclass hierarchy used by AdjListTokenizer. +Namespace for _EdgeSubset subclass hierarchy used by _AdjListTokenizer. - key = 'edge_subset' @@ -11014,12 +11012,8 @@ class AdjListTokenizers(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _AdjListTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'adj_list_tokenizer' @@ -11201,12 +11195,8 @@ class TargetTokenizers(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _TargetTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'target_tokenizer' @@ -11342,12 +11332,7 @@ class StepSizes(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _StepSize subclass hierarchy used by MazeTokenizerModular. - key = 'step_size' @@ -11727,12 +11712,8 @@ class StepTokenizers(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _StepTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'step_tokenizers' @@ -12091,12 +12072,8 @@ class PathTokenizers(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _PathTokenizer subclass hierarchy used by +MazeTokenizerModular. - key = 'path_tokenizer' @@ -12256,12 +12233,8 @@ class PromptSequencers(__TokenizerElementNamespace): View Source on GitHub -ABC for namespaces - -Properties - -- key: The binding used in MazeTokenizerModular for instances of the - classes contained within that __TokenizerElementNamespace. +Namespace for _PromptSequencer subclass hierarchy used by +MazeTokenizerModular. - key = 'prompt_sequencer' @@ -12571,12 +12544,11 @@ def is_tested_tokenizer View Source on GitHub Returns if the tokenizer is returned by -all_tokenizers._get_all_tokenizers, the set of tested and reliable +all_tokenizers.get_all_tokenizers, the set of tested and reliable tokenizers. -Since evaluating all_tokenizers._get_all_tokenizers is expensive, -instead checks for membership of self’s hash in -get_all_tokenizer_hashes(). +Since evaluating all_tokenizers.get_all_tokenizers is expensive, instead +checks for membership of self’s hash in get_all_tokenizer_hashes(). if do_assert is True, raises an AssertionError if the tokenizer is not tested. diff --git a/docs/combined/maze_dataset_gfm.md b/docs/combined/maze_dataset_gfm.md index 5738d45..10c0c20 100644 --- a/docs/combined/maze_dataset_gfm.md +++ b/docs/combined/maze_dataset_gfm.md @@ -387,7 +387,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ### `class SolvedMaze(maze_dataset.maze.lattice_maze.TargetedLatticeMaze):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1109-L1247) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1116-L1254) Stores a maze and a solution @@ -405,7 +405,7 @@ Stores a maze and a solution ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1115-L1158) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1122-L1165) - `solution: jaxtyping.Int8[ndarray, 'coord row_col']` @@ -416,12 +416,12 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1170-L1175) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1177-L1182) - `maze: maze_dataset.maze.lattice_maze.LatticeMaze` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1178-L1184) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1185-L1191) ### `def from_lattice_maze` @@ -434,7 +434,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1186-L1194) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1193-L1201) ### `def from_targeted_lattice_maze` @@ -447,7 +447,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1196-L1212) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1203-L1219) solves the given targeted lattice maze and returns a SolvedMaze @@ -461,7 +461,7 @@ solves the given targeted lattice maze and returns a SolvedMaze ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1214-L1237) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1221-L1244) coordinates and their indicies from the solution where a fork is present @@ -475,7 +475,7 @@ coordinates and their indicies from the solution where a fork is present ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1239-L1247) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1246-L1254) coordinates from the solution where there is only a single (non-backtracking) point to move to @@ -825,7 +825,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data return the dataset as tokens according to the passed `maze_tokenizer` the `maze_tokenizer` should be either a `MazeTokenizer` or a -`ModularMazeTokenizer` +`MazeTokenizerModular` if `join_tokens_individual_maze` is True, then the tokens of each maze are joined with a space, and the result is a list of strings. i.e.: @@ -1191,7 +1191,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class TargetedLatticeMaze(maze_dataset.maze.lattice_maze.LatticeMaze):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1036-L1106) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1043-L1113) A LatticeMaze with a start and end position @@ -1218,7 +1218,7 @@ A LatticeMaze with a start and end position ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1073-L1078) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1080-L1085) ### `def get_end_pos_tokens` @@ -1227,7 +1227,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1087-L1092) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1094-L1099) ### `def from_lattice_maze` @@ -1241,7 +1241,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1094-L1106) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1101-L1113) ### `def serialize` @@ -1343,7 +1343,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class LatticeMaze(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L101-L1033) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L101-L1040) lattice maze (nodes on a lattice, connections only to neighboring nodes) @@ -1528,12 +1528,13 @@ TODO: other connected components? allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L368-L477) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L368-L484) return a path between randomly chosen start and end nodes within the connected component @@ -1555,6 +1556,8 @@ cause the same position to be selected as both start and end. a deadend (defaults to `False`) (defaults to `False`) - `deadend_end : bool` whether to ***force*** the end position to be a deadend (defaults to `False`) (defaults to `False`) +- `endpoints_not_equal : bool` whether to ensure tha the start and end + point are not the same (defaults to `False`) ### Returns: @@ -1576,7 +1579,7 @@ cause the same position to be selected as both start and end. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L482-L485) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L489-L492) ### `def from_adj_list` @@ -1588,7 +1591,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L487-L526) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L494-L533) create a LatticeMaze from a list of connections @@ -1602,7 +1605,7 @@ create a LatticeMaze from a list of connections ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L528-L547) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L535-L554) ### `def as_tokens` @@ -1614,7 +1617,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L596-L604) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L603-L611) serialize maze and solution to tokens @@ -1629,7 +1632,7 @@ serialize maze and solution to tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L705-L731) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L712-L738) Constructs a maze from a tokenization. Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. @@ -1645,7 +1648,7 @@ Constructs a maze from a tokenization. Only legacy tokenizers and their ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L762-L816) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L769-L823) ### `def from_pixels` @@ -1657,7 +1660,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L866-L981) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L873-L988) ### `def as_ascii` @@ -1666,7 +1669,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L998-L1019) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1005-L1026) return an ASCII grid of the maze @@ -1677,7 +1680,7 @@ return an ASCII grid of the maze ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1021-L1033) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/__init__.py#L1028-L1040) ### `def serialize` @@ -1924,7 +1927,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data constants and type hints used accross the package [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L0-L210) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L0-L221) - `Coord = ` @@ -1957,7 +1960,7 @@ n_edges \* 2 \* 2 array of connections, like an adjacency list ### `class SpecialTokensError(builtins.Exception):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L29-L30) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/constants.py#L35-L36) Common base class for all non-exit exceptions. @@ -1985,12 +1988,20 @@ down, up, right, left as vectors - `VOCAB: types._VOCAB_BASE = _VOCAB_BASE(ADJLIST_START='', ADJLIST_END='', TARGET_START='', TARGET_END='', ORIGIN_START='', ORIGIN_END='', PATH_START='', PATH_END='', CONNECTOR='<-->', ADJACENCY_ENDLINE=';', PADDING='', COORD_PRE='(', COORD_INTRA=',', COORD_POST=')', TARGET_INTRA='=', TARGET_POST='||', PATH_INTRA=':', PATH_POST='THEN', NEGATIVE='-', UNKNOWN='', TARGET_A='TARGET_A', TARGET_B='TARGET_B', TARGET_C='TARGET_C', TARGET_D='TARGET_D', TARGET_E='TARGET_E', TARGET_F='TARGET_F', TARGET_G='TARGET_G', TARGET_H='TARGET_H', TARGET_I='TARGET_I', TARGET_J='TARGET_J', TARGET_K='TARGET_K', TARGET_L='TARGET_L', TARGET_M='TARGET_M', TARGET_N='TARGET_N', TARGET_O='TARGET_O', TARGET_P='TARGET_P', TARGET_Q='TARGET_Q', TARGET_R='TARGET_R', TARGET_S='TARGET_S', TARGET_T='TARGET_T', TARGET_U='TARGET_U', TARGET_V='TARGET_V', TARGET_W='TARGET_W', TARGET_X='TARGET_X', TARGET_Y='TARGET_Y', TARGET_Z='TARGET_Z', TARGET_NORTH='TARGET_NORTH', TARGET_SOUTH='TARGET_SOUTH', TARGET_EAST='TARGET_EAST', TARGET_WEST='TARGET_WEST', TARGET_NORTHEAST='TARGET_NORTHEAST', TARGET_NORTHWEST='TARGET_NORTHWEST', TARGET_SOUTHEAST='TARGET_SOUTHEAST', TARGET_SOUTHWEST='TARGET_SOUTHWEST', TARGET_CENTER='TARGET_CENTER', PATH_NORTH='NORTH', PATH_SOUTH='SOUTH', PATH_EAST='EAST', PATH_WEST='WEST', PATH_FORWARD='FORWARD', PATH_BACKWARD='BACKWARD', PATH_LEFT='LEFT', PATH_RIGHT='RIGHT', PATH_STAY='STAY', I_000='+0', I_001='+1', I_002='+2', I_003='+3', I_004='+4', I_005='+5', I_006='+6', I_007='+7', I_008='+8', I_009='+9', I_010='+10', I_011='+11', I_012='+12', I_013='+13', I_014='+14', I_015='+15', I_016='+16', I_017='+17', I_018='+18', I_019='+19', I_020='+20', I_021='+21', I_022='+22', I_023='+23', I_024='+24', I_025='+25', I_026='+26', I_027='+27', I_028='+28', I_029='+29', I_030='+30', I_031='+31', I_032='+32', I_033='+33', I_034='+34', I_035='+35', I_036='+36', I_037='+37', I_038='+38', I_039='+39', I_040='+40', I_041='+41', I_042='+42', I_043='+43', I_044='+44', I_045='+45', I_046='+46', I_047='+47', I_048='+48', I_049='+49', I_050='+50', I_051='+51', I_052='+52', I_053='+53', I_054='+54', I_055='+55', I_056='+56', I_057='+57', I_058='+58', I_059='+59', I_060='+60', I_061='+61', I_062='+62', I_063='+63', I_064='+64', I_065='+65', I_066='+66', I_067='+67', I_068='+68', I_069='+69', I_070='+70', I_071='+71', I_072='+72', I_073='+73', I_074='+74', I_075='+75', I_076='+76', I_077='+77', I_078='+78', I_079='+79', I_080='+80', I_081='+81', I_082='+82', I_083='+83', I_084='+84', I_085='+85', I_086='+86', I_087='+87', I_088='+88', I_089='+89', I_090='+90', I_091='+91', I_092='+92', I_093='+93', I_094='+94', I_095='+95', I_096='+96', I_097='+97', I_098='+98', I_099='+99', I_100='+100', I_101='+101', I_102='+102', I_103='+103', I_104='+104', I_105='+105', I_106='+106', I_107='+107', I_108='+108', I_109='+109', I_110='+110', I_111='+111', I_112='+112', I_113='+113', I_114='+114', I_115='+115', I_116='+116', I_117='+117', I_118='+118', I_119='+119', I_120='+120', I_121='+121', I_122='+122', I_123='+123', I_124='+124', I_125='+125', I_126='+126', I_127='+127', I_128='+128', I_129='+129', I_130='+130', I_131='+131', I_132='+132', I_133='+133', I_134='+134', I_135='+135', I_136='+136', I_137='+137', I_138='+138', I_139='+139', I_140='+140', I_141='+141', I_142='+142', I_143='+143', I_144='+144', I_145='+145', I_146='+146', I_147='+147', I_148='+148', I_149='+149', I_150='+150', I_151='+151', I_152='+152', I_153='+153', I_154='+154', I_155='+155', I_156='+156', I_157='+157', I_158='+158', I_159='+159', I_160='+160', I_161='+161', I_162='+162', I_163='+163', I_164='+164', I_165='+165', I_166='+166', I_167='+167', I_168='+168', I_169='+169', I_170='+170', I_171='+171', I_172='+172', I_173='+173', I_174='+174', I_175='+175', I_176='+176', I_177='+177', I_178='+178', I_179='+179', I_180='+180', I_181='+181', I_182='+182', I_183='+183', I_184='+184', I_185='+185', I_186='+186', I_187='+187', I_188='+188', I_189='+189', I_190='+190', I_191='+191', I_192='+192', I_193='+193', I_194='+194', I_195='+195', I_196='+196', I_197='+197', I_198='+198', I_199='+199', I_200='+200', I_201='+201', I_202='+202', I_203='+203', I_204='+204', I_205='+205', I_206='+206', I_207='+207', I_208='+208', I_209='+209', I_210='+210', I_211='+211', I_212='+212', I_213='+213', I_214='+214', I_215='+215', I_216='+216', I_217='+217', I_218='+218', I_219='+219', I_220='+220', I_221='+221', I_222='+222', I_223='+223', I_224='+224', I_225='+225', I_226='+226', I_227='+227', I_228='+228', I_229='+229', I_230='+230', I_231='+231', I_232='+232', I_233='+233', I_234='+234', I_235='+235', I_236='+236', I_237='+237', I_238='+238', I_239='+239', I_240='+240', I_241='+241', I_242='+242', I_243='+243', I_244='+244', I_245='+245', I_246='+246', I_247='+247', I_248='+248', I_249='+249', I_250='+250', I_251='+251', I_252='+252', I_253='+253', I_254='+254', I_255='+255', CTT_0='0', CTT_1='1', CTT_2='2', CTT_3='3', CTT_4='4', CTT_5='5', CTT_6='6', CTT_7='7', CTT_8='8', CTT_9='9', CTT_10='10', CTT_11='11', CTT_12='12', CTT_13='13', CTT_14='14', CTT_15='15', CTT_16='16', CTT_17='17', CTT_18='18', CTT_19='19', CTT_20='20', CTT_21='21', CTT_22='22', CTT_23='23', CTT_24='24', CTT_25='25', CTT_26='26', CTT_27='27', CTT_28='28', CTT_29='29', CTT_30='30', CTT_31='31', CTT_32='32', CTT_33='33', CTT_34='34', CTT_35='35', CTT_36='36', CTT_37='37', CTT_38='38', CTT_39='39', CTT_40='40', CTT_41='41', CTT_42='42', CTT_43='43', CTT_44='44', CTT_45='45', CTT_46='46', CTT_47='47', CTT_48='48', CTT_49='49', CTT_50='50', CTT_51='51', CTT_52='52', CTT_53='53', CTT_54='54', CTT_55='55', CTT_56='56', CTT_57='57', CTT_58='58', CTT_59='59', CTT_60='60', CTT_61='61', CTT_62='62', CTT_63='63', CTT_64='64', CTT_65='65', CTT_66='66', CTT_67='67', CTT_68='68', CTT_69='69', CTT_70='70', CTT_71='71', CTT_72='72', CTT_73='73', CTT_74='74', CTT_75='75', CTT_76='76', CTT_77='77', CTT_78='78', CTT_79='79', CTT_80='80', CTT_81='81', CTT_82='82', CTT_83='83', CTT_84='84', CTT_85='85', CTT_86='86', CTT_87='87', CTT_88='88', CTT_89='89', CTT_90='90', CTT_91='91', CTT_92='92', CTT_93='93', CTT_94='94', CTT_95='95', CTT_96='96', CTT_97='97', CTT_98='98', CTT_99='99', CTT_100='100', CTT_101='101', CTT_102='102', CTT_103='103', CTT_104='104', CTT_105='105', CTT_106='106', CTT_107='107', CTT_108='108', CTT_109='109', CTT_110='110', CTT_111='111', CTT_112='112', CTT_113='113', CTT_114='114', CTT_115='115', CTT_116='116', CTT_117='117', CTT_118='118', CTT_119='119', CTT_120='120', CTT_121='121', CTT_122='122', CTT_123='123', CTT_124='124', CTT_125='125', CTT_126='126', CTT_127='127', I_N256='-256', I_N255='-255', I_N254='-254', I_N253='-253', I_N252='-252', I_N251='-251', I_N250='-250', I_N249='-249', I_N248='-248', I_N247='-247', I_N246='-246', I_N245='-245', I_N244='-244', I_N243='-243', I_N242='-242', I_N241='-241', I_N240='-240', I_N239='-239', I_N238='-238', I_N237='-237', I_N236='-236', I_N235='-235', I_N234='-234', I_N233='-233', I_N232='-232', I_N231='-231', I_N230='-230', I_N229='-229', I_N228='-228', I_N227='-227', I_N226='-226', I_N225='-225', I_N224='-224', I_N223='-223', I_N222='-222', I_N221='-221', I_N220='-220', I_N219='-219', I_N218='-218', I_N217='-217', I_N216='-216', I_N215='-215', I_N214='-214', I_N213='-213', I_N212='-212', I_N211='-211', I_N210='-210', I_N209='-209', I_N208='-208', I_N207='-207', I_N206='-206', I_N205='-205', I_N204='-204', I_N203='-203', I_N202='-202', I_N201='-201', I_N200='-200', I_N199='-199', I_N198='-198', I_N197='-197', I_N196='-196', I_N195='-195', I_N194='-194', I_N193='-193', I_N192='-192', I_N191='-191', I_N190='-190', I_N189='-189', I_N188='-188', I_N187='-187', I_N186='-186', I_N185='-185', I_N184='-184', I_N183='-183', I_N182='-182', I_N181='-181', I_N180='-180', I_N179='-179', I_N178='-178', I_N177='-177', I_N176='-176', I_N175='-175', I_N174='-174', I_N173='-173', I_N172='-172', I_N171='-171', I_N170='-170', I_N169='-169', I_N168='-168', I_N167='-167', I_N166='-166', I_N165='-165', I_N164='-164', I_N163='-163', I_N162='-162', I_N161='-161', I_N160='-160', I_N159='-159', I_N158='-158', I_N157='-157', I_N156='-156', I_N155='-155', I_N154='-154', I_N153='-153', I_N152='-152', I_N151='-151', I_N150='-150', I_N149='-149', I_N148='-148', I_N147='-147', I_N146='-146', I_N145='-145', I_N144='-144', I_N143='-143', I_N142='-142', I_N141='-141', I_N140='-140', I_N139='-139', I_N138='-138', I_N137='-137', I_N136='-136', I_N135='-135', I_N134='-134', I_N133='-133', I_N132='-132', I_N131='-131', I_N130='-130', I_N129='-129', I_N128='-128', I_N127='-127', I_N126='-126', I_N125='-125', I_N124='-124', I_N123='-123', I_N122='-122', I_N121='-121', I_N120='-120', I_N119='-119', I_N118='-118', I_N117='-117', I_N116='-116', I_N115='-115', I_N114='-114', I_N113='-113', I_N112='-112', I_N111='-111', I_N110='-110', I_N109='-109', I_N108='-108', I_N107='-107', I_N106='-106', I_N105='-105', I_N104='-104', I_N103='-103', I_N102='-102', I_N101='-101', I_N100='-100', I_N099='-99', I_N098='-98', I_N097='-97', I_N096='-96', I_N095='-95', I_N094='-94', I_N093='-93', I_N092='-92', I_N091='-91', I_N090='-90', I_N089='-89', I_N088='-88', I_N087='-87', I_N086='-86', I_N085='-85', I_N084='-84', I_N083='-83', I_N082='-82', I_N081='-81', I_N080='-80', I_N079='-79', I_N078='-78', I_N077='-77', I_N076='-76', I_N075='-75', I_N074='-74', I_N073='-73', I_N072='-72', I_N071='-71', I_N070='-70', I_N069='-69', I_N068='-68', I_N067='-67', I_N066='-66', I_N065='-65', I_N064='-64', I_N063='-63', I_N062='-62', I_N061='-61', I_N060='-60', I_N059='-59', I_N058='-58', I_N057='-57', I_N056='-56', I_N055='-55', I_N054='-54', I_N053='-53', I_N052='-52', I_N051='-51', I_N050='-50', I_N049='-49', I_N048='-48', I_N047='-47', I_N046='-46', I_N045='-45', I_N044='-44', I_N043='-43', I_N042='-42', I_N041='-41', I_N040='-40', I_N039='-39', I_N038='-38', I_N037='-37', I_N036='-36', I_N035='-35', I_N034='-34', I_N033='-33', I_N032='-32', I_N031='-31', I_N030='-30', I_N029='-29', I_N028='-28', I_N027='-27', I_N026='-26', I_N025='-25', I_N024='-24', I_N023='-23', I_N022='-22', I_N021='-21', I_N020='-20', I_N019='-19', I_N018='-18', I_N017='-17', I_N016='-16', I_N015='-15', I_N014='-14', I_N013='-13', I_N012='-12', I_N011='-11', I_N010='-10', I_N009='-9', I_N008='-8', I_N007='-7', I_N006='-6', I_N005='-5', I_N004='-4', I_N003='-3', I_N002='-2', I_N001='-1', PATH_PRE='STEP', ADJLIST_PRE='ADJ_GROUP', ADJLIST_INTRA='&', ADJLIST_WALL='', RESERVE_708='', RESERVE_709='', RESERVE_710='', RESERVE_711='', RESERVE_712='', RESERVE_713='', RESERVE_714='', RESERVE_715='', RESERVE_716='', RESERVE_717='', RESERVE_718='', RESERVE_719='', RESERVE_720='', RESERVE_721='', RESERVE_722='', RESERVE_723='', RESERVE_724='', RESERVE_725='', RESERVE_726='', RESERVE_727='', RESERVE_728='', RESERVE_729='', RESERVE_730='', RESERVE_731='', RESERVE_732='', RESERVE_733='', RESERVE_734='', RESERVE_735='', RESERVE_736='', RESERVE_737='', RESERVE_738='', RESERVE_739='', RESERVE_740='', RESERVE_741='', RESERVE_742='', RESERVE_743='', RESERVE_744='', RESERVE_745='', RESERVE_746='', RESERVE_747='', RESERVE_748='', RESERVE_749='', RESERVE_750='', RESERVE_751='', RESERVE_752='', RESERVE_753='', RESERVE_754='', RESERVE_755='', RESERVE_756='', RESERVE_757='', RESERVE_758='', RESERVE_759='', RESERVE_760='', RESERVE_761='', RESERVE_762='', RESERVE_763='', RESERVE_764='', RESERVE_765='', RESERVE_766='', RESERVE_767='', RESERVE_768='', RESERVE_769='', RESERVE_770='', RESERVE_771='', RESERVE_772='', RESERVE_773='', RESERVE_774='', RESERVE_775='', RESERVE_776='', RESERVE_777='', RESERVE_778='', RESERVE_779='', RESERVE_780='', RESERVE_781='', RESERVE_782='', RESERVE_783='', RESERVE_784='', RESERVE_785='', RESERVE_786='', RESERVE_787='', RESERVE_788='', RESERVE_789='', RESERVE_790='', RESERVE_791='', RESERVE_792='', RESERVE_793='', RESERVE_794='', RESERVE_795='', RESERVE_796='', RESERVE_797='', RESERVE_798='', RESERVE_799='', RESERVE_800='', RESERVE_801='', RESERVE_802='', RESERVE_803='', RESERVE_804='', RESERVE_805='', RESERVE_806='', RESERVE_807='', RESERVE_808='', RESERVE_809='', RESERVE_810='', RESERVE_811='', RESERVE_812='', RESERVE_813='', RESERVE_814='', RESERVE_815='', RESERVE_816='', RESERVE_817='', RESERVE_818='', RESERVE_819='', RESERVE_820='', RESERVE_821='', RESERVE_822='', RESERVE_823='', RESERVE_824='', RESERVE_825='', RESERVE_826='', RESERVE_827='', RESERVE_828='', RESERVE_829='', RESERVE_830='', RESERVE_831='', RESERVE_832='', RESERVE_833='', RESERVE_834='', RESERVE_835='', RESERVE_836='', RESERVE_837='', RESERVE_838='', RESERVE_839='', RESERVE_840='', RESERVE_841='', RESERVE_842='', RESERVE_843='', RESERVE_844='', RESERVE_845='', RESERVE_846='', RESERVE_847='', RESERVE_848='', RESERVE_849='', RESERVE_850='', RESERVE_851='', RESERVE_852='', RESERVE_853='', RESERVE_854='', RESERVE_855='', RESERVE_856='', RESERVE_857='', RESERVE_858='', RESERVE_859='', RESERVE_860='', RESERVE_861='', RESERVE_862='', RESERVE_863='', RESERVE_864='', RESERVE_865='', RESERVE_866='', RESERVE_867='', RESERVE_868='', RESERVE_869='', RESERVE_870='', RESERVE_871='', RESERVE_872='', RESERVE_873='', RESERVE_874='', RESERVE_875='', RESERVE_876='', RESERVE_877='', RESERVE_878='', RESERVE_879='', RESERVE_880='', RESERVE_881='', RESERVE_882='', RESERVE_883='', RESERVE_884='', RESERVE_885='', RESERVE_886='', RESERVE_887='', RESERVE_888='', RESERVE_889='', RESERVE_890='', RESERVE_891='', RESERVE_892='', RESERVE_893='', RESERVE_894='', RESERVE_895='', RESERVE_896='', RESERVE_897='', RESERVE_898='', RESERVE_899='', RESERVE_900='', RESERVE_901='', RESERVE_902='', RESERVE_903='', RESERVE_904='', RESERVE_905='', RESERVE_906='', RESERVE_907='', RESERVE_908='', RESERVE_909='', RESERVE_910='', RESERVE_911='', RESERVE_912='', RESERVE_913='', RESERVE_914='', RESERVE_915='', RESERVE_916='', RESERVE_917='', RESERVE_918='', RESERVE_919='', RESERVE_920='', RESERVE_921='', RESERVE_922='', RESERVE_923='', RESERVE_924='', RESERVE_925='', RESERVE_926='', RESERVE_927='', RESERVE_928='', RESERVE_929='', RESERVE_930='', RESERVE_931='', RESERVE_932='', RESERVE_933='', RESERVE_934='', RESERVE_935='', RESERVE_936='', RESERVE_937='', RESERVE_938='', RESERVE_939='', RESERVE_940='', RESERVE_941='', RESERVE_942='', RESERVE_943='', RESERVE_944='', RESERVE_945='', RESERVE_946='', RESERVE_947='', RESERVE_948='', RESERVE_949='', RESERVE_950='', RESERVE_951='', RESERVE_952='', RESERVE_953='', RESERVE_954='', RESERVE_955='', RESERVE_956='', RESERVE_957='', RESERVE_958='', RESERVE_959='', RESERVE_960='', RESERVE_961='', RESERVE_962='', RESERVE_963='', RESERVE_964='', RESERVE_965='', RESERVE_966='', RESERVE_967='', RESERVE_968='', RESERVE_969='', RESERVE_970='', RESERVE_971='', RESERVE_972='', RESERVE_973='', RESERVE_974='', RESERVE_975='', RESERVE_976='', RESERVE_977='', RESERVE_978='', RESERVE_979='', RESERVE_980='', RESERVE_981='', RESERVE_982='', RESERVE_983='', RESERVE_984='', RESERVE_985='', RESERVE_986='', RESERVE_987='', RESERVE_988='', RESERVE_989='', RESERVE_990='', RESERVE_991='', RESERVE_992='', RESERVE_993='', RESERVE_994='', RESERVE_995='', RESERVE_996='', RESERVE_997='', RESERVE_998='', RESERVE_999='', RESERVE_1000='', RESERVE_1001='', RESERVE_1002='', RESERVE_1003='', RESERVE_1004='', RESERVE_1005='', RESERVE_1006='', RESERVE_1007='', RESERVE_1008='', RESERVE_1009='', RESERVE_1010='', RESERVE_1011='', RESERVE_1012='', RESERVE_1013='', RESERVE_1014='', RESERVE_1015='', RESERVE_1016='', RESERVE_1017='', RESERVE_1018='', RESERVE_1019='', RESERVE_1020='', RESERVE_1021='', RESERVE_1022='', RESERVE_1023='', RESERVE_1024='', RESERVE_1025='', RESERVE_1026='', RESERVE_1027='', RESERVE_1028='', RESERVE_1029='', RESERVE_1030='', RESERVE_1031='', RESERVE_1032='', RESERVE_1033='', RESERVE_1034='', RESERVE_1035='', RESERVE_1036='', RESERVE_1037='', RESERVE_1038='', RESERVE_1039='', RESERVE_1040='', RESERVE_1041='', RESERVE_1042='', RESERVE_1043='', RESERVE_1044='', RESERVE_1045='', RESERVE_1046='', RESERVE_1047='', RESERVE_1048='', RESERVE_1049='', RESERVE_1050='', RESERVE_1051='', RESERVE_1052='', RESERVE_1053='', RESERVE_1054='', RESERVE_1055='', RESERVE_1056='', RESERVE_1057='', RESERVE_1058='', RESERVE_1059='', RESERVE_1060='', RESERVE_1061='', RESERVE_1062='', RESERVE_1063='', RESERVE_1064='', RESERVE_1065='', RESERVE_1066='', RESERVE_1067='', RESERVE_1068='', RESERVE_1069='', RESERVE_1070='', RESERVE_1071='', RESERVE_1072='', RESERVE_1073='', RESERVE_1074='', RESERVE_1075='', RESERVE_1076='', RESERVE_1077='', RESERVE_1078='', RESERVE_1079='', RESERVE_1080='', RESERVE_1081='', RESERVE_1082='', RESERVE_1083='', RESERVE_1084='', RESERVE_1085='', RESERVE_1086='', RESERVE_1087='', RESERVE_1088='', RESERVE_1089='', RESERVE_1090='', RESERVE_1091='', RESERVE_1092='', RESERVE_1093='', RESERVE_1094='', RESERVE_1095='', RESERVE_1096='', RESERVE_1097='', RESERVE_1098='', RESERVE_1099='', RESERVE_1100='', RESERVE_1101='', RESERVE_1102='', RESERVE_1103='', RESERVE_1104='', RESERVE_1105='', RESERVE_1106='', RESERVE_1107='', RESERVE_1108='', RESERVE_1109='', RESERVE_1110='', RESERVE_1111='', RESERVE_1112='', RESERVE_1113='', RESERVE_1114='', RESERVE_1115='', RESERVE_1116='', RESERVE_1117='', RESERVE_1118='', RESERVE_1119='', RESERVE_1120='', RESERVE_1121='', RESERVE_1122='', RESERVE_1123='', RESERVE_1124='', RESERVE_1125='', RESERVE_1126='', RESERVE_1127='', RESERVE_1128='', RESERVE_1129='', RESERVE_1130='', RESERVE_1131='', RESERVE_1132='', RESERVE_1133='', RESERVE_1134='', RESERVE_1135='', RESERVE_1136='', RESERVE_1137='', RESERVE_1138='', RESERVE_1139='', RESERVE_1140='', RESERVE_1141='', RESERVE_1142='', RESERVE_1143='', RESERVE_1144='', RESERVE_1145='', RESERVE_1146='', RESERVE_1147='', RESERVE_1148='', RESERVE_1149='', RESERVE_1150='', RESERVE_1151='', RESERVE_1152='', RESERVE_1153='', RESERVE_1154='', RESERVE_1155='', RESERVE_1156='', RESERVE_1157='', RESERVE_1158='', RESERVE_1159='', RESERVE_1160='', RESERVE_1161='', RESERVE_1162='', RESERVE_1163='', RESERVE_1164='', RESERVE_1165='', RESERVE_1166='', RESERVE_1167='', RESERVE_1168='', RESERVE_1169='', RESERVE_1170='', RESERVE_1171='', RESERVE_1172='', RESERVE_1173='', RESERVE_1174='', RESERVE_1175='', RESERVE_1176='', RESERVE_1177='', RESERVE_1178='', RESERVE_1179='', RESERVE_1180='', RESERVE_1181='', RESERVE_1182='', RESERVE_1183='', RESERVE_1184='', RESERVE_1185='', RESERVE_1186='', RESERVE_1187='', RESERVE_1188='', RESERVE_1189='', RESERVE_1190='', RESERVE_1191='', RESERVE_1192='', RESERVE_1193='', RESERVE_1194='', RESERVE_1195='', RESERVE_1196='', RESERVE_1197='', RESERVE_1198='', RESERVE_1199='', RESERVE_1200='', RESERVE_1201='', RESERVE_1202='', RESERVE_1203='', RESERVE_1204='', RESERVE_1205='', RESERVE_1206='', RESERVE_1207='', RESERVE_1208='', RESERVE_1209='', RESERVE_1210='', RESERVE_1211='', RESERVE_1212='', RESERVE_1213='', RESERVE_1214='', RESERVE_1215='', RESERVE_1216='', RESERVE_1217='', RESERVE_1218='', RESERVE_1219='', RESERVE_1220='', RESERVE_1221='', RESERVE_1222='', RESERVE_1223='', RESERVE_1224='', RESERVE_1225='', RESERVE_1226='', RESERVE_1227='', RESERVE_1228='', RESERVE_1229='', RESERVE_1230='', RESERVE_1231='', RESERVE_1232='', RESERVE_1233='', RESERVE_1234='', RESERVE_1235='', RESERVE_1236='', RESERVE_1237='', RESERVE_1238='', RESERVE_1239='', RESERVE_1240='', RESERVE_1241='', RESERVE_1242='', RESERVE_1243='', RESERVE_1244='', RESERVE_1245='', RESERVE_1246='', RESERVE_1247='', RESERVE_1248='', RESERVE_1249='', RESERVE_1250='', RESERVE_1251='', RESERVE_1252='', RESERVE_1253='', RESERVE_1254='', RESERVE_1255='', RESERVE_1256='', RESERVE_1257='', RESERVE_1258='', RESERVE_1259='', RESERVE_1260='', RESERVE_1261='', RESERVE_1262='', RESERVE_1263='', RESERVE_1264='', RESERVE_1265='', RESERVE_1266='', RESERVE_1267='', RESERVE_1268='', RESERVE_1269='', RESERVE_1270='', RESERVE_1271='', RESERVE_1272='', RESERVE_1273='', RESERVE_1274='', RESERVE_1275='', RESERVE_1276='', RESERVE_1277='', RESERVE_1278='', RESERVE_1279='', RESERVE_1280='', RESERVE_1281='', RESERVE_1282='', RESERVE_1283='', RESERVE_1284='', RESERVE_1285='', RESERVE_1286='', RESERVE_1287='', RESERVE_1288='', RESERVE_1289='', RESERVE_1290='', RESERVE_1291='', RESERVE_1292='', RESERVE_1293='', RESERVE_1294='', RESERVE_1295='', RESERVE_1296='', RESERVE_1297='', RESERVE_1298='', RESERVE_1299='', RESERVE_1300='', RESERVE_1301='', RESERVE_1302='', RESERVE_1303='', RESERVE_1304='', RESERVE_1305='', RESERVE_1306='', RESERVE_1307='', RESERVE_1308='', RESERVE_1309='', RESERVE_1310='', RESERVE_1311='', RESERVE_1312='', RESERVE_1313='', RESERVE_1314='', RESERVE_1315='', RESERVE_1316='', RESERVE_1317='', RESERVE_1318='', RESERVE_1319='', RESERVE_1320='', RESERVE_1321='', RESERVE_1322='', RESERVE_1323='', RESERVE_1324='', RESERVE_1325='', RESERVE_1326='', RESERVE_1327='', RESERVE_1328='', RESERVE_1329='', RESERVE_1330='', RESERVE_1331='', RESERVE_1332='', RESERVE_1333='', RESERVE_1334='', RESERVE_1335='', RESERVE_1336='', RESERVE_1337='', RESERVE_1338='', RESERVE_1339='', RESERVE_1340='', RESERVE_1341='', RESERVE_1342='', RESERVE_1343='', RESERVE_1344='', RESERVE_1345='', RESERVE_1346='', RESERVE_1347='', RESERVE_1348='', RESERVE_1349='', RESERVE_1350='', RESERVE_1351='', RESERVE_1352='', RESERVE_1353='', RESERVE_1354='', RESERVE_1355='', RESERVE_1356='', RESERVE_1357='', RESERVE_1358='', RESERVE_1359='', RESERVE_1360='', RESERVE_1361='', RESERVE_1362='', RESERVE_1363='', RESERVE_1364='', RESERVE_1365='', RESERVE_1366='', RESERVE_1367='', RESERVE_1368='', RESERVE_1369='', RESERVE_1370='', RESERVE_1371='', RESERVE_1372='', RESERVE_1373='', RESERVE_1374='', RESERVE_1375='', RESERVE_1376='', RESERVE_1377='', RESERVE_1378='', RESERVE_1379='', RESERVE_1380='', RESERVE_1381='', RESERVE_1382='', RESERVE_1383='', RESERVE_1384='', RESERVE_1385='', RESERVE_1386='', RESERVE_1387='', RESERVE_1388='', RESERVE_1389='', RESERVE_1390='', RESERVE_1391='', RESERVE_1392='', RESERVE_1393='', RESERVE_1394='', RESERVE_1395='', RESERVE_1396='', RESERVE_1397='', RESERVE_1398='', RESERVE_1399='', RESERVE_1400='', RESERVE_1401='', RESERVE_1402='', RESERVE_1403='', RESERVE_1404='', RESERVE_1405='', RESERVE_1406='', RESERVE_1407='', RESERVE_1408='', RESERVE_1409='', RESERVE_1410='', RESERVE_1411='', RESERVE_1412='', RESERVE_1413='', RESERVE_1414='', RESERVE_1415='', RESERVE_1416='', RESERVE_1417='', RESERVE_1418='', RESERVE_1419='', RESERVE_1420='', RESERVE_1421='', RESERVE_1422='', RESERVE_1423='', RESERVE_1424='', RESERVE_1425='', RESERVE_1426='', RESERVE_1427='', RESERVE_1428='', RESERVE_1429='', RESERVE_1430='', RESERVE_1431='', RESERVE_1432='', RESERVE_1433='', RESERVE_1434='', RESERVE_1435='', RESERVE_1436='', RESERVE_1437='', RESERVE_1438='', RESERVE_1439='', RESERVE_1440='', RESERVE_1441='', RESERVE_1442='', RESERVE_1443='', RESERVE_1444='', RESERVE_1445='', RESERVE_1446='', RESERVE_1447='', RESERVE_1448='', RESERVE_1449='', RESERVE_1450='', RESERVE_1451='', RESERVE_1452='', RESERVE_1453='', RESERVE_1454='', RESERVE_1455='', RESERVE_1456='', RESERVE_1457='', RESERVE_1458='', RESERVE_1459='', RESERVE_1460='', RESERVE_1461='', RESERVE_1462='', RESERVE_1463='', RESERVE_1464='', RESERVE_1465='', RESERVE_1466='', RESERVE_1467='', RESERVE_1468='', RESERVE_1469='', RESERVE_1470='', RESERVE_1471='', RESERVE_1472='', RESERVE_1473='', RESERVE_1474='', RESERVE_1475='', RESERVE_1476='', RESERVE_1477='', RESERVE_1478='', RESERVE_1479='', RESERVE_1480='', RESERVE_1481='', RESERVE_1482='', RESERVE_1483='', RESERVE_1484='', RESERVE_1485='', RESERVE_1486='', RESERVE_1487='', RESERVE_1488='', RESERVE_1489='', RESERVE_1490='', RESERVE_1491='', RESERVE_1492='', RESERVE_1493='', RESERVE_1494='', RESERVE_1495='', RESERVE_1496='', RESERVE_1497='', RESERVE_1498='', RESERVE_1499='', RESERVE_1500='', RESERVE_1501='', RESERVE_1502='', RESERVE_1503='', RESERVE_1504='', RESERVE_1505='', RESERVE_1506='', RESERVE_1507='', RESERVE_1508='', RESERVE_1509='', RESERVE_1510='', RESERVE_1511='', RESERVE_1512='', RESERVE_1513='', RESERVE_1514='', RESERVE_1515='', RESERVE_1516='', RESERVE_1517='', RESERVE_1518='', RESERVE_1519='', RESERVE_1520='', RESERVE_1521='', RESERVE_1522='', RESERVE_1523='', RESERVE_1524='', RESERVE_1525='', RESERVE_1526='', RESERVE_1527='', RESERVE_1528='', RESERVE_1529='', RESERVE_1530='', RESERVE_1531='', RESERVE_1532='', RESERVE_1533='', RESERVE_1534='', RESERVE_1535='', RESERVE_1536='', RESERVE_1537='', RESERVE_1538='', RESERVE_1539='', RESERVE_1540='', RESERVE_1541='', RESERVE_1542='', RESERVE_1543='', RESERVE_1544='', RESERVE_1545='', RESERVE_1546='', RESERVE_1547='', RESERVE_1548='', RESERVE_1549='', RESERVE_1550='', RESERVE_1551='', RESERVE_1552='', RESERVE_1553='', RESERVE_1554='', RESERVE_1555='', RESERVE_1556='', RESERVE_1557='', RESERVE_1558='', RESERVE_1559='', RESERVE_1560='', RESERVE_1561='', RESERVE_1562='', RESERVE_1563='', RESERVE_1564='', RESERVE_1565='', RESERVE_1566='', RESERVE_1567='', RESERVE_1568='', RESERVE_1569='', RESERVE_1570='', RESERVE_1571='', RESERVE_1572='', RESERVE_1573='', RESERVE_1574='', RESERVE_1575='', RESERVE_1576='', RESERVE_1577='', RESERVE_1578='', RESERVE_1579='', RESERVE_1580='', RESERVE_1581='', RESERVE_1582='', RESERVE_1583='', RESERVE_1584='', RESERVE_1585='', RESERVE_1586='', RESERVE_1587='', RESERVE_1588='', RESERVE_1589='', RESERVE_1590='', RESERVE_1591='', RESERVE_1592='', RESERVE_1593='', RESERVE_1594='', RESERVE_1595='', UT_00_00='(0,0)', UT_00_01='(0,1)', UT_01_00='(1,0)', UT_01_01='(1,1)', UT_00_02='(0,2)', UT_02_00='(2,0)', UT_01_02='(1,2)', UT_02_01='(2,1)', UT_02_02='(2,2)', UT_00_03='(0,3)', UT_03_00='(3,0)', UT_03_01='(3,1)', UT_02_03='(2,3)', UT_03_02='(3,2)', UT_01_03='(1,3)', UT_03_03='(3,3)', UT_00_04='(0,4)', UT_02_04='(2,4)', UT_04_00='(4,0)', UT_01_04='(1,4)', UT_04_01='(4,1)', UT_04_02='(4,2)', UT_03_04='(3,4)', UT_04_03='(4,3)', UT_04_04='(4,4)', UT_00_05='(0,5)', UT_05_00='(5,0)', UT_05_01='(5,1)', UT_02_05='(2,5)', UT_05_02='(5,2)', UT_05_03='(5,3)', UT_04_05='(4,5)', UT_05_04='(5,4)', UT_01_05='(1,5)', UT_03_05='(3,5)', UT_05_05='(5,5)', UT_00_06='(0,6)', UT_02_06='(2,6)', UT_04_06='(4,6)', UT_06_00='(6,0)', UT_01_06='(1,6)', UT_06_01='(6,1)', UT_06_02='(6,2)', UT_03_06='(3,6)', UT_06_03='(6,3)', UT_06_04='(6,4)', UT_05_06='(5,6)', UT_06_05='(6,5)', UT_06_06='(6,6)', UT_00_07='(0,7)', UT_07_00='(7,0)', UT_07_01='(7,1)', UT_02_07='(2,7)', UT_07_02='(7,2)', UT_07_03='(7,3)', UT_04_07='(4,7)', UT_07_04='(7,4)', UT_07_05='(7,5)', UT_06_07='(6,7)', UT_07_06='(7,6)', UT_01_07='(1,7)', UT_03_07='(3,7)', UT_05_07='(5,7)', UT_07_07='(7,7)', UT_00_08='(0,8)', UT_02_08='(2,8)', UT_04_08='(4,8)', UT_06_08='(6,8)', UT_08_00='(8,0)', UT_01_08='(1,8)', UT_08_01='(8,1)', UT_08_02='(8,2)', UT_03_08='(3,8)', UT_08_03='(8,3)', UT_08_04='(8,4)', UT_05_08='(5,8)', UT_08_05='(8,5)', UT_08_06='(8,6)', UT_07_08='(7,8)', UT_08_07='(8,7)', UT_08_08='(8,8)', UT_00_09='(0,9)', UT_09_00='(9,0)', UT_09_01='(9,1)', UT_02_09='(2,9)', UT_09_02='(9,2)', UT_09_03='(9,3)', UT_04_09='(4,9)', UT_09_04='(9,4)', UT_09_05='(9,5)', UT_06_09='(6,9)', UT_09_06='(9,6)', UT_09_07='(9,7)', UT_08_09='(8,9)', UT_09_08='(9,8)', UT_01_09='(1,9)', UT_03_09='(3,9)', UT_05_09='(5,9)', UT_07_09='(7,9)', UT_09_09='(9,9)', UT_00_10='(0,10)', UT_02_10='(2,10)', UT_04_10='(4,10)', UT_06_10='(6,10)', UT_08_10='(8,10)', UT_10_00='(10,0)', UT_01_10='(1,10)', UT_10_01='(10,1)', UT_10_02='(10,2)', UT_03_10='(3,10)', UT_10_03='(10,3)', UT_10_04='(10,4)', UT_05_10='(5,10)', UT_10_05='(10,5)', UT_10_06='(10,6)', UT_07_10='(7,10)', UT_10_07='(10,7)', UT_10_08='(10,8)', UT_09_10='(9,10)', UT_10_09='(10,9)', UT_10_10='(10,10)', UT_00_11='(0,11)', UT_11_00='(11,0)', UT_11_01='(11,1)', UT_02_11='(2,11)', UT_11_02='(11,2)', UT_11_03='(11,3)', UT_04_11='(4,11)', UT_11_04='(11,4)', UT_11_05='(11,5)', UT_06_11='(6,11)', UT_11_06='(11,6)', UT_11_07='(11,7)', UT_08_11='(8,11)', UT_11_08='(11,8)', UT_11_09='(11,9)', UT_10_11='(10,11)', UT_11_10='(11,10)', UT_01_11='(1,11)', UT_03_11='(3,11)', UT_05_11='(5,11)', UT_07_11='(7,11)', UT_09_11='(9,11)', UT_11_11='(11,11)', UT_00_12='(0,12)', UT_02_12='(2,12)', UT_04_12='(4,12)', UT_06_12='(6,12)', UT_08_12='(8,12)', UT_10_12='(10,12)', UT_12_00='(12,0)', UT_01_12='(1,12)', UT_12_01='(12,1)', UT_12_02='(12,2)', UT_03_12='(3,12)', UT_12_03='(12,3)', UT_12_04='(12,4)', UT_05_12='(5,12)', UT_12_05='(12,5)', UT_12_06='(12,6)', UT_07_12='(7,12)', UT_12_07='(12,7)', UT_12_08='(12,8)', UT_09_12='(9,12)', UT_12_09='(12,9)', UT_12_10='(12,10)', UT_11_12='(11,12)', UT_12_11='(12,11)', UT_12_12='(12,12)', UT_00_13='(0,13)', UT_13_00='(13,0)', UT_13_01='(13,1)', UT_02_13='(2,13)', UT_13_02='(13,2)', UT_13_03='(13,3)', UT_04_13='(4,13)', UT_13_04='(13,4)', UT_13_05='(13,5)', UT_06_13='(6,13)', UT_13_06='(13,6)', UT_13_07='(13,7)', UT_08_13='(8,13)', UT_13_08='(13,8)', UT_13_09='(13,9)', UT_10_13='(10,13)', UT_13_10='(13,10)', UT_13_11='(13,11)', UT_12_13='(12,13)', UT_13_12='(13,12)', UT_01_13='(1,13)', UT_03_13='(3,13)', UT_05_13='(5,13)', UT_07_13='(7,13)', UT_09_13='(9,13)', UT_11_13='(11,13)', UT_13_13='(13,13)', UT_00_14='(0,14)', UT_02_14='(2,14)', UT_04_14='(4,14)', UT_06_14='(6,14)', UT_08_14='(8,14)', UT_10_14='(10,14)', UT_12_14='(12,14)', UT_14_00='(14,0)', UT_01_14='(1,14)', UT_14_01='(14,1)', UT_14_02='(14,2)', UT_03_14='(3,14)', UT_14_03='(14,3)', UT_14_04='(14,4)', UT_05_14='(5,14)', UT_14_05='(14,5)', UT_14_06='(14,6)', UT_07_14='(7,14)', UT_14_07='(14,7)', UT_14_08='(14,8)', UT_09_14='(9,14)', UT_14_09='(14,9)', UT_14_10='(14,10)', UT_11_14='(11,14)', UT_14_11='(14,11)', UT_14_12='(14,12)', UT_13_14='(13,14)', UT_14_13='(14,13)', UT_14_14='(14,14)', UT_00_15='(0,15)', UT_15_00='(15,0)', UT_15_01='(15,1)', UT_02_15='(2,15)', UT_15_02='(15,2)', UT_15_03='(15,3)', UT_04_15='(4,15)', UT_15_04='(15,4)', UT_15_05='(15,5)', UT_06_15='(6,15)', UT_15_06='(15,6)', UT_15_07='(15,7)', UT_08_15='(8,15)', UT_15_08='(15,8)', UT_15_09='(15,9)', UT_10_15='(10,15)', UT_15_10='(15,10)', UT_15_11='(15,11)', UT_12_15='(12,15)', UT_15_12='(15,12)', UT_15_13='(15,13)', UT_14_15='(14,15)', UT_15_14='(15,14)', UT_01_15='(1,15)', UT_03_15='(3,15)', UT_05_15='(5,15)', UT_07_15='(7,15)', UT_09_15='(9,15)', UT_11_15='(11,15)', UT_13_15='(13,15)', UT_15_15='(15,15)', UT_00_16='(0,16)', UT_02_16='(2,16)', UT_04_16='(4,16)', UT_06_16='(6,16)', UT_08_16='(8,16)', UT_10_16='(10,16)', UT_12_16='(12,16)', UT_14_16='(14,16)', UT_16_00='(16,0)', UT_01_16='(1,16)', UT_16_01='(16,1)', UT_16_02='(16,2)', UT_03_16='(3,16)', UT_16_03='(16,3)', UT_16_04='(16,4)', UT_05_16='(5,16)', UT_16_05='(16,5)', UT_16_06='(16,6)', UT_07_16='(7,16)', UT_16_07='(16,7)', UT_16_08='(16,8)', UT_09_16='(9,16)', UT_16_09='(16,9)', UT_16_10='(16,10)', UT_11_16='(11,16)', UT_16_11='(16,11)', UT_16_12='(16,12)', UT_13_16='(13,16)', UT_16_13='(16,13)', UT_16_14='(16,14)', UT_15_16='(15,16)', UT_16_15='(16,15)', UT_16_16='(16,16)', UT_00_17='(0,17)', UT_17_00='(17,0)', UT_17_01='(17,1)', UT_02_17='(2,17)', UT_17_02='(17,2)', UT_17_03='(17,3)', UT_04_17='(4,17)', UT_17_04='(17,4)', UT_17_05='(17,5)', UT_06_17='(6,17)', UT_17_06='(17,6)', UT_17_07='(17,7)', UT_08_17='(8,17)', UT_17_08='(17,8)', UT_17_09='(17,9)', UT_10_17='(10,17)', UT_17_10='(17,10)', UT_17_11='(17,11)', UT_12_17='(12,17)', UT_17_12='(17,12)', UT_17_13='(17,13)', UT_14_17='(14,17)', UT_17_14='(17,14)', UT_17_15='(17,15)', UT_16_17='(16,17)', UT_17_16='(17,16)', UT_01_17='(1,17)', UT_03_17='(3,17)', UT_05_17='(5,17)', UT_07_17='(7,17)', UT_09_17='(9,17)', UT_11_17='(11,17)', UT_13_17='(13,17)', UT_15_17='(15,17)', UT_17_17='(17,17)', UT_00_18='(0,18)', UT_02_18='(2,18)', UT_04_18='(4,18)', UT_06_18='(6,18)', UT_08_18='(8,18)', UT_10_18='(10,18)', UT_12_18='(12,18)', UT_14_18='(14,18)', UT_16_18='(16,18)', UT_18_00='(18,0)', UT_01_18='(1,18)', UT_18_01='(18,1)', UT_18_02='(18,2)', UT_03_18='(3,18)', UT_18_03='(18,3)', UT_18_04='(18,4)', UT_05_18='(5,18)', UT_18_05='(18,5)', UT_18_06='(18,6)', UT_07_18='(7,18)', UT_18_07='(18,7)', UT_18_08='(18,8)', UT_09_18='(9,18)', UT_18_09='(18,9)', UT_18_10='(18,10)', UT_11_18='(11,18)', UT_18_11='(18,11)', UT_18_12='(18,12)', UT_13_18='(13,18)', UT_18_13='(18,13)', UT_18_14='(18,14)', UT_15_18='(15,18)', UT_18_15='(18,15)', UT_18_16='(18,16)', UT_17_18='(17,18)', UT_18_17='(18,17)', UT_18_18='(18,18)', UT_00_19='(0,19)', UT_19_00='(19,0)', UT_19_01='(19,1)', UT_02_19='(2,19)', UT_19_02='(19,2)', UT_19_03='(19,3)', UT_04_19='(4,19)', UT_19_04='(19,4)', UT_19_05='(19,5)', UT_06_19='(6,19)', UT_19_06='(19,6)', UT_19_07='(19,7)', UT_08_19='(8,19)', UT_19_08='(19,8)', UT_19_09='(19,9)', UT_10_19='(10,19)', UT_19_10='(19,10)', UT_19_11='(19,11)', UT_12_19='(12,19)', UT_19_12='(19,12)', UT_19_13='(19,13)', UT_14_19='(14,19)', UT_19_14='(19,14)', UT_19_15='(19,15)', UT_16_19='(16,19)', UT_19_16='(19,16)', UT_19_17='(19,17)', UT_18_19='(18,19)', UT_19_18='(19,18)', UT_01_19='(1,19)', UT_03_19='(3,19)', UT_05_19='(5,19)', UT_07_19='(7,19)', UT_09_19='(9,19)', UT_11_19='(11,19)', UT_13_19='(13,19)', UT_15_19='(15,19)', UT_17_19='(17,19)', UT_19_19='(19,19)', UT_00_20='(0,20)', UT_02_20='(2,20)', UT_04_20='(4,20)', UT_06_20='(6,20)', UT_08_20='(8,20)', UT_10_20='(10,20)', UT_12_20='(12,20)', UT_14_20='(14,20)', UT_16_20='(16,20)', UT_18_20='(18,20)', UT_20_00='(20,0)', UT_01_20='(1,20)', UT_20_01='(20,1)', UT_20_02='(20,2)', UT_03_20='(3,20)', UT_20_03='(20,3)', UT_20_04='(20,4)', UT_05_20='(5,20)', UT_20_05='(20,5)', UT_20_06='(20,6)', UT_07_20='(7,20)', UT_20_07='(20,7)', UT_20_08='(20,8)', UT_09_20='(9,20)', UT_20_09='(20,9)', UT_20_10='(20,10)', UT_11_20='(11,20)', UT_20_11='(20,11)', UT_20_12='(20,12)', UT_13_20='(13,20)', UT_20_13='(20,13)', UT_20_14='(20,14)', UT_15_20='(15,20)', UT_20_15='(20,15)', UT_20_16='(20,16)', UT_17_20='(17,20)', UT_20_17='(20,17)', UT_20_18='(20,18)', UT_19_20='(19,20)', UT_20_19='(20,19)', UT_20_20='(20,20)', UT_00_21='(0,21)', UT_21_00='(21,0)', UT_21_01='(21,1)', UT_02_21='(2,21)', UT_21_02='(21,2)', UT_21_03='(21,3)', UT_04_21='(4,21)', UT_21_04='(21,4)', UT_21_05='(21,5)', UT_06_21='(6,21)', UT_21_06='(21,6)', UT_21_07='(21,7)', UT_08_21='(8,21)', UT_21_08='(21,8)', UT_21_09='(21,9)', UT_10_21='(10,21)', UT_21_10='(21,10)', UT_21_11='(21,11)', UT_12_21='(12,21)', UT_21_12='(21,12)', UT_21_13='(21,13)', UT_14_21='(14,21)', UT_21_14='(21,14)', UT_21_15='(21,15)', UT_16_21='(16,21)', UT_21_16='(21,16)', UT_21_17='(21,17)', UT_18_21='(18,21)', UT_21_18='(21,18)', UT_21_19='(21,19)', UT_20_21='(20,21)', UT_21_20='(21,20)', UT_01_21='(1,21)', UT_03_21='(3,21)', UT_05_21='(5,21)', UT_07_21='(7,21)', UT_09_21='(9,21)', UT_11_21='(11,21)', UT_13_21='(13,21)', UT_15_21='(15,21)', UT_17_21='(17,21)', UT_19_21='(19,21)', UT_21_21='(21,21)', UT_00_22='(0,22)', UT_02_22='(2,22)', UT_04_22='(4,22)', UT_06_22='(6,22)', UT_08_22='(8,22)', UT_10_22='(10,22)', UT_12_22='(12,22)', UT_14_22='(14,22)', UT_16_22='(16,22)', UT_18_22='(18,22)', UT_20_22='(20,22)', UT_22_00='(22,0)', UT_01_22='(1,22)', UT_22_01='(22,1)', UT_22_02='(22,2)', UT_03_22='(3,22)', UT_22_03='(22,3)', UT_22_04='(22,4)', UT_05_22='(5,22)', UT_22_05='(22,5)', UT_22_06='(22,6)', UT_07_22='(7,22)', UT_22_07='(22,7)', UT_22_08='(22,8)', UT_09_22='(9,22)', UT_22_09='(22,9)', UT_22_10='(22,10)', UT_11_22='(11,22)', UT_22_11='(22,11)', UT_22_12='(22,12)', UT_13_22='(13,22)', UT_22_13='(22,13)', UT_22_14='(22,14)', UT_15_22='(15,22)', UT_22_15='(22,15)', UT_22_16='(22,16)', UT_17_22='(17,22)', UT_22_17='(22,17)', UT_22_18='(22,18)', UT_19_22='(19,22)', UT_22_19='(22,19)', UT_22_20='(22,20)', UT_21_22='(21,22)', UT_22_21='(22,21)', UT_22_22='(22,22)', UT_00_23='(0,23)', UT_23_00='(23,0)', UT_23_01='(23,1)', UT_02_23='(2,23)', UT_23_02='(23,2)', UT_23_03='(23,3)', UT_04_23='(4,23)', UT_23_04='(23,4)', UT_23_05='(23,5)', UT_06_23='(6,23)', UT_23_06='(23,6)', UT_23_07='(23,7)', UT_08_23='(8,23)', UT_23_08='(23,8)', UT_23_09='(23,9)', UT_10_23='(10,23)', UT_23_10='(23,10)', UT_23_11='(23,11)', UT_12_23='(12,23)', UT_23_12='(23,12)', UT_23_13='(23,13)', UT_14_23='(14,23)', UT_23_14='(23,14)', UT_23_15='(23,15)', UT_16_23='(16,23)', UT_23_16='(23,16)', UT_23_17='(23,17)', UT_18_23='(18,23)', UT_23_18='(23,18)', UT_23_19='(23,19)', UT_20_23='(20,23)', UT_23_20='(23,20)', UT_23_21='(23,21)', UT_22_23='(22,23)', UT_23_22='(23,22)', UT_01_23='(1,23)', UT_03_23='(3,23)', UT_05_23='(5,23)', UT_07_23='(7,23)', UT_09_23='(9,23)', UT_11_23='(11,23)', UT_13_23='(13,23)', UT_15_23='(15,23)', UT_17_23='(17,23)', UT_19_23='(19,23)', UT_21_23='(21,23)', UT_23_23='(23,23)', UT_00_24='(0,24)', UT_02_24='(2,24)', UT_04_24='(4,24)', UT_06_24='(6,24)', UT_08_24='(8,24)', UT_10_24='(10,24)', UT_12_24='(12,24)', UT_14_24='(14,24)', UT_16_24='(16,24)', UT_18_24='(18,24)', UT_20_24='(20,24)', UT_22_24='(22,24)', UT_24_00='(24,0)', UT_01_24='(1,24)', UT_24_01='(24,1)', UT_24_02='(24,2)', UT_03_24='(3,24)', UT_24_03='(24,3)', UT_24_04='(24,4)', UT_05_24='(5,24)', UT_24_05='(24,5)', UT_24_06='(24,6)', UT_07_24='(7,24)', UT_24_07='(24,7)', UT_24_08='(24,8)', UT_09_24='(9,24)', UT_24_09='(24,9)', UT_24_10='(24,10)', UT_11_24='(11,24)', UT_24_11='(24,11)', UT_24_12='(24,12)', UT_13_24='(13,24)', UT_24_13='(24,13)', UT_24_14='(24,14)', UT_15_24='(15,24)', UT_24_15='(24,15)', UT_24_16='(24,16)', UT_17_24='(17,24)', UT_24_17='(24,17)', UT_24_18='(24,18)', UT_19_24='(19,24)', UT_24_19='(24,19)', UT_24_20='(24,20)', UT_21_24='(21,24)', UT_24_21='(24,21)', UT_24_22='(24,22)', UT_23_24='(23,24)', UT_24_23='(24,23)', UT_24_24='(24,24)', UT_00_25='(0,25)', UT_25_00='(25,0)', UT_25_01='(25,1)', UT_02_25='(2,25)', UT_25_02='(25,2)', UT_25_03='(25,3)', UT_04_25='(4,25)', UT_25_04='(25,4)', UT_25_05='(25,5)', UT_06_25='(6,25)', UT_25_06='(25,6)', UT_25_07='(25,7)', UT_08_25='(8,25)', UT_25_08='(25,8)', UT_25_09='(25,9)', UT_10_25='(10,25)', UT_25_10='(25,10)', UT_25_11='(25,11)', UT_12_25='(12,25)', UT_25_12='(25,12)', UT_25_13='(25,13)', UT_14_25='(14,25)', UT_25_14='(25,14)', UT_25_15='(25,15)', UT_16_25='(16,25)', UT_25_16='(25,16)', UT_25_17='(25,17)', UT_18_25='(18,25)', UT_25_18='(25,18)', UT_25_19='(25,19)', UT_20_25='(20,25)', UT_25_20='(25,20)', UT_25_21='(25,21)', UT_22_25='(22,25)', UT_25_22='(25,22)', UT_25_23='(25,23)', UT_24_25='(24,25)', UT_25_24='(25,24)', UT_01_25='(1,25)', UT_03_25='(3,25)', UT_05_25='(5,25)', UT_07_25='(7,25)', UT_09_25='(9,25)', UT_11_25='(11,25)', UT_13_25='(13,25)', UT_15_25='(15,25)', UT_17_25='(17,25)', UT_19_25='(19,25)', UT_21_25='(21,25)', UT_23_25='(23,25)', UT_25_25='(25,25)', UT_00_26='(0,26)', UT_02_26='(2,26)', UT_04_26='(4,26)', UT_06_26='(6,26)', UT_08_26='(8,26)', UT_10_26='(10,26)', UT_12_26='(12,26)', UT_14_26='(14,26)', UT_16_26='(16,26)', UT_18_26='(18,26)', UT_20_26='(20,26)', UT_22_26='(22,26)', UT_24_26='(24,26)', UT_26_00='(26,0)', UT_01_26='(1,26)', UT_26_01='(26,1)', UT_26_02='(26,2)', UT_03_26='(3,26)', UT_26_03='(26,3)', UT_26_04='(26,4)', UT_05_26='(5,26)', UT_26_05='(26,5)', UT_26_06='(26,6)', UT_07_26='(7,26)', UT_26_07='(26,7)', UT_26_08='(26,8)', UT_09_26='(9,26)', UT_26_09='(26,9)', UT_26_10='(26,10)', UT_11_26='(11,26)', UT_26_11='(26,11)', UT_26_12='(26,12)', UT_13_26='(13,26)', UT_26_13='(26,13)', UT_26_14='(26,14)', UT_15_26='(15,26)', UT_26_15='(26,15)', UT_26_16='(26,16)', UT_17_26='(17,26)', UT_26_17='(26,17)', UT_26_18='(26,18)', UT_19_26='(19,26)', UT_26_19='(26,19)', UT_26_20='(26,20)', UT_21_26='(21,26)', UT_26_21='(26,21)', UT_26_22='(26,22)', UT_23_26='(23,26)', UT_26_23='(26,23)', UT_26_24='(26,24)', UT_25_26='(25,26)', UT_26_25='(26,25)', UT_26_26='(26,26)', UT_00_27='(0,27)', UT_27_00='(27,0)', UT_27_01='(27,1)', UT_02_27='(2,27)', UT_27_02='(27,2)', UT_27_03='(27,3)', UT_04_27='(4,27)', UT_27_04='(27,4)', UT_27_05='(27,5)', UT_06_27='(6,27)', UT_27_06='(27,6)', UT_27_07='(27,7)', UT_08_27='(8,27)', UT_27_08='(27,8)', UT_27_09='(27,9)', UT_10_27='(10,27)', UT_27_10='(27,10)', UT_27_11='(27,11)', UT_12_27='(12,27)', UT_27_12='(27,12)', UT_27_13='(27,13)', UT_14_27='(14,27)', UT_27_14='(27,14)', UT_27_15='(27,15)', UT_16_27='(16,27)', UT_27_16='(27,16)', UT_27_17='(27,17)', UT_18_27='(18,27)', UT_27_18='(27,18)', UT_27_19='(27,19)', UT_20_27='(20,27)', UT_27_20='(27,20)', UT_27_21='(27,21)', UT_22_27='(22,27)', UT_27_22='(27,22)', UT_27_23='(27,23)', UT_24_27='(24,27)', UT_27_24='(27,24)', UT_27_25='(27,25)', UT_26_27='(26,27)', UT_27_26='(27,26)', UT_01_27='(1,27)', UT_03_27='(3,27)', UT_05_27='(5,27)', UT_07_27='(7,27)', UT_09_27='(9,27)', UT_11_27='(11,27)', UT_13_27='(13,27)', UT_15_27='(15,27)', UT_17_27='(17,27)', UT_19_27='(19,27)', UT_21_27='(21,27)', UT_23_27='(23,27)', UT_25_27='(25,27)', UT_27_27='(27,27)', UT_00_28='(0,28)', UT_02_28='(2,28)', UT_04_28='(4,28)', UT_06_28='(6,28)', UT_08_28='(8,28)', UT_10_28='(10,28)', UT_12_28='(12,28)', UT_14_28='(14,28)', UT_16_28='(16,28)', UT_18_28='(18,28)', UT_20_28='(20,28)', UT_22_28='(22,28)', UT_24_28='(24,28)', UT_26_28='(26,28)', UT_28_00='(28,0)', UT_01_28='(1,28)', UT_28_01='(28,1)', UT_28_02='(28,2)', UT_03_28='(3,28)', UT_28_03='(28,3)', UT_28_04='(28,4)', UT_05_28='(5,28)', UT_28_05='(28,5)', UT_28_06='(28,6)', UT_07_28='(7,28)', UT_28_07='(28,7)', UT_28_08='(28,8)', UT_09_28='(9,28)', UT_28_09='(28,9)', UT_28_10='(28,10)', UT_11_28='(11,28)', UT_28_11='(28,11)', UT_28_12='(28,12)', UT_13_28='(13,28)', UT_28_13='(28,13)', UT_28_14='(28,14)', UT_15_28='(15,28)', UT_28_15='(28,15)', UT_28_16='(28,16)', UT_17_28='(17,28)', UT_28_17='(28,17)', UT_28_18='(28,18)', UT_19_28='(19,28)', UT_28_19='(28,19)', UT_28_20='(28,20)', UT_21_28='(21,28)', UT_28_21='(28,21)', UT_28_22='(28,22)', UT_23_28='(23,28)', UT_28_23='(28,23)', UT_28_24='(28,24)', UT_25_28='(25,28)', UT_28_25='(28,25)', UT_28_26='(28,26)', UT_27_28='(27,28)', UT_28_27='(28,27)', UT_28_28='(28,28)', UT_00_29='(0,29)', UT_29_00='(29,0)', UT_29_01='(29,1)', UT_02_29='(2,29)', UT_29_02='(29,2)', UT_29_03='(29,3)', UT_04_29='(4,29)', UT_29_04='(29,4)', UT_29_05='(29,5)', UT_06_29='(6,29)', UT_29_06='(29,6)', UT_29_07='(29,7)', UT_08_29='(8,29)', UT_29_08='(29,8)', UT_29_09='(29,9)', UT_10_29='(10,29)', UT_29_10='(29,10)', UT_29_11='(29,11)', UT_12_29='(12,29)', UT_29_12='(29,12)', UT_29_13='(29,13)', UT_14_29='(14,29)', UT_29_14='(29,14)', UT_29_15='(29,15)', UT_16_29='(16,29)', UT_29_16='(29,16)', UT_29_17='(29,17)', UT_18_29='(18,29)', UT_29_18='(29,18)', UT_29_19='(29,19)', UT_20_29='(20,29)', UT_29_20='(29,20)', UT_29_21='(29,21)', UT_22_29='(22,29)', UT_29_22='(29,22)', UT_29_23='(29,23)', UT_24_29='(24,29)', UT_29_24='(29,24)', UT_29_25='(29,25)', UT_26_29='(26,29)', UT_29_26='(29,26)', UT_29_27='(29,27)', UT_28_29='(28,29)', UT_29_28='(29,28)', UT_01_29='(1,29)', UT_03_29='(3,29)', UT_05_29='(5,29)', UT_07_29='(7,29)', UT_09_29='(9,29)', UT_11_29='(11,29)', UT_13_29='(13,29)', UT_15_29='(15,29)', UT_17_29='(17,29)', UT_19_29='(19,29)', UT_21_29='(21,29)', UT_23_29='(23,29)', UT_25_29='(25,29)', UT_27_29='(27,29)', UT_29_29='(29,29)', UT_00_30='(0,30)', UT_02_30='(2,30)', UT_04_30='(4,30)', UT_06_30='(6,30)', UT_08_30='(8,30)', UT_10_30='(10,30)', UT_12_30='(12,30)', UT_14_30='(14,30)', UT_16_30='(16,30)', UT_18_30='(18,30)', UT_20_30='(20,30)', UT_22_30='(22,30)', UT_24_30='(24,30)', UT_26_30='(26,30)', UT_28_30='(28,30)', UT_30_00='(30,0)', UT_01_30='(1,30)', UT_30_01='(30,1)', UT_30_02='(30,2)', UT_03_30='(3,30)', UT_30_03='(30,3)', UT_30_04='(30,4)', UT_05_30='(5,30)', UT_30_05='(30,5)', UT_30_06='(30,6)', UT_07_30='(7,30)', UT_30_07='(30,7)', UT_30_08='(30,8)', UT_09_30='(9,30)', UT_30_09='(30,9)', UT_30_10='(30,10)', UT_11_30='(11,30)', UT_30_11='(30,11)', UT_30_12='(30,12)', UT_13_30='(13,30)', UT_30_13='(30,13)', UT_30_14='(30,14)', UT_15_30='(15,30)', UT_30_15='(30,15)', UT_30_16='(30,16)', UT_17_30='(17,30)', UT_30_17='(30,17)', UT_30_18='(30,18)', UT_19_30='(19,30)', UT_30_19='(30,19)', UT_30_20='(30,20)', UT_21_30='(21,30)', UT_30_21='(30,21)', UT_30_22='(30,22)', UT_23_30='(23,30)', UT_30_23='(30,23)', UT_30_24='(30,24)', UT_25_30='(25,30)', UT_30_25='(30,25)', UT_30_26='(30,26)', UT_27_30='(27,30)', UT_30_27='(30,27)', UT_30_28='(30,28)', UT_29_30='(29,30)', UT_30_29='(30,29)', UT_30_30='(30,30)', UT_00_31='(0,31)', UT_31_00='(31,0)', UT_31_01='(31,1)', UT_02_31='(2,31)', UT_31_02='(31,2)', UT_31_03='(31,3)', UT_04_31='(4,31)', UT_31_04='(31,4)', UT_31_05='(31,5)', UT_06_31='(6,31)', UT_31_06='(31,6)', UT_31_07='(31,7)', UT_08_31='(8,31)', UT_31_08='(31,8)', UT_31_09='(31,9)', UT_10_31='(10,31)', UT_31_10='(31,10)', UT_31_11='(31,11)', UT_12_31='(12,31)', UT_31_12='(31,12)', UT_31_13='(31,13)', UT_14_31='(14,31)', UT_31_14='(31,14)', UT_31_15='(31,15)', UT_16_31='(16,31)', UT_31_16='(31,16)', UT_31_17='(31,17)', UT_18_31='(18,31)', UT_31_18='(31,18)', UT_31_19='(31,19)', UT_20_31='(20,31)', UT_31_20='(31,20)', UT_31_21='(31,21)', UT_22_31='(22,31)', UT_31_22='(31,22)', UT_31_23='(31,23)', UT_24_31='(24,31)', UT_31_24='(31,24)', UT_31_25='(31,25)', UT_26_31='(26,31)', UT_31_26='(31,26)', UT_31_27='(31,27)', UT_28_31='(28,31)', UT_31_28='(31,28)', UT_31_29='(31,29)', UT_30_31='(30,31)', UT_31_30='(31,30)', UT_01_31='(1,31)', UT_03_31='(3,31)', UT_05_31='(5,31)', UT_07_31='(7,31)', UT_09_31='(9,31)', UT_11_31='(11,31)', UT_13_31='(13,31)', UT_15_31='(15,31)', UT_17_31='(17,31)', UT_19_31='(19,31)', UT_21_31='(21,31)', UT_23_31='(23,31)', UT_25_31='(25,31)', UT_27_31='(27,31)', UT_29_31='(29,31)', UT_31_31='(31,31)', UT_00_32='(0,32)', UT_02_32='(2,32)', UT_04_32='(4,32)', UT_06_32='(6,32)', UT_08_32='(8,32)', UT_10_32='(10,32)', UT_12_32='(12,32)', UT_14_32='(14,32)', UT_16_32='(16,32)', UT_18_32='(18,32)', UT_20_32='(20,32)', UT_22_32='(22,32)', UT_24_32='(24,32)', UT_26_32='(26,32)', UT_28_32='(28,32)', UT_30_32='(30,32)', UT_32_00='(32,0)', UT_01_32='(1,32)', UT_32_01='(32,1)', UT_32_02='(32,2)', UT_03_32='(3,32)', UT_32_03='(32,3)', UT_32_04='(32,4)', UT_05_32='(5,32)', UT_32_05='(32,5)', UT_32_06='(32,6)', UT_07_32='(7,32)', UT_32_07='(32,7)', UT_32_08='(32,8)', UT_09_32='(9,32)', UT_32_09='(32,9)', UT_32_10='(32,10)', UT_11_32='(11,32)', UT_32_11='(32,11)', UT_32_12='(32,12)', UT_13_32='(13,32)', UT_32_13='(32,13)', UT_32_14='(32,14)', UT_15_32='(15,32)', UT_32_15='(32,15)', UT_32_16='(32,16)', UT_17_32='(17,32)', UT_32_17='(32,17)', UT_32_18='(32,18)', UT_19_32='(19,32)', UT_32_19='(32,19)', UT_32_20='(32,20)', UT_21_32='(21,32)', UT_32_21='(32,21)', UT_32_22='(32,22)', UT_23_32='(23,32)', UT_32_23='(32,23)', UT_32_24='(32,24)', UT_25_32='(25,32)', UT_32_25='(32,25)', UT_32_26='(32,26)', UT_27_32='(27,32)', UT_32_27='(32,27)', UT_32_28='(32,28)', UT_29_32='(29,32)', UT_32_29='(32,29)', UT_32_30='(32,30)', UT_31_32='(31,32)', UT_32_31='(32,31)', UT_32_32='(32,32)', UT_00_33='(0,33)', UT_33_00='(33,0)', UT_33_01='(33,1)', UT_02_33='(2,33)', UT_33_02='(33,2)', UT_33_03='(33,3)', UT_04_33='(4,33)', UT_33_04='(33,4)', UT_33_05='(33,5)', UT_06_33='(6,33)', UT_33_06='(33,6)', UT_33_07='(33,7)', UT_08_33='(8,33)', UT_33_08='(33,8)', UT_33_09='(33,9)', UT_10_33='(10,33)', UT_33_10='(33,10)', UT_33_11='(33,11)', UT_12_33='(12,33)', UT_33_12='(33,12)', UT_33_13='(33,13)', UT_14_33='(14,33)', UT_33_14='(33,14)', UT_33_15='(33,15)', UT_16_33='(16,33)', UT_33_16='(33,16)', UT_33_17='(33,17)', UT_18_33='(18,33)', UT_33_18='(33,18)', UT_33_19='(33,19)', UT_20_33='(20,33)', UT_33_20='(33,20)', UT_33_21='(33,21)', UT_22_33='(22,33)', UT_33_22='(33,22)', UT_33_23='(33,23)', UT_24_33='(24,33)', UT_33_24='(33,24)', UT_33_25='(33,25)', UT_26_33='(26,33)', UT_33_26='(33,26)', UT_33_27='(33,27)', UT_28_33='(28,33)', UT_33_28='(33,28)', UT_33_29='(33,29)', UT_30_33='(30,33)', UT_33_30='(33,30)', UT_33_31='(33,31)', UT_32_33='(32,33)', UT_33_32='(33,32)', UT_01_33='(1,33)', UT_03_33='(3,33)', UT_05_33='(5,33)', UT_07_33='(7,33)', UT_09_33='(9,33)', UT_11_33='(11,33)', UT_13_33='(13,33)', UT_15_33='(15,33)', UT_17_33='(17,33)', UT_19_33='(19,33)', UT_21_33='(21,33)', UT_23_33='(23,33)', UT_25_33='(25,33)', UT_27_33='(27,33)', UT_29_33='(29,33)', UT_31_33='(31,33)', UT_33_33='(33,33)', UT_00_34='(0,34)', UT_02_34='(2,34)', UT_04_34='(4,34)', UT_06_34='(6,34)', UT_08_34='(8,34)', UT_10_34='(10,34)', UT_12_34='(12,34)', UT_14_34='(14,34)', UT_16_34='(16,34)', UT_18_34='(18,34)', UT_20_34='(20,34)', UT_22_34='(22,34)', UT_24_34='(24,34)', UT_26_34='(26,34)', UT_28_34='(28,34)', UT_30_34='(30,34)', UT_32_34='(32,34)', UT_34_00='(34,0)', UT_01_34='(1,34)', UT_34_01='(34,1)', UT_34_02='(34,2)', UT_03_34='(3,34)', UT_34_03='(34,3)', UT_34_04='(34,4)', UT_05_34='(5,34)', UT_34_05='(34,5)', UT_34_06='(34,6)', UT_07_34='(7,34)', UT_34_07='(34,7)', UT_34_08='(34,8)', UT_09_34='(9,34)', UT_34_09='(34,9)', UT_34_10='(34,10)', UT_11_34='(11,34)', UT_34_11='(34,11)', UT_34_12='(34,12)', UT_13_34='(13,34)', UT_34_13='(34,13)', UT_34_14='(34,14)', UT_15_34='(15,34)', UT_34_15='(34,15)', UT_34_16='(34,16)', UT_17_34='(17,34)', UT_34_17='(34,17)', UT_34_18='(34,18)', UT_19_34='(19,34)', UT_34_19='(34,19)', UT_34_20='(34,20)', UT_21_34='(21,34)', UT_34_21='(34,21)', UT_34_22='(34,22)', UT_23_34='(23,34)', UT_34_23='(34,23)', UT_34_24='(34,24)', UT_25_34='(25,34)', UT_34_25='(34,25)', UT_34_26='(34,26)', UT_27_34='(27,34)', UT_34_27='(34,27)', UT_34_28='(34,28)', UT_29_34='(29,34)', UT_34_29='(34,29)', UT_34_30='(34,30)', UT_31_34='(31,34)', UT_34_31='(34,31)', UT_34_32='(34,32)', UT_33_34='(33,34)', UT_34_33='(34,33)', UT_34_34='(34,34)', UT_00_35='(0,35)', UT_35_00='(35,0)', UT_35_01='(35,1)', UT_02_35='(2,35)', UT_35_02='(35,2)', UT_35_03='(35,3)', UT_04_35='(4,35)', UT_35_04='(35,4)', UT_35_05='(35,5)', UT_06_35='(6,35)', UT_35_06='(35,6)', UT_35_07='(35,7)', UT_08_35='(8,35)', UT_35_08='(35,8)', UT_35_09='(35,9)', UT_10_35='(10,35)', UT_35_10='(35,10)', UT_35_11='(35,11)', UT_12_35='(12,35)', UT_35_12='(35,12)', UT_35_13='(35,13)', UT_14_35='(14,35)', UT_35_14='(35,14)', UT_35_15='(35,15)', UT_16_35='(16,35)', UT_35_16='(35,16)', UT_35_17='(35,17)', UT_18_35='(18,35)', UT_35_18='(35,18)', UT_35_19='(35,19)', UT_20_35='(20,35)', UT_35_20='(35,20)', UT_35_21='(35,21)', UT_22_35='(22,35)', UT_35_22='(35,22)', UT_35_23='(35,23)', UT_24_35='(24,35)', UT_35_24='(35,24)', UT_35_25='(35,25)', UT_26_35='(26,35)', UT_35_26='(35,26)', UT_35_27='(35,27)', UT_28_35='(28,35)', UT_35_28='(35,28)', UT_35_29='(35,29)', UT_30_35='(30,35)', UT_35_30='(35,30)', UT_35_31='(35,31)', UT_32_35='(32,35)', UT_35_32='(35,32)', UT_35_33='(35,33)', UT_34_35='(34,35)', UT_35_34='(35,34)', UT_01_35='(1,35)', UT_03_35='(3,35)', UT_05_35='(5,35)', UT_07_35='(7,35)', UT_09_35='(9,35)', UT_11_35='(11,35)', UT_13_35='(13,35)', UT_15_35='(15,35)', UT_17_35='(17,35)', UT_19_35='(19,35)', UT_21_35='(21,35)', UT_23_35='(23,35)', UT_25_35='(25,35)', UT_27_35='(27,35)', UT_29_35='(29,35)', UT_31_35='(31,35)', UT_33_35='(33,35)', UT_35_35='(35,35)', UT_00_36='(0,36)', UT_02_36='(2,36)', UT_04_36='(4,36)', UT_06_36='(6,36)', UT_08_36='(8,36)', UT_10_36='(10,36)', UT_12_36='(12,36)', UT_14_36='(14,36)', UT_16_36='(16,36)', UT_18_36='(18,36)', UT_20_36='(20,36)', UT_22_36='(22,36)', UT_24_36='(24,36)', UT_26_36='(26,36)', UT_28_36='(28,36)', UT_30_36='(30,36)', UT_32_36='(32,36)', UT_34_36='(34,36)', UT_36_00='(36,0)', UT_01_36='(1,36)', UT_36_01='(36,1)', UT_36_02='(36,2)', UT_03_36='(3,36)', UT_36_03='(36,3)', UT_36_04='(36,4)', UT_05_36='(5,36)', UT_36_05='(36,5)', UT_36_06='(36,6)', UT_07_36='(7,36)', UT_36_07='(36,7)', UT_36_08='(36,8)', UT_09_36='(9,36)', UT_36_09='(36,9)', UT_36_10='(36,10)', UT_11_36='(11,36)', UT_36_11='(36,11)', UT_36_12='(36,12)', UT_13_36='(13,36)', UT_36_13='(36,13)', UT_36_14='(36,14)', UT_15_36='(15,36)', UT_36_15='(36,15)', UT_36_16='(36,16)', UT_17_36='(17,36)', UT_36_17='(36,17)', UT_36_18='(36,18)', UT_19_36='(19,36)', UT_36_19='(36,19)', UT_36_20='(36,20)', UT_21_36='(21,36)', UT_36_21='(36,21)', UT_36_22='(36,22)', UT_23_36='(23,36)', UT_36_23='(36,23)', UT_36_24='(36,24)', UT_25_36='(25,36)', UT_36_25='(36,25)', UT_36_26='(36,26)', UT_27_36='(27,36)', UT_36_27='(36,27)', UT_36_28='(36,28)', UT_29_36='(29,36)', UT_36_29='(36,29)', UT_36_30='(36,30)', UT_31_36='(31,36)', UT_36_31='(36,31)', UT_36_32='(36,32)', UT_33_36='(33,36)', UT_36_33='(36,33)', UT_36_34='(36,34)', UT_35_36='(35,36)', UT_36_35='(36,35)', UT_36_36='(36,36)', UT_00_37='(0,37)', UT_37_00='(37,0)', UT_37_01='(37,1)', UT_02_37='(2,37)', UT_37_02='(37,2)', UT_37_03='(37,3)', UT_04_37='(4,37)', UT_37_04='(37,4)', UT_37_05='(37,5)', UT_06_37='(6,37)', UT_37_06='(37,6)', UT_37_07='(37,7)', UT_08_37='(8,37)', UT_37_08='(37,8)', UT_37_09='(37,9)', UT_10_37='(10,37)', UT_37_10='(37,10)', UT_37_11='(37,11)', UT_12_37='(12,37)', UT_37_12='(37,12)', UT_37_13='(37,13)', UT_14_37='(14,37)', UT_37_14='(37,14)', UT_37_15='(37,15)', UT_16_37='(16,37)', UT_37_16='(37,16)', UT_37_17='(37,17)', UT_18_37='(18,37)', UT_37_18='(37,18)', UT_37_19='(37,19)', UT_20_37='(20,37)', UT_37_20='(37,20)', UT_37_21='(37,21)', UT_22_37='(22,37)', UT_37_22='(37,22)', UT_37_23='(37,23)', UT_24_37='(24,37)', UT_37_24='(37,24)', UT_37_25='(37,25)', UT_26_37='(26,37)', UT_37_26='(37,26)', UT_37_27='(37,27)', UT_28_37='(28,37)', UT_37_28='(37,28)', UT_37_29='(37,29)', UT_30_37='(30,37)', UT_37_30='(37,30)', UT_37_31='(37,31)', UT_32_37='(32,37)', UT_37_32='(37,32)', UT_37_33='(37,33)', UT_34_37='(34,37)', UT_37_34='(37,34)', UT_37_35='(37,35)', UT_36_37='(36,37)', UT_37_36='(37,36)', UT_01_37='(1,37)', UT_03_37='(3,37)', UT_05_37='(5,37)', UT_07_37='(7,37)', UT_09_37='(9,37)', UT_11_37='(11,37)', UT_13_37='(13,37)', UT_15_37='(15,37)', UT_17_37='(17,37)', UT_19_37='(19,37)', UT_21_37='(21,37)', UT_23_37='(23,37)', UT_25_37='(25,37)', UT_27_37='(27,37)', UT_29_37='(29,37)', UT_31_37='(31,37)', UT_33_37='(33,37)', UT_35_37='(35,37)', UT_37_37='(37,37)', UT_00_38='(0,38)', UT_02_38='(2,38)', UT_04_38='(4,38)', UT_06_38='(6,38)', UT_08_38='(8,38)', UT_10_38='(10,38)', UT_12_38='(12,38)', UT_14_38='(14,38)', UT_16_38='(16,38)', UT_18_38='(18,38)', UT_20_38='(20,38)', UT_22_38='(22,38)', UT_24_38='(24,38)', UT_26_38='(26,38)', UT_28_38='(28,38)', UT_30_38='(30,38)', UT_32_38='(32,38)', UT_34_38='(34,38)', UT_36_38='(36,38)', UT_38_00='(38,0)', UT_01_38='(1,38)', UT_38_01='(38,1)', UT_38_02='(38,2)', UT_03_38='(3,38)', UT_38_03='(38,3)', UT_38_04='(38,4)', UT_05_38='(5,38)', UT_38_05='(38,5)', UT_38_06='(38,6)', UT_07_38='(7,38)', UT_38_07='(38,7)', UT_38_08='(38,8)', UT_09_38='(9,38)', UT_38_09='(38,9)', UT_38_10='(38,10)', UT_11_38='(11,38)', UT_38_11='(38,11)', UT_38_12='(38,12)', UT_13_38='(13,38)', UT_38_13='(38,13)', UT_38_14='(38,14)', UT_15_38='(15,38)', UT_38_15='(38,15)', UT_38_16='(38,16)', UT_17_38='(17,38)', UT_38_17='(38,17)', UT_38_18='(38,18)', UT_19_38='(19,38)', UT_38_19='(38,19)', UT_38_20='(38,20)', UT_21_38='(21,38)', UT_38_21='(38,21)', UT_38_22='(38,22)', UT_23_38='(23,38)', UT_38_23='(38,23)', UT_38_24='(38,24)', UT_25_38='(25,38)', UT_38_25='(38,25)', UT_38_26='(38,26)', UT_27_38='(27,38)', UT_38_27='(38,27)', UT_38_28='(38,28)', UT_29_38='(29,38)', UT_38_29='(38,29)', UT_38_30='(38,30)', UT_31_38='(31,38)', UT_38_31='(38,31)', UT_38_32='(38,32)', UT_33_38='(33,38)', UT_38_33='(38,33)', UT_38_34='(38,34)', UT_35_38='(35,38)', UT_38_35='(38,35)', UT_38_36='(38,36)', UT_37_38='(37,38)', UT_38_37='(38,37)', UT_38_38='(38,38)', UT_00_39='(0,39)', UT_39_00='(39,0)', UT_39_01='(39,1)', UT_02_39='(2,39)', UT_39_02='(39,2)', UT_39_03='(39,3)', UT_04_39='(4,39)', UT_39_04='(39,4)', UT_39_05='(39,5)', UT_06_39='(6,39)', UT_39_06='(39,6)', UT_39_07='(39,7)', UT_08_39='(8,39)', UT_39_08='(39,8)', UT_39_09='(39,9)', UT_10_39='(10,39)', UT_39_10='(39,10)', UT_39_11='(39,11)', UT_12_39='(12,39)', UT_39_12='(39,12)', UT_39_13='(39,13)', UT_14_39='(14,39)', UT_39_14='(39,14)', UT_39_15='(39,15)', UT_16_39='(16,39)', UT_39_16='(39,16)', UT_39_17='(39,17)', UT_18_39='(18,39)', UT_39_18='(39,18)', UT_39_19='(39,19)', UT_20_39='(20,39)', UT_39_20='(39,20)', UT_39_21='(39,21)', UT_22_39='(22,39)', UT_39_22='(39,22)', UT_39_23='(39,23)', UT_24_39='(24,39)', UT_39_24='(39,24)', UT_39_25='(39,25)', UT_26_39='(26,39)', UT_39_26='(39,26)', UT_39_27='(39,27)', UT_28_39='(28,39)', UT_39_28='(39,28)', UT_39_29='(39,29)', UT_30_39='(30,39)', UT_39_30='(39,30)', UT_39_31='(39,31)', UT_32_39='(32,39)', UT_39_32='(39,32)', UT_39_33='(39,33)', UT_34_39='(34,39)', UT_39_34='(39,34)', UT_39_35='(39,35)', UT_36_39='(36,39)', UT_39_36='(39,36)', UT_39_37='(39,37)', UT_38_39='(38,39)', UT_39_38='(39,38)', UT_01_39='(1,39)', UT_03_39='(3,39)', UT_05_39='(5,39)', UT_07_39='(7,39)', UT_09_39='(9,39)', UT_11_39='(11,39)', UT_13_39='(13,39)', UT_15_39='(15,39)', UT_17_39='(17,39)', UT_19_39='(19,39)', UT_21_39='(21,39)', UT_23_39='(23,39)', UT_25_39='(25,39)', UT_27_39='(27,39)', UT_29_39='(29,39)', UT_31_39='(31,39)', UT_33_39='(33,39)', UT_35_39='(35,39)', UT_37_39='(37,39)', UT_39_39='(39,39)', UT_00_40='(0,40)', UT_02_40='(2,40)', UT_04_40='(4,40)', UT_06_40='(6,40)', UT_08_40='(8,40)', UT_10_40='(10,40)', UT_12_40='(12,40)', UT_14_40='(14,40)', UT_16_40='(16,40)', UT_18_40='(18,40)', UT_20_40='(20,40)', UT_22_40='(22,40)', UT_24_40='(24,40)', UT_26_40='(26,40)', UT_28_40='(28,40)', UT_30_40='(30,40)', UT_32_40='(32,40)', UT_34_40='(34,40)', UT_36_40='(36,40)', UT_38_40='(38,40)', UT_40_00='(40,0)', UT_01_40='(1,40)', UT_40_01='(40,1)', UT_40_02='(40,2)', UT_03_40='(3,40)', UT_40_03='(40,3)', UT_40_04='(40,4)', UT_05_40='(5,40)', UT_40_05='(40,5)', UT_40_06='(40,6)', UT_07_40='(7,40)', UT_40_07='(40,7)', UT_40_08='(40,8)', UT_09_40='(9,40)', UT_40_09='(40,9)', UT_40_10='(40,10)', UT_11_40='(11,40)', UT_40_11='(40,11)', UT_40_12='(40,12)', UT_13_40='(13,40)', UT_40_13='(40,13)', UT_40_14='(40,14)', UT_15_40='(15,40)', UT_40_15='(40,15)', UT_40_16='(40,16)', UT_17_40='(17,40)', UT_40_17='(40,17)', UT_40_18='(40,18)', UT_19_40='(19,40)', UT_40_19='(40,19)', UT_40_20='(40,20)', UT_21_40='(21,40)', UT_40_21='(40,21)', UT_40_22='(40,22)', UT_23_40='(23,40)', UT_40_23='(40,23)', UT_40_24='(40,24)', UT_25_40='(25,40)', UT_40_25='(40,25)', UT_40_26='(40,26)', UT_27_40='(27,40)', UT_40_27='(40,27)', UT_40_28='(40,28)', UT_29_40='(29,40)', UT_40_29='(40,29)', UT_40_30='(40,30)', UT_31_40='(31,40)', UT_40_31='(40,31)', UT_40_32='(40,32)', UT_33_40='(33,40)', UT_40_33='(40,33)', UT_40_34='(40,34)', UT_35_40='(35,40)', UT_40_35='(40,35)', UT_40_36='(40,36)', UT_37_40='(37,40)', UT_40_37='(40,37)', UT_40_38='(40,38)', UT_39_40='(39,40)', UT_40_39='(40,39)', UT_40_40='(40,40)', UT_00_41='(0,41)', UT_41_00='(41,0)', UT_41_01='(41,1)', UT_02_41='(2,41)', UT_41_02='(41,2)', UT_41_03='(41,3)', UT_04_41='(4,41)', UT_41_04='(41,4)', UT_41_05='(41,5)', UT_06_41='(6,41)', UT_41_06='(41,6)', UT_41_07='(41,7)', UT_08_41='(8,41)', UT_41_08='(41,8)', UT_41_09='(41,9)', UT_10_41='(10,41)', UT_41_10='(41,10)', UT_41_11='(41,11)', UT_12_41='(12,41)', UT_41_12='(41,12)', UT_41_13='(41,13)', UT_14_41='(14,41)', UT_41_14='(41,14)', UT_41_15='(41,15)', UT_16_41='(16,41)', UT_41_16='(41,16)', UT_41_17='(41,17)', UT_18_41='(18,41)', UT_41_18='(41,18)', UT_41_19='(41,19)', UT_20_41='(20,41)', UT_41_20='(41,20)', UT_41_21='(41,21)', UT_22_41='(22,41)', UT_41_22='(41,22)', UT_41_23='(41,23)', UT_24_41='(24,41)', UT_41_24='(41,24)', UT_41_25='(41,25)', UT_26_41='(26,41)', UT_41_26='(41,26)', UT_41_27='(41,27)', UT_28_41='(28,41)', UT_41_28='(41,28)', UT_41_29='(41,29)', UT_30_41='(30,41)', UT_41_30='(41,30)', UT_41_31='(41,31)', UT_32_41='(32,41)', UT_41_32='(41,32)', UT_41_33='(41,33)', UT_34_41='(34,41)', UT_41_34='(41,34)', UT_41_35='(41,35)', UT_36_41='(36,41)', UT_41_36='(41,36)', UT_41_37='(41,37)', UT_38_41='(38,41)', UT_41_38='(41,38)', UT_41_39='(41,39)', UT_40_41='(40,41)', UT_41_40='(41,40)', UT_01_41='(1,41)', UT_03_41='(3,41)', UT_05_41='(5,41)', UT_07_41='(7,41)', UT_09_41='(9,41)', UT_11_41='(11,41)', UT_13_41='(13,41)', UT_15_41='(15,41)', UT_17_41='(17,41)', UT_19_41='(19,41)', UT_21_41='(21,41)', UT_23_41='(23,41)', UT_25_41='(25,41)', UT_27_41='(27,41)', UT_29_41='(29,41)', UT_31_41='(31,41)', UT_33_41='(33,41)', UT_35_41='(35,41)', UT_37_41='(37,41)', UT_39_41='(39,41)', UT_41_41='(41,41)', UT_00_42='(0,42)', UT_02_42='(2,42)', UT_04_42='(4,42)', UT_06_42='(6,42)', UT_08_42='(8,42)', UT_10_42='(10,42)', UT_12_42='(12,42)', UT_14_42='(14,42)', UT_16_42='(16,42)', UT_18_42='(18,42)', UT_20_42='(20,42)', UT_22_42='(22,42)', UT_24_42='(24,42)', UT_26_42='(26,42)', UT_28_42='(28,42)', UT_30_42='(30,42)', UT_32_42='(32,42)', UT_34_42='(34,42)', UT_36_42='(36,42)', UT_38_42='(38,42)', UT_40_42='(40,42)', UT_42_00='(42,0)', UT_01_42='(1,42)', UT_42_01='(42,1)', UT_42_02='(42,2)', UT_03_42='(3,42)', UT_42_03='(42,3)', UT_42_04='(42,4)', UT_05_42='(5,42)', UT_42_05='(42,5)', UT_42_06='(42,6)', UT_07_42='(7,42)', UT_42_07='(42,7)', UT_42_08='(42,8)', UT_09_42='(9,42)', UT_42_09='(42,9)', UT_42_10='(42,10)', UT_11_42='(11,42)', UT_42_11='(42,11)', UT_42_12='(42,12)', UT_13_42='(13,42)', UT_42_13='(42,13)', UT_42_14='(42,14)', UT_15_42='(15,42)', UT_42_15='(42,15)', UT_42_16='(42,16)', UT_17_42='(17,42)', UT_42_17='(42,17)', UT_42_18='(42,18)', UT_19_42='(19,42)', UT_42_19='(42,19)', UT_42_20='(42,20)', UT_21_42='(21,42)', UT_42_21='(42,21)', UT_42_22='(42,22)', UT_23_42='(23,42)', UT_42_23='(42,23)', UT_42_24='(42,24)', UT_25_42='(25,42)', UT_42_25='(42,25)', UT_42_26='(42,26)', UT_27_42='(27,42)', UT_42_27='(42,27)', UT_42_28='(42,28)', UT_29_42='(29,42)', UT_42_29='(42,29)', UT_42_30='(42,30)', UT_31_42='(31,42)', UT_42_31='(42,31)', UT_42_32='(42,32)', UT_33_42='(33,42)', UT_42_33='(42,33)', UT_42_34='(42,34)', UT_35_42='(35,42)', UT_42_35='(42,35)', UT_42_36='(42,36)', UT_37_42='(37,42)', UT_42_37='(42,37)', UT_42_38='(42,38)', UT_39_42='(39,42)', UT_42_39='(42,39)', UT_42_40='(42,40)', UT_41_42='(41,42)', UT_42_41='(42,41)', UT_42_42='(42,42)', UT_00_43='(0,43)', UT_43_00='(43,0)', UT_43_01='(43,1)', UT_02_43='(2,43)', UT_43_02='(43,2)', UT_43_03='(43,3)', UT_04_43='(4,43)', UT_43_04='(43,4)', UT_43_05='(43,5)', UT_06_43='(6,43)', UT_43_06='(43,6)', UT_43_07='(43,7)', UT_08_43='(8,43)', UT_43_08='(43,8)', UT_43_09='(43,9)', UT_10_43='(10,43)', UT_43_10='(43,10)', UT_43_11='(43,11)', UT_12_43='(12,43)', UT_43_12='(43,12)', UT_43_13='(43,13)', UT_14_43='(14,43)', UT_43_14='(43,14)', UT_43_15='(43,15)', UT_16_43='(16,43)', UT_43_16='(43,16)', UT_43_17='(43,17)', UT_18_43='(18,43)', UT_43_18='(43,18)', UT_43_19='(43,19)', UT_20_43='(20,43)', UT_43_20='(43,20)', UT_43_21='(43,21)', UT_22_43='(22,43)', UT_43_22='(43,22)', UT_43_23='(43,23)', UT_24_43='(24,43)', UT_43_24='(43,24)', UT_43_25='(43,25)', UT_26_43='(26,43)', UT_43_26='(43,26)', UT_43_27='(43,27)', UT_28_43='(28,43)', UT_43_28='(43,28)', UT_43_29='(43,29)', UT_30_43='(30,43)', UT_43_30='(43,30)', UT_43_31='(43,31)', UT_32_43='(32,43)', UT_43_32='(43,32)', UT_43_33='(43,33)', UT_34_43='(34,43)', UT_43_34='(43,34)', UT_43_35='(43,35)', UT_36_43='(36,43)', UT_43_36='(43,36)', UT_43_37='(43,37)', UT_38_43='(38,43)', UT_43_38='(43,38)', UT_43_39='(43,39)', UT_40_43='(40,43)', UT_43_40='(43,40)', UT_43_41='(43,41)', UT_42_43='(42,43)', UT_43_42='(43,42)', UT_01_43='(1,43)', UT_03_43='(3,43)', UT_05_43='(5,43)', UT_07_43='(7,43)', UT_09_43='(9,43)', UT_11_43='(11,43)', UT_13_43='(13,43)', UT_15_43='(15,43)', UT_17_43='(17,43)', UT_19_43='(19,43)', UT_21_43='(21,43)', UT_23_43='(23,43)', UT_25_43='(25,43)', UT_27_43='(27,43)', UT_29_43='(29,43)', UT_31_43='(31,43)', UT_33_43='(33,43)', UT_35_43='(35,43)', UT_37_43='(37,43)', UT_39_43='(39,43)', UT_41_43='(41,43)', UT_43_43='(43,43)', UT_00_44='(0,44)', UT_02_44='(2,44)', UT_04_44='(4,44)', UT_06_44='(6,44)', UT_08_44='(8,44)', UT_10_44='(10,44)', UT_12_44='(12,44)', UT_14_44='(14,44)', UT_16_44='(16,44)', UT_18_44='(18,44)', UT_20_44='(20,44)', UT_22_44='(22,44)', UT_24_44='(24,44)', UT_26_44='(26,44)', UT_28_44='(28,44)', UT_30_44='(30,44)', UT_32_44='(32,44)', UT_34_44='(34,44)', UT_36_44='(36,44)', UT_38_44='(38,44)', UT_40_44='(40,44)', UT_42_44='(42,44)', UT_44_00='(44,0)', UT_01_44='(1,44)', UT_44_01='(44,1)', UT_44_02='(44,2)', UT_03_44='(3,44)', UT_44_03='(44,3)', UT_44_04='(44,4)', UT_05_44='(5,44)', UT_44_05='(44,5)', UT_44_06='(44,6)', UT_07_44='(7,44)', UT_44_07='(44,7)', UT_44_08='(44,8)', UT_09_44='(9,44)', UT_44_09='(44,9)', UT_44_10='(44,10)', UT_11_44='(11,44)', UT_44_11='(44,11)', UT_44_12='(44,12)', UT_13_44='(13,44)', UT_44_13='(44,13)', UT_44_14='(44,14)', UT_15_44='(15,44)', UT_44_15='(44,15)', UT_44_16='(44,16)', UT_17_44='(17,44)', UT_44_17='(44,17)', UT_44_18='(44,18)', UT_19_44='(19,44)', UT_44_19='(44,19)', UT_44_20='(44,20)', UT_21_44='(21,44)', UT_44_21='(44,21)', UT_44_22='(44,22)', UT_23_44='(23,44)', UT_44_23='(44,23)', UT_44_24='(44,24)', UT_25_44='(25,44)', UT_44_25='(44,25)', UT_44_26='(44,26)', UT_27_44='(27,44)', UT_44_27='(44,27)', UT_44_28='(44,28)', UT_29_44='(29,44)', UT_44_29='(44,29)', UT_44_30='(44,30)', UT_31_44='(31,44)', UT_44_31='(44,31)', UT_44_32='(44,32)', UT_33_44='(33,44)', UT_44_33='(44,33)', UT_44_34='(44,34)', UT_35_44='(35,44)', UT_44_35='(44,35)', UT_44_36='(44,36)', UT_37_44='(37,44)', UT_44_37='(44,37)', UT_44_38='(44,38)', UT_39_44='(39,44)', UT_44_39='(44,39)', UT_44_40='(44,40)', UT_41_44='(41,44)', UT_44_41='(44,41)', UT_44_42='(44,42)', UT_43_44='(43,44)', UT_44_43='(44,43)', UT_44_44='(44,44)', UT_00_45='(0,45)', UT_45_00='(45,0)', UT_45_01='(45,1)', UT_02_45='(2,45)', UT_45_02='(45,2)', UT_45_03='(45,3)', UT_04_45='(4,45)', UT_45_04='(45,4)', UT_45_05='(45,5)', UT_06_45='(6,45)', UT_45_06='(45,6)', UT_45_07='(45,7)', UT_08_45='(8,45)', UT_45_08='(45,8)', UT_45_09='(45,9)', UT_10_45='(10,45)', UT_45_10='(45,10)', UT_45_11='(45,11)', UT_12_45='(12,45)', UT_45_12='(45,12)', UT_45_13='(45,13)', UT_14_45='(14,45)', UT_45_14='(45,14)', UT_45_15='(45,15)', UT_16_45='(16,45)', UT_45_16='(45,16)', UT_45_17='(45,17)', UT_18_45='(18,45)', UT_45_18='(45,18)', UT_45_19='(45,19)', UT_20_45='(20,45)', UT_45_20='(45,20)', UT_45_21='(45,21)', UT_22_45='(22,45)', UT_45_22='(45,22)', UT_45_23='(45,23)', UT_24_45='(24,45)', UT_45_24='(45,24)', UT_45_25='(45,25)', UT_26_45='(26,45)', UT_45_26='(45,26)', UT_45_27='(45,27)', UT_28_45='(28,45)', UT_45_28='(45,28)', UT_45_29='(45,29)', UT_30_45='(30,45)', UT_45_30='(45,30)', UT_45_31='(45,31)', UT_32_45='(32,45)', UT_45_32='(45,32)', UT_45_33='(45,33)', UT_34_45='(34,45)', UT_45_34='(45,34)', UT_45_35='(45,35)', UT_36_45='(36,45)', UT_45_36='(45,36)', UT_45_37='(45,37)', UT_38_45='(38,45)', UT_45_38='(45,38)', UT_45_39='(45,39)', UT_40_45='(40,45)', UT_45_40='(45,40)', UT_45_41='(45,41)', UT_42_45='(42,45)', UT_45_42='(45,42)', UT_45_43='(45,43)', UT_44_45='(44,45)', UT_45_44='(45,44)', UT_01_45='(1,45)', UT_03_45='(3,45)', UT_05_45='(5,45)', UT_07_45='(7,45)', UT_09_45='(9,45)', UT_11_45='(11,45)', UT_13_45='(13,45)', UT_15_45='(15,45)', UT_17_45='(17,45)', UT_19_45='(19,45)', UT_21_45='(21,45)', UT_23_45='(23,45)', UT_25_45='(25,45)', UT_27_45='(27,45)', UT_29_45='(29,45)', UT_31_45='(31,45)', UT_33_45='(33,45)', UT_35_45='(35,45)', UT_37_45='(37,45)', UT_39_45='(39,45)', UT_41_45='(41,45)', UT_43_45='(43,45)', UT_45_45='(45,45)', UT_00_46='(0,46)', UT_02_46='(2,46)', UT_04_46='(4,46)', UT_06_46='(6,46)', UT_08_46='(8,46)', UT_10_46='(10,46)', UT_12_46='(12,46)', UT_14_46='(14,46)', UT_16_46='(16,46)', UT_18_46='(18,46)', UT_20_46='(20,46)', UT_22_46='(22,46)', UT_24_46='(24,46)', UT_26_46='(26,46)', UT_28_46='(28,46)', UT_30_46='(30,46)', UT_32_46='(32,46)', UT_34_46='(34,46)', UT_36_46='(36,46)', UT_38_46='(38,46)', UT_40_46='(40,46)', UT_42_46='(42,46)', UT_44_46='(44,46)', UT_46_00='(46,0)', UT_01_46='(1,46)', UT_46_01='(46,1)', UT_46_02='(46,2)', UT_03_46='(3,46)', UT_46_03='(46,3)', UT_46_04='(46,4)', UT_05_46='(5,46)', UT_46_05='(46,5)', UT_46_06='(46,6)', UT_07_46='(7,46)', UT_46_07='(46,7)', UT_46_08='(46,8)', UT_09_46='(9,46)', UT_46_09='(46,9)', UT_46_10='(46,10)', UT_11_46='(11,46)', UT_46_11='(46,11)', UT_46_12='(46,12)', UT_13_46='(13,46)', UT_46_13='(46,13)', UT_46_14='(46,14)', UT_15_46='(15,46)', UT_46_15='(46,15)', UT_46_16='(46,16)', UT_17_46='(17,46)', UT_46_17='(46,17)', UT_46_18='(46,18)', UT_19_46='(19,46)', UT_46_19='(46,19)', UT_46_20='(46,20)', UT_21_46='(21,46)', UT_46_21='(46,21)', UT_46_22='(46,22)', UT_23_46='(23,46)', UT_46_23='(46,23)', UT_46_24='(46,24)', UT_25_46='(25,46)', UT_46_25='(46,25)', UT_46_26='(46,26)', UT_27_46='(27,46)', UT_46_27='(46,27)', UT_46_28='(46,28)', UT_29_46='(29,46)', UT_46_29='(46,29)', UT_46_30='(46,30)', UT_31_46='(31,46)', UT_46_31='(46,31)', UT_46_32='(46,32)', UT_33_46='(33,46)', UT_46_33='(46,33)', UT_46_34='(46,34)', UT_35_46='(35,46)', UT_46_35='(46,35)', UT_46_36='(46,36)', UT_37_46='(37,46)', UT_46_37='(46,37)', UT_46_38='(46,38)', UT_39_46='(39,46)', UT_46_39='(46,39)', UT_46_40='(46,40)', UT_41_46='(41,46)', UT_46_41='(46,41)', UT_46_42='(46,42)', UT_43_46='(43,46)', UT_46_43='(46,43)', UT_46_44='(46,44)', UT_45_46='(45,46)', UT_46_45='(46,45)', UT_46_46='(46,46)', UT_00_47='(0,47)', UT_47_00='(47,0)', UT_47_01='(47,1)', UT_02_47='(2,47)', UT_47_02='(47,2)', UT_47_03='(47,3)', UT_04_47='(4,47)', UT_47_04='(47,4)', UT_47_05='(47,5)', UT_06_47='(6,47)', UT_47_06='(47,6)', UT_47_07='(47,7)', UT_08_47='(8,47)', UT_47_08='(47,8)', UT_47_09='(47,9)', UT_10_47='(10,47)', UT_47_10='(47,10)', UT_47_11='(47,11)', UT_12_47='(12,47)', UT_47_12='(47,12)', UT_47_13='(47,13)', UT_14_47='(14,47)', UT_47_14='(47,14)', UT_47_15='(47,15)', UT_16_47='(16,47)', UT_47_16='(47,16)', UT_47_17='(47,17)', UT_18_47='(18,47)', UT_47_18='(47,18)', UT_47_19='(47,19)', UT_20_47='(20,47)', UT_47_20='(47,20)', UT_47_21='(47,21)', UT_22_47='(22,47)', UT_47_22='(47,22)', UT_47_23='(47,23)', UT_24_47='(24,47)', UT_47_24='(47,24)', UT_47_25='(47,25)', UT_26_47='(26,47)', UT_47_26='(47,26)', UT_47_27='(47,27)', UT_28_47='(28,47)', UT_47_28='(47,28)', UT_47_29='(47,29)', UT_30_47='(30,47)', UT_47_30='(47,30)', UT_47_31='(47,31)', UT_32_47='(32,47)', UT_47_32='(47,32)', UT_47_33='(47,33)', UT_34_47='(34,47)', UT_47_34='(47,34)', UT_47_35='(47,35)', UT_36_47='(36,47)', UT_47_36='(47,36)', UT_47_37='(47,37)', UT_38_47='(38,47)', UT_47_38='(47,38)', UT_47_39='(47,39)', UT_40_47='(40,47)', UT_47_40='(47,40)', UT_47_41='(47,41)', UT_42_47='(42,47)', UT_47_42='(47,42)', UT_47_43='(47,43)', UT_44_47='(44,47)', UT_47_44='(47,44)', UT_47_45='(47,45)', UT_46_47='(46,47)', UT_47_46='(47,46)', UT_01_47='(1,47)', UT_03_47='(3,47)', UT_05_47='(5,47)', UT_07_47='(7,47)', UT_09_47='(9,47)', UT_11_47='(11,47)', UT_13_47='(13,47)', UT_15_47='(15,47)', UT_17_47='(17,47)', UT_19_47='(19,47)', UT_21_47='(21,47)', UT_23_47='(23,47)', UT_25_47='(25,47)', UT_27_47='(27,47)', UT_29_47='(29,47)', UT_31_47='(31,47)', UT_33_47='(33,47)', UT_35_47='(35,47)', UT_37_47='(37,47)', UT_39_47='(39,47)', UT_41_47='(41,47)', UT_43_47='(43,47)', UT_45_47='(45,47)', UT_47_47='(47,47)', UT_00_48='(0,48)', UT_02_48='(2,48)', UT_04_48='(4,48)', UT_06_48='(6,48)', UT_08_48='(8,48)', UT_10_48='(10,48)', UT_12_48='(12,48)', UT_14_48='(14,48)', UT_16_48='(16,48)', UT_18_48='(18,48)', UT_20_48='(20,48)', UT_22_48='(22,48)', UT_24_48='(24,48)', UT_26_48='(26,48)', UT_28_48='(28,48)', UT_30_48='(30,48)', UT_32_48='(32,48)', UT_34_48='(34,48)', UT_36_48='(36,48)', UT_38_48='(38,48)', UT_40_48='(40,48)', UT_42_48='(42,48)', UT_44_48='(44,48)', UT_46_48='(46,48)', UT_48_00='(48,0)', UT_01_48='(1,48)', UT_48_01='(48,1)', UT_48_02='(48,2)', UT_03_48='(3,48)', UT_48_03='(48,3)', UT_48_04='(48,4)', UT_05_48='(5,48)', UT_48_05='(48,5)', UT_48_06='(48,6)', UT_07_48='(7,48)', UT_48_07='(48,7)', UT_48_08='(48,8)', UT_09_48='(9,48)', UT_48_09='(48,9)', UT_48_10='(48,10)', UT_11_48='(11,48)', UT_48_11='(48,11)', UT_48_12='(48,12)', UT_13_48='(13,48)', UT_48_13='(48,13)', UT_48_14='(48,14)', UT_15_48='(15,48)', UT_48_15='(48,15)', UT_48_16='(48,16)', UT_17_48='(17,48)', UT_48_17='(48,17)', UT_48_18='(48,18)', UT_19_48='(19,48)', UT_48_19='(48,19)', UT_48_20='(48,20)', UT_21_48='(21,48)', UT_48_21='(48,21)', UT_48_22='(48,22)', UT_23_48='(23,48)', UT_48_23='(48,23)', UT_48_24='(48,24)', UT_25_48='(25,48)', UT_48_25='(48,25)', UT_48_26='(48,26)', UT_27_48='(27,48)', UT_48_27='(48,27)', UT_48_28='(48,28)', UT_29_48='(29,48)', UT_48_29='(48,29)', UT_48_30='(48,30)', UT_31_48='(31,48)', UT_48_31='(48,31)', UT_48_32='(48,32)', UT_33_48='(33,48)', UT_48_33='(48,33)', UT_48_34='(48,34)', UT_35_48='(35,48)', UT_48_35='(48,35)', UT_48_36='(48,36)', UT_37_48='(37,48)', UT_48_37='(48,37)', UT_48_38='(48,38)', UT_39_48='(39,48)', UT_48_39='(48,39)', UT_48_40='(48,40)', UT_41_48='(41,48)', UT_48_41='(48,41)', UT_48_42='(48,42)', UT_43_48='(43,48)', UT_48_43='(48,43)', UT_48_44='(48,44)', UT_45_48='(45,48)', UT_48_45='(48,45)', UT_48_46='(48,46)', UT_47_48='(47,48)', UT_48_47='(48,47)', UT_48_48='(48,48)', UT_00_49='(0,49)', UT_49_00='(49,0)', UT_49_01='(49,1)', UT_02_49='(2,49)', UT_49_02='(49,2)', UT_49_03='(49,3)', UT_04_49='(4,49)', UT_49_04='(49,4)', UT_49_05='(49,5)', UT_06_49='(6,49)', UT_49_06='(49,6)', UT_49_07='(49,7)', UT_08_49='(8,49)', UT_49_08='(49,8)', UT_49_09='(49,9)', UT_10_49='(10,49)', UT_49_10='(49,10)', UT_49_11='(49,11)', UT_12_49='(12,49)', UT_49_12='(49,12)', UT_49_13='(49,13)', UT_14_49='(14,49)', UT_49_14='(49,14)', UT_49_15='(49,15)', UT_16_49='(16,49)', UT_49_16='(49,16)', UT_49_17='(49,17)', UT_18_49='(18,49)', UT_49_18='(49,18)', UT_49_19='(49,19)', UT_20_49='(20,49)', UT_49_20='(49,20)', UT_49_21='(49,21)', UT_22_49='(22,49)', UT_49_22='(49,22)', UT_49_23='(49,23)', UT_24_49='(24,49)', UT_49_24='(49,24)', UT_49_25='(49,25)', UT_26_49='(26,49)', UT_49_26='(49,26)', UT_49_27='(49,27)', UT_28_49='(28,49)', UT_49_28='(49,28)', UT_49_29='(49,29)', UT_30_49='(30,49)', UT_49_30='(49,30)', UT_49_31='(49,31)', UT_32_49='(32,49)', UT_49_32='(49,32)', UT_49_33='(49,33)', UT_34_49='(34,49)', UT_49_34='(49,34)', UT_49_35='(49,35)', UT_36_49='(36,49)', UT_49_36='(49,36)', UT_49_37='(49,37)', UT_38_49='(38,49)', UT_49_38='(49,38)', UT_49_39='(49,39)', UT_40_49='(40,49)', UT_49_40='(49,40)', UT_49_41='(49,41)', UT_42_49='(42,49)', UT_49_42='(49,42)', UT_49_43='(49,43)', UT_44_49='(44,49)', UT_49_44='(49,44)', UT_49_45='(49,45)', UT_46_49='(46,49)', UT_49_46='(49,46)', UT_49_47='(49,47)', UT_48_49='(48,49)', UT_49_48='(49,48)', UT_01_49='(1,49)', UT_03_49='(3,49)', UT_05_49='(5,49)', UT_07_49='(7,49)', UT_09_49='(9,49)', UT_11_49='(11,49)', UT_13_49='(13,49)', UT_15_49='(15,49)', UT_17_49='(17,49)', UT_19_49='(19,49)', UT_21_49='(21,49)', UT_23_49='(23,49)', UT_25_49='(25,49)', UT_27_49='(27,49)', UT_29_49='(29,49)', UT_31_49='(31,49)', UT_33_49='(33,49)', UT_35_49='(35,49)', UT_37_49='(37,49)', UT_39_49='(39,49)', UT_41_49='(41,49)', UT_43_49='(43,49)', UT_45_49='(45,49)', UT_47_49='(47,49)', UT_49_49='(49,49)')` +public access to universal vocabulary for `MazeTokenizerModular` + - `VOCAB_LIST: list[str] = ['', '', '', '', '', '', '', '', '<-->', ';', '', '(', ',', ')', '=', '||', ':', 'THEN', '-', '', 'TARGET_A', 'TARGET_B', 'TARGET_C', 'TARGET_D', 'TARGET_E', 'TARGET_F', 'TARGET_G', 'TARGET_H', 'TARGET_I', 'TARGET_J', 'TARGET_K', 'TARGET_L', 'TARGET_M', 'TARGET_N', 'TARGET_O', 'TARGET_P', 'TARGET_Q', 'TARGET_R', 'TARGET_S', 'TARGET_T', 'TARGET_U', 'TARGET_V', 'TARGET_W', 'TARGET_X', 'TARGET_Y', 'TARGET_Z', 'TARGET_NORTH', 'TARGET_SOUTH', 'TARGET_EAST', 'TARGET_WEST', 'TARGET_NORTHEAST', 'TARGET_NORTHWEST', 'TARGET_SOUTHEAST', 'TARGET_SOUTHWEST', 'TARGET_CENTER', 'NORTH', 'SOUTH', 'EAST', 'WEST', 'FORWARD', 'BACKWARD', 'LEFT', 'RIGHT', 'STAY', '+0', '+1', '+2', '+3', '+4', '+5', '+6', '+7', '+8', '+9', '+10', '+11', '+12', '+13', '+14', '+15', '+16', '+17', '+18', '+19', '+20', '+21', '+22', '+23', '+24', '+25', '+26', '+27', '+28', '+29', '+30', '+31', '+32', '+33', '+34', '+35', '+36', '+37', '+38', '+39', '+40', '+41', '+42', '+43', '+44', '+45', '+46', '+47', '+48', '+49', '+50', '+51', '+52', '+53', '+54', '+55', '+56', '+57', '+58', '+59', '+60', '+61', '+62', '+63', '+64', '+65', '+66', '+67', '+68', '+69', '+70', '+71', '+72', '+73', '+74', '+75', '+76', '+77', '+78', '+79', '+80', '+81', '+82', '+83', '+84', '+85', '+86', '+87', '+88', '+89', '+90', '+91', '+92', '+93', '+94', '+95', '+96', '+97', '+98', '+99', '+100', '+101', '+102', '+103', '+104', '+105', '+106', '+107', '+108', '+109', '+110', '+111', '+112', '+113', '+114', '+115', '+116', '+117', '+118', '+119', '+120', '+121', '+122', '+123', '+124', '+125', '+126', '+127', '+128', '+129', '+130', '+131', '+132', '+133', '+134', '+135', '+136', '+137', '+138', '+139', '+140', '+141', '+142', '+143', '+144', '+145', '+146', '+147', '+148', '+149', '+150', '+151', '+152', '+153', '+154', '+155', '+156', '+157', '+158', '+159', '+160', '+161', '+162', '+163', '+164', '+165', '+166', '+167', '+168', '+169', '+170', '+171', '+172', '+173', '+174', '+175', '+176', '+177', '+178', '+179', '+180', '+181', '+182', '+183', '+184', '+185', '+186', '+187', '+188', '+189', '+190', '+191', '+192', '+193', '+194', '+195', '+196', '+197', '+198', '+199', '+200', '+201', '+202', '+203', '+204', '+205', '+206', '+207', '+208', '+209', '+210', '+211', '+212', '+213', '+214', '+215', '+216', '+217', '+218', '+219', '+220', '+221', '+222', '+223', '+224', '+225', '+226', '+227', '+228', '+229', '+230', '+231', '+232', '+233', '+234', '+235', '+236', '+237', '+238', '+239', '+240', '+241', '+242', '+243', '+244', '+245', '+246', '+247', '+248', '+249', '+250', '+251', '+252', '+253', '+254', '+255', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '-256', '-255', '-254', '-253', '-252', '-251', '-250', '-249', '-248', '-247', '-246', '-245', '-244', '-243', '-242', '-241', '-240', '-239', '-238', '-237', '-236', '-235', '-234', '-233', '-232', '-231', '-230', '-229', '-228', '-227', '-226', '-225', '-224', '-223', '-222', '-221', '-220', '-219', '-218', '-217', '-216', '-215', '-214', '-213', '-212', '-211', '-210', '-209', '-208', '-207', '-206', '-205', '-204', '-203', '-202', '-201', '-200', '-199', '-198', '-197', '-196', '-195', '-194', '-193', '-192', '-191', '-190', '-189', '-188', '-187', '-186', '-185', '-184', '-183', '-182', '-181', '-180', '-179', '-178', '-177', '-176', '-175', '-174', '-173', '-172', '-171', '-170', '-169', '-168', '-167', '-166', '-165', '-164', '-163', '-162', '-161', '-160', '-159', '-158', '-157', '-156', '-155', '-154', '-153', '-152', '-151', '-150', '-149', '-148', '-147', '-146', '-145', '-144', '-143', '-142', '-141', '-140', '-139', '-138', '-137', '-136', '-135', '-134', '-133', '-132', '-131', '-130', '-129', '-128', '-127', '-126', '-125', '-124', '-123', '-122', '-121', '-120', '-119', '-118', '-117', '-116', '-115', '-114', '-113', '-112', '-111', '-110', '-109', '-108', '-107', '-106', '-105', '-104', '-103', '-102', '-101', '-100', '-99', '-98', '-97', '-96', '-95', '-94', '-93', '-92', '-91', '-90', '-89', '-88', '-87', '-86', '-85', '-84', '-83', '-82', '-81', '-80', '-79', '-78', '-77', '-76', '-75', '-74', '-73', '-72', '-71', '-70', '-69', '-68', '-67', '-66', '-65', '-64', '-63', '-62', '-61', '-60', '-59', '-58', '-57', '-56', '-55', '-54', '-53', '-52', '-51', '-50', '-49', '-48', '-47', '-46', '-45', '-44', '-43', '-42', '-41', '-40', '-39', '-38', '-37', '-36', '-35', '-34', '-33', '-32', '-31', '-30', '-29', '-28', '-27', '-26', '-25', '-24', '-23', '-22', '-21', '-20', '-19', '-18', '-17', '-16', '-15', '-14', '-13', '-12', '-11', '-10', '-9', '-8', '-7', '-6', '-5', '-4', '-3', '-2', '-1', 'STEP', 'ADJ_GROUP', '&', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '(0,0)', '(0,1)', '(1,0)', '(1,1)', '(0,2)', '(2,0)', '(1,2)', '(2,1)', '(2,2)', '(0,3)', '(3,0)', '(3,1)', '(2,3)', '(3,2)', '(1,3)', '(3,3)', '(0,4)', '(2,4)', '(4,0)', '(1,4)', '(4,1)', '(4,2)', '(3,4)', '(4,3)', '(4,4)', '(0,5)', '(5,0)', '(5,1)', '(2,5)', '(5,2)', '(5,3)', '(4,5)', '(5,4)', '(1,5)', '(3,5)', '(5,5)', '(0,6)', '(2,6)', '(4,6)', '(6,0)', '(1,6)', '(6,1)', '(6,2)', '(3,6)', '(6,3)', '(6,4)', '(5,6)', '(6,5)', '(6,6)', '(0,7)', '(7,0)', '(7,1)', '(2,7)', '(7,2)', '(7,3)', '(4,7)', '(7,4)', '(7,5)', '(6,7)', '(7,6)', '(1,7)', '(3,7)', '(5,7)', '(7,7)', '(0,8)', '(2,8)', '(4,8)', '(6,8)', '(8,0)', '(1,8)', '(8,1)', '(8,2)', '(3,8)', '(8,3)', '(8,4)', '(5,8)', '(8,5)', '(8,6)', '(7,8)', '(8,7)', '(8,8)', '(0,9)', '(9,0)', '(9,1)', '(2,9)', '(9,2)', '(9,3)', '(4,9)', '(9,4)', '(9,5)', '(6,9)', '(9,6)', '(9,7)', '(8,9)', '(9,8)', '(1,9)', '(3,9)', '(5,9)', '(7,9)', '(9,9)', '(0,10)', '(2,10)', '(4,10)', '(6,10)', '(8,10)', '(10,0)', '(1,10)', '(10,1)', '(10,2)', '(3,10)', '(10,3)', '(10,4)', '(5,10)', '(10,5)', '(10,6)', '(7,10)', '(10,7)', '(10,8)', '(9,10)', '(10,9)', '(10,10)', '(0,11)', '(11,0)', '(11,1)', '(2,11)', '(11,2)', '(11,3)', '(4,11)', '(11,4)', '(11,5)', '(6,11)', '(11,6)', '(11,7)', '(8,11)', '(11,8)', '(11,9)', '(10,11)', '(11,10)', '(1,11)', '(3,11)', '(5,11)', '(7,11)', '(9,11)', '(11,11)', '(0,12)', '(2,12)', '(4,12)', '(6,12)', '(8,12)', '(10,12)', '(12,0)', '(1,12)', '(12,1)', '(12,2)', '(3,12)', '(12,3)', '(12,4)', '(5,12)', '(12,5)', '(12,6)', '(7,12)', '(12,7)', '(12,8)', '(9,12)', '(12,9)', '(12,10)', '(11,12)', '(12,11)', '(12,12)', '(0,13)', '(13,0)', '(13,1)', '(2,13)', '(13,2)', '(13,3)', '(4,13)', '(13,4)', '(13,5)', '(6,13)', '(13,6)', '(13,7)', '(8,13)', '(13,8)', '(13,9)', '(10,13)', '(13,10)', '(13,11)', '(12,13)', '(13,12)', '(1,13)', '(3,13)', '(5,13)', '(7,13)', '(9,13)', '(11,13)', '(13,13)', '(0,14)', '(2,14)', '(4,14)', '(6,14)', '(8,14)', '(10,14)', '(12,14)', '(14,0)', '(1,14)', '(14,1)', '(14,2)', '(3,14)', '(14,3)', '(14,4)', '(5,14)', '(14,5)', '(14,6)', '(7,14)', '(14,7)', '(14,8)', '(9,14)', '(14,9)', '(14,10)', '(11,14)', '(14,11)', '(14,12)', '(13,14)', '(14,13)', '(14,14)', '(0,15)', '(15,0)', '(15,1)', '(2,15)', '(15,2)', '(15,3)', '(4,15)', '(15,4)', '(15,5)', '(6,15)', '(15,6)', '(15,7)', '(8,15)', '(15,8)', '(15,9)', '(10,15)', '(15,10)', '(15,11)', '(12,15)', '(15,12)', '(15,13)', '(14,15)', '(15,14)', '(1,15)', '(3,15)', '(5,15)', '(7,15)', '(9,15)', '(11,15)', '(13,15)', '(15,15)', '(0,16)', '(2,16)', '(4,16)', '(6,16)', '(8,16)', '(10,16)', '(12,16)', '(14,16)', '(16,0)', '(1,16)', '(16,1)', '(16,2)', '(3,16)', '(16,3)', '(16,4)', '(5,16)', '(16,5)', '(16,6)', '(7,16)', '(16,7)', '(16,8)', '(9,16)', '(16,9)', '(16,10)', '(11,16)', '(16,11)', '(16,12)', '(13,16)', '(16,13)', '(16,14)', '(15,16)', '(16,15)', '(16,16)', '(0,17)', '(17,0)', '(17,1)', '(2,17)', '(17,2)', '(17,3)', '(4,17)', '(17,4)', '(17,5)', '(6,17)', '(17,6)', '(17,7)', '(8,17)', '(17,8)', '(17,9)', '(10,17)', '(17,10)', '(17,11)', '(12,17)', '(17,12)', '(17,13)', '(14,17)', '(17,14)', '(17,15)', '(16,17)', '(17,16)', '(1,17)', '(3,17)', '(5,17)', '(7,17)', '(9,17)', '(11,17)', '(13,17)', '(15,17)', '(17,17)', '(0,18)', '(2,18)', '(4,18)', '(6,18)', '(8,18)', '(10,18)', '(12,18)', '(14,18)', '(16,18)', '(18,0)', '(1,18)', '(18,1)', '(18,2)', '(3,18)', '(18,3)', '(18,4)', '(5,18)', '(18,5)', '(18,6)', '(7,18)', '(18,7)', '(18,8)', '(9,18)', '(18,9)', '(18,10)', '(11,18)', '(18,11)', '(18,12)', '(13,18)', '(18,13)', '(18,14)', '(15,18)', '(18,15)', '(18,16)', '(17,18)', '(18,17)', '(18,18)', '(0,19)', '(19,0)', '(19,1)', '(2,19)', '(19,2)', '(19,3)', '(4,19)', '(19,4)', '(19,5)', '(6,19)', '(19,6)', '(19,7)', '(8,19)', '(19,8)', '(19,9)', '(10,19)', '(19,10)', '(19,11)', '(12,19)', '(19,12)', '(19,13)', '(14,19)', '(19,14)', '(19,15)', '(16,19)', '(19,16)', '(19,17)', '(18,19)', '(19,18)', '(1,19)', '(3,19)', '(5,19)', '(7,19)', '(9,19)', '(11,19)', '(13,19)', '(15,19)', '(17,19)', '(19,19)', '(0,20)', '(2,20)', '(4,20)', '(6,20)', '(8,20)', '(10,20)', '(12,20)', '(14,20)', '(16,20)', '(18,20)', '(20,0)', '(1,20)', '(20,1)', '(20,2)', '(3,20)', '(20,3)', '(20,4)', '(5,20)', '(20,5)', '(20,6)', '(7,20)', '(20,7)', '(20,8)', '(9,20)', '(20,9)', '(20,10)', '(11,20)', '(20,11)', '(20,12)', '(13,20)', '(20,13)', '(20,14)', '(15,20)', '(20,15)', '(20,16)', '(17,20)', '(20,17)', '(20,18)', '(19,20)', '(20,19)', '(20,20)', '(0,21)', '(21,0)', '(21,1)', '(2,21)', '(21,2)', '(21,3)', '(4,21)', '(21,4)', '(21,5)', '(6,21)', '(21,6)', '(21,7)', '(8,21)', '(21,8)', '(21,9)', '(10,21)', '(21,10)', '(21,11)', '(12,21)', '(21,12)', '(21,13)', '(14,21)', '(21,14)', '(21,15)', '(16,21)', '(21,16)', '(21,17)', '(18,21)', '(21,18)', '(21,19)', '(20,21)', '(21,20)', '(1,21)', '(3,21)', '(5,21)', '(7,21)', '(9,21)', '(11,21)', '(13,21)', '(15,21)', '(17,21)', '(19,21)', '(21,21)', '(0,22)', '(2,22)', '(4,22)', '(6,22)', '(8,22)', '(10,22)', '(12,22)', '(14,22)', '(16,22)', '(18,22)', '(20,22)', '(22,0)', '(1,22)', '(22,1)', '(22,2)', '(3,22)', '(22,3)', '(22,4)', '(5,22)', '(22,5)', '(22,6)', '(7,22)', '(22,7)', '(22,8)', '(9,22)', '(22,9)', '(22,10)', '(11,22)', '(22,11)', '(22,12)', '(13,22)', '(22,13)', '(22,14)', '(15,22)', '(22,15)', '(22,16)', '(17,22)', '(22,17)', '(22,18)', '(19,22)', '(22,19)', '(22,20)', '(21,22)', '(22,21)', '(22,22)', '(0,23)', '(23,0)', '(23,1)', '(2,23)', '(23,2)', '(23,3)', '(4,23)', '(23,4)', '(23,5)', '(6,23)', '(23,6)', '(23,7)', '(8,23)', '(23,8)', '(23,9)', '(10,23)', '(23,10)', '(23,11)', '(12,23)', '(23,12)', '(23,13)', '(14,23)', '(23,14)', '(23,15)', '(16,23)', '(23,16)', '(23,17)', '(18,23)', '(23,18)', '(23,19)', '(20,23)', '(23,20)', '(23,21)', '(22,23)', '(23,22)', '(1,23)', '(3,23)', '(5,23)', '(7,23)', '(9,23)', '(11,23)', '(13,23)', '(15,23)', '(17,23)', '(19,23)', '(21,23)', '(23,23)', '(0,24)', '(2,24)', '(4,24)', '(6,24)', '(8,24)', '(10,24)', '(12,24)', '(14,24)', '(16,24)', '(18,24)', '(20,24)', '(22,24)', '(24,0)', '(1,24)', '(24,1)', '(24,2)', '(3,24)', '(24,3)', '(24,4)', '(5,24)', '(24,5)', '(24,6)', '(7,24)', '(24,7)', '(24,8)', '(9,24)', '(24,9)', '(24,10)', '(11,24)', '(24,11)', '(24,12)', '(13,24)', '(24,13)', '(24,14)', '(15,24)', '(24,15)', '(24,16)', '(17,24)', '(24,17)', '(24,18)', '(19,24)', '(24,19)', '(24,20)', '(21,24)', '(24,21)', '(24,22)', '(23,24)', '(24,23)', '(24,24)', '(0,25)', '(25,0)', '(25,1)', '(2,25)', '(25,2)', '(25,3)', '(4,25)', '(25,4)', '(25,5)', '(6,25)', '(25,6)', '(25,7)', '(8,25)', '(25,8)', '(25,9)', '(10,25)', '(25,10)', '(25,11)', '(12,25)', '(25,12)', '(25,13)', '(14,25)', '(25,14)', '(25,15)', '(16,25)', '(25,16)', '(25,17)', '(18,25)', '(25,18)', '(25,19)', '(20,25)', '(25,20)', '(25,21)', '(22,25)', '(25,22)', '(25,23)', '(24,25)', '(25,24)', '(1,25)', '(3,25)', '(5,25)', '(7,25)', '(9,25)', '(11,25)', '(13,25)', '(15,25)', '(17,25)', '(19,25)', '(21,25)', '(23,25)', '(25,25)', '(0,26)', '(2,26)', '(4,26)', '(6,26)', '(8,26)', '(10,26)', '(12,26)', '(14,26)', '(16,26)', '(18,26)', '(20,26)', '(22,26)', '(24,26)', '(26,0)', '(1,26)', '(26,1)', '(26,2)', '(3,26)', '(26,3)', '(26,4)', '(5,26)', '(26,5)', '(26,6)', '(7,26)', '(26,7)', '(26,8)', '(9,26)', '(26,9)', '(26,10)', '(11,26)', '(26,11)', '(26,12)', '(13,26)', '(26,13)', '(26,14)', '(15,26)', '(26,15)', '(26,16)', '(17,26)', '(26,17)', '(26,18)', '(19,26)', '(26,19)', '(26,20)', '(21,26)', '(26,21)', '(26,22)', '(23,26)', '(26,23)', '(26,24)', '(25,26)', '(26,25)', '(26,26)', '(0,27)', '(27,0)', '(27,1)', '(2,27)', '(27,2)', '(27,3)', '(4,27)', '(27,4)', '(27,5)', '(6,27)', '(27,6)', '(27,7)', '(8,27)', '(27,8)', '(27,9)', '(10,27)', '(27,10)', '(27,11)', '(12,27)', '(27,12)', '(27,13)', '(14,27)', '(27,14)', '(27,15)', '(16,27)', '(27,16)', '(27,17)', '(18,27)', '(27,18)', '(27,19)', '(20,27)', '(27,20)', '(27,21)', '(22,27)', '(27,22)', '(27,23)', '(24,27)', '(27,24)', '(27,25)', '(26,27)', '(27,26)', '(1,27)', '(3,27)', '(5,27)', '(7,27)', '(9,27)', '(11,27)', '(13,27)', '(15,27)', '(17,27)', '(19,27)', '(21,27)', '(23,27)', '(25,27)', '(27,27)', '(0,28)', '(2,28)', '(4,28)', '(6,28)', '(8,28)', '(10,28)', '(12,28)', '(14,28)', '(16,28)', '(18,28)', '(20,28)', '(22,28)', '(24,28)', '(26,28)', '(28,0)', '(1,28)', '(28,1)', '(28,2)', '(3,28)', '(28,3)', '(28,4)', '(5,28)', '(28,5)', '(28,6)', '(7,28)', '(28,7)', '(28,8)', '(9,28)', '(28,9)', '(28,10)', '(11,28)', '(28,11)', '(28,12)', '(13,28)', '(28,13)', '(28,14)', '(15,28)', '(28,15)', '(28,16)', '(17,28)', '(28,17)', '(28,18)', '(19,28)', '(28,19)', '(28,20)', '(21,28)', '(28,21)', '(28,22)', '(23,28)', '(28,23)', '(28,24)', '(25,28)', '(28,25)', '(28,26)', '(27,28)', '(28,27)', '(28,28)', '(0,29)', '(29,0)', '(29,1)', '(2,29)', '(29,2)', '(29,3)', '(4,29)', '(29,4)', '(29,5)', '(6,29)', '(29,6)', '(29,7)', '(8,29)', '(29,8)', '(29,9)', '(10,29)', '(29,10)', '(29,11)', '(12,29)', '(29,12)', '(29,13)', '(14,29)', '(29,14)', '(29,15)', '(16,29)', '(29,16)', '(29,17)', '(18,29)', '(29,18)', '(29,19)', '(20,29)', '(29,20)', '(29,21)', '(22,29)', '(29,22)', '(29,23)', '(24,29)', '(29,24)', '(29,25)', '(26,29)', '(29,26)', '(29,27)', '(28,29)', '(29,28)', '(1,29)', '(3,29)', '(5,29)', '(7,29)', '(9,29)', '(11,29)', '(13,29)', '(15,29)', '(17,29)', '(19,29)', '(21,29)', '(23,29)', '(25,29)', '(27,29)', '(29,29)', '(0,30)', '(2,30)', '(4,30)', '(6,30)', '(8,30)', '(10,30)', '(12,30)', '(14,30)', '(16,30)', '(18,30)', '(20,30)', '(22,30)', '(24,30)', '(26,30)', '(28,30)', '(30,0)', '(1,30)', '(30,1)', '(30,2)', '(3,30)', '(30,3)', '(30,4)', '(5,30)', '(30,5)', '(30,6)', '(7,30)', '(30,7)', '(30,8)', '(9,30)', '(30,9)', '(30,10)', '(11,30)', '(30,11)', '(30,12)', '(13,30)', '(30,13)', '(30,14)', '(15,30)', '(30,15)', '(30,16)', '(17,30)', '(30,17)', '(30,18)', '(19,30)', '(30,19)', '(30,20)', '(21,30)', '(30,21)', '(30,22)', '(23,30)', '(30,23)', '(30,24)', '(25,30)', '(30,25)', '(30,26)', '(27,30)', '(30,27)', '(30,28)', '(29,30)', '(30,29)', '(30,30)', '(0,31)', '(31,0)', '(31,1)', '(2,31)', '(31,2)', '(31,3)', '(4,31)', '(31,4)', '(31,5)', '(6,31)', '(31,6)', '(31,7)', '(8,31)', '(31,8)', '(31,9)', '(10,31)', '(31,10)', '(31,11)', '(12,31)', '(31,12)', '(31,13)', '(14,31)', '(31,14)', '(31,15)', '(16,31)', '(31,16)', '(31,17)', '(18,31)', '(31,18)', '(31,19)', '(20,31)', '(31,20)', '(31,21)', '(22,31)', '(31,22)', '(31,23)', '(24,31)', '(31,24)', '(31,25)', '(26,31)', '(31,26)', '(31,27)', '(28,31)', '(31,28)', '(31,29)', '(30,31)', '(31,30)', '(1,31)', '(3,31)', '(5,31)', '(7,31)', '(9,31)', '(11,31)', '(13,31)', '(15,31)', '(17,31)', '(19,31)', '(21,31)', '(23,31)', '(25,31)', '(27,31)', '(29,31)', '(31,31)', '(0,32)', '(2,32)', '(4,32)', '(6,32)', '(8,32)', '(10,32)', '(12,32)', '(14,32)', '(16,32)', '(18,32)', '(20,32)', '(22,32)', '(24,32)', '(26,32)', '(28,32)', '(30,32)', '(32,0)', '(1,32)', '(32,1)', '(32,2)', '(3,32)', '(32,3)', '(32,4)', '(5,32)', '(32,5)', '(32,6)', '(7,32)', '(32,7)', '(32,8)', '(9,32)', '(32,9)', '(32,10)', '(11,32)', '(32,11)', '(32,12)', '(13,32)', '(32,13)', '(32,14)', '(15,32)', '(32,15)', '(32,16)', '(17,32)', '(32,17)', '(32,18)', '(19,32)', '(32,19)', '(32,20)', '(21,32)', '(32,21)', '(32,22)', '(23,32)', '(32,23)', '(32,24)', '(25,32)', '(32,25)', '(32,26)', '(27,32)', '(32,27)', '(32,28)', '(29,32)', '(32,29)', '(32,30)', '(31,32)', '(32,31)', '(32,32)', '(0,33)', '(33,0)', '(33,1)', '(2,33)', '(33,2)', '(33,3)', '(4,33)', '(33,4)', '(33,5)', '(6,33)', '(33,6)', '(33,7)', '(8,33)', '(33,8)', '(33,9)', '(10,33)', '(33,10)', '(33,11)', '(12,33)', '(33,12)', '(33,13)', '(14,33)', '(33,14)', '(33,15)', '(16,33)', '(33,16)', '(33,17)', '(18,33)', '(33,18)', '(33,19)', '(20,33)', '(33,20)', '(33,21)', '(22,33)', '(33,22)', '(33,23)', '(24,33)', '(33,24)', '(33,25)', '(26,33)', '(33,26)', '(33,27)', '(28,33)', '(33,28)', '(33,29)', '(30,33)', '(33,30)', '(33,31)', '(32,33)', '(33,32)', '(1,33)', '(3,33)', '(5,33)', '(7,33)', '(9,33)', '(11,33)', '(13,33)', '(15,33)', '(17,33)', '(19,33)', '(21,33)', '(23,33)', '(25,33)', '(27,33)', '(29,33)', '(31,33)', '(33,33)', '(0,34)', '(2,34)', '(4,34)', '(6,34)', '(8,34)', '(10,34)', '(12,34)', '(14,34)', '(16,34)', '(18,34)', '(20,34)', '(22,34)', '(24,34)', '(26,34)', '(28,34)', '(30,34)', '(32,34)', '(34,0)', '(1,34)', '(34,1)', '(34,2)', '(3,34)', '(34,3)', '(34,4)', '(5,34)', '(34,5)', '(34,6)', '(7,34)', '(34,7)', '(34,8)', '(9,34)', '(34,9)', '(34,10)', '(11,34)', '(34,11)', '(34,12)', '(13,34)', '(34,13)', '(34,14)', '(15,34)', '(34,15)', '(34,16)', '(17,34)', '(34,17)', '(34,18)', '(19,34)', '(34,19)', '(34,20)', '(21,34)', '(34,21)', '(34,22)', '(23,34)', '(34,23)', '(34,24)', '(25,34)', '(34,25)', '(34,26)', '(27,34)', '(34,27)', '(34,28)', '(29,34)', '(34,29)', '(34,30)', '(31,34)', '(34,31)', '(34,32)', '(33,34)', '(34,33)', '(34,34)', '(0,35)', '(35,0)', '(35,1)', '(2,35)', '(35,2)', '(35,3)', '(4,35)', '(35,4)', '(35,5)', '(6,35)', '(35,6)', '(35,7)', '(8,35)', '(35,8)', '(35,9)', '(10,35)', '(35,10)', '(35,11)', '(12,35)', '(35,12)', '(35,13)', '(14,35)', '(35,14)', '(35,15)', '(16,35)', '(35,16)', '(35,17)', '(18,35)', '(35,18)', '(35,19)', '(20,35)', '(35,20)', '(35,21)', '(22,35)', '(35,22)', '(35,23)', '(24,35)', '(35,24)', '(35,25)', '(26,35)', '(35,26)', '(35,27)', '(28,35)', '(35,28)', '(35,29)', '(30,35)', '(35,30)', '(35,31)', '(32,35)', '(35,32)', '(35,33)', '(34,35)', '(35,34)', '(1,35)', '(3,35)', '(5,35)', '(7,35)', '(9,35)', '(11,35)', '(13,35)', '(15,35)', '(17,35)', '(19,35)', '(21,35)', '(23,35)', '(25,35)', '(27,35)', '(29,35)', '(31,35)', '(33,35)', '(35,35)', '(0,36)', '(2,36)', '(4,36)', '(6,36)', '(8,36)', '(10,36)', '(12,36)', '(14,36)', '(16,36)', '(18,36)', '(20,36)', '(22,36)', '(24,36)', '(26,36)', '(28,36)', '(30,36)', '(32,36)', '(34,36)', '(36,0)', '(1,36)', '(36,1)', '(36,2)', '(3,36)', '(36,3)', '(36,4)', '(5,36)', '(36,5)', '(36,6)', '(7,36)', '(36,7)', '(36,8)', '(9,36)', '(36,9)', '(36,10)', '(11,36)', '(36,11)', '(36,12)', '(13,36)', '(36,13)', '(36,14)', '(15,36)', '(36,15)', '(36,16)', '(17,36)', '(36,17)', '(36,18)', '(19,36)', '(36,19)', '(36,20)', '(21,36)', '(36,21)', '(36,22)', '(23,36)', '(36,23)', '(36,24)', '(25,36)', '(36,25)', '(36,26)', '(27,36)', '(36,27)', '(36,28)', '(29,36)', '(36,29)', '(36,30)', '(31,36)', '(36,31)', '(36,32)', '(33,36)', '(36,33)', '(36,34)', '(35,36)', '(36,35)', '(36,36)', '(0,37)', '(37,0)', '(37,1)', '(2,37)', '(37,2)', '(37,3)', '(4,37)', '(37,4)', '(37,5)', '(6,37)', '(37,6)', '(37,7)', '(8,37)', '(37,8)', '(37,9)', '(10,37)', '(37,10)', '(37,11)', '(12,37)', '(37,12)', '(37,13)', '(14,37)', '(37,14)', '(37,15)', '(16,37)', '(37,16)', '(37,17)', '(18,37)', '(37,18)', '(37,19)', '(20,37)', '(37,20)', '(37,21)', '(22,37)', '(37,22)', '(37,23)', '(24,37)', '(37,24)', '(37,25)', '(26,37)', '(37,26)', '(37,27)', '(28,37)', '(37,28)', '(37,29)', '(30,37)', '(37,30)', '(37,31)', '(32,37)', '(37,32)', '(37,33)', '(34,37)', '(37,34)', '(37,35)', '(36,37)', '(37,36)', '(1,37)', '(3,37)', '(5,37)', '(7,37)', '(9,37)', '(11,37)', '(13,37)', '(15,37)', '(17,37)', '(19,37)', '(21,37)', '(23,37)', '(25,37)', '(27,37)', '(29,37)', '(31,37)', '(33,37)', '(35,37)', '(37,37)', '(0,38)', '(2,38)', '(4,38)', '(6,38)', '(8,38)', '(10,38)', '(12,38)', '(14,38)', '(16,38)', '(18,38)', '(20,38)', '(22,38)', '(24,38)', '(26,38)', '(28,38)', '(30,38)', '(32,38)', '(34,38)', '(36,38)', '(38,0)', '(1,38)', '(38,1)', '(38,2)', '(3,38)', '(38,3)', '(38,4)', '(5,38)', '(38,5)', '(38,6)', '(7,38)', '(38,7)', '(38,8)', '(9,38)', '(38,9)', '(38,10)', '(11,38)', '(38,11)', '(38,12)', '(13,38)', '(38,13)', '(38,14)', '(15,38)', '(38,15)', '(38,16)', '(17,38)', '(38,17)', '(38,18)', '(19,38)', '(38,19)', '(38,20)', '(21,38)', '(38,21)', '(38,22)', '(23,38)', '(38,23)', '(38,24)', '(25,38)', '(38,25)', '(38,26)', '(27,38)', '(38,27)', '(38,28)', '(29,38)', '(38,29)', '(38,30)', '(31,38)', '(38,31)', '(38,32)', '(33,38)', '(38,33)', '(38,34)', '(35,38)', '(38,35)', '(38,36)', '(37,38)', '(38,37)', '(38,38)', '(0,39)', '(39,0)', '(39,1)', '(2,39)', '(39,2)', '(39,3)', '(4,39)', '(39,4)', '(39,5)', '(6,39)', '(39,6)', '(39,7)', '(8,39)', '(39,8)', '(39,9)', '(10,39)', '(39,10)', '(39,11)', '(12,39)', '(39,12)', '(39,13)', '(14,39)', '(39,14)', '(39,15)', '(16,39)', '(39,16)', '(39,17)', '(18,39)', '(39,18)', '(39,19)', '(20,39)', '(39,20)', '(39,21)', '(22,39)', '(39,22)', '(39,23)', '(24,39)', '(39,24)', '(39,25)', '(26,39)', '(39,26)', '(39,27)', '(28,39)', '(39,28)', '(39,29)', '(30,39)', '(39,30)', '(39,31)', '(32,39)', '(39,32)', '(39,33)', '(34,39)', '(39,34)', '(39,35)', '(36,39)', '(39,36)', '(39,37)', '(38,39)', '(39,38)', '(1,39)', '(3,39)', '(5,39)', '(7,39)', '(9,39)', '(11,39)', '(13,39)', '(15,39)', '(17,39)', '(19,39)', '(21,39)', '(23,39)', '(25,39)', '(27,39)', '(29,39)', '(31,39)', '(33,39)', '(35,39)', '(37,39)', '(39,39)', '(0,40)', '(2,40)', '(4,40)', '(6,40)', '(8,40)', '(10,40)', '(12,40)', '(14,40)', '(16,40)', '(18,40)', '(20,40)', '(22,40)', '(24,40)', '(26,40)', '(28,40)', '(30,40)', '(32,40)', '(34,40)', '(36,40)', '(38,40)', '(40,0)', '(1,40)', '(40,1)', '(40,2)', '(3,40)', '(40,3)', '(40,4)', '(5,40)', '(40,5)', '(40,6)', '(7,40)', '(40,7)', '(40,8)', '(9,40)', '(40,9)', '(40,10)', '(11,40)', '(40,11)', '(40,12)', '(13,40)', '(40,13)', '(40,14)', '(15,40)', '(40,15)', '(40,16)', '(17,40)', '(40,17)', '(40,18)', '(19,40)', '(40,19)', '(40,20)', '(21,40)', '(40,21)', '(40,22)', '(23,40)', '(40,23)', '(40,24)', '(25,40)', '(40,25)', '(40,26)', '(27,40)', '(40,27)', '(40,28)', '(29,40)', '(40,29)', '(40,30)', '(31,40)', '(40,31)', '(40,32)', '(33,40)', '(40,33)', '(40,34)', '(35,40)', '(40,35)', '(40,36)', '(37,40)', '(40,37)', '(40,38)', '(39,40)', '(40,39)', '(40,40)', '(0,41)', '(41,0)', '(41,1)', '(2,41)', '(41,2)', '(41,3)', '(4,41)', '(41,4)', '(41,5)', '(6,41)', '(41,6)', '(41,7)', '(8,41)', '(41,8)', '(41,9)', '(10,41)', '(41,10)', '(41,11)', '(12,41)', '(41,12)', '(41,13)', '(14,41)', '(41,14)', '(41,15)', '(16,41)', '(41,16)', '(41,17)', '(18,41)', '(41,18)', '(41,19)', '(20,41)', '(41,20)', '(41,21)', '(22,41)', '(41,22)', '(41,23)', '(24,41)', '(41,24)', '(41,25)', '(26,41)', '(41,26)', '(41,27)', '(28,41)', '(41,28)', '(41,29)', '(30,41)', '(41,30)', '(41,31)', '(32,41)', '(41,32)', '(41,33)', '(34,41)', '(41,34)', '(41,35)', '(36,41)', '(41,36)', '(41,37)', '(38,41)', '(41,38)', '(41,39)', '(40,41)', '(41,40)', '(1,41)', '(3,41)', '(5,41)', '(7,41)', '(9,41)', '(11,41)', '(13,41)', '(15,41)', '(17,41)', '(19,41)', '(21,41)', '(23,41)', '(25,41)', '(27,41)', '(29,41)', '(31,41)', '(33,41)', '(35,41)', '(37,41)', '(39,41)', '(41,41)', '(0,42)', '(2,42)', '(4,42)', '(6,42)', '(8,42)', '(10,42)', '(12,42)', '(14,42)', '(16,42)', '(18,42)', '(20,42)', '(22,42)', '(24,42)', '(26,42)', '(28,42)', '(30,42)', '(32,42)', '(34,42)', '(36,42)', '(38,42)', '(40,42)', '(42,0)', '(1,42)', '(42,1)', '(42,2)', '(3,42)', '(42,3)', '(42,4)', '(5,42)', '(42,5)', '(42,6)', '(7,42)', '(42,7)', '(42,8)', '(9,42)', '(42,9)', '(42,10)', '(11,42)', '(42,11)', '(42,12)', '(13,42)', '(42,13)', '(42,14)', '(15,42)', '(42,15)', '(42,16)', '(17,42)', '(42,17)', '(42,18)', '(19,42)', '(42,19)', '(42,20)', '(21,42)', '(42,21)', '(42,22)', '(23,42)', '(42,23)', '(42,24)', '(25,42)', '(42,25)', '(42,26)', '(27,42)', '(42,27)', '(42,28)', '(29,42)', '(42,29)', '(42,30)', '(31,42)', '(42,31)', '(42,32)', '(33,42)', '(42,33)', '(42,34)', '(35,42)', '(42,35)', '(42,36)', '(37,42)', '(42,37)', '(42,38)', '(39,42)', '(42,39)', '(42,40)', '(41,42)', '(42,41)', '(42,42)', '(0,43)', '(43,0)', '(43,1)', '(2,43)', '(43,2)', '(43,3)', '(4,43)', '(43,4)', '(43,5)', '(6,43)', '(43,6)', '(43,7)', '(8,43)', '(43,8)', '(43,9)', '(10,43)', '(43,10)', '(43,11)', '(12,43)', '(43,12)', '(43,13)', '(14,43)', '(43,14)', '(43,15)', '(16,43)', '(43,16)', '(43,17)', '(18,43)', '(43,18)', '(43,19)', '(20,43)', '(43,20)', '(43,21)', '(22,43)', '(43,22)', '(43,23)', '(24,43)', '(43,24)', '(43,25)', '(26,43)', '(43,26)', '(43,27)', '(28,43)', '(43,28)', '(43,29)', '(30,43)', '(43,30)', '(43,31)', '(32,43)', '(43,32)', '(43,33)', '(34,43)', '(43,34)', '(43,35)', '(36,43)', '(43,36)', '(43,37)', '(38,43)', '(43,38)', '(43,39)', '(40,43)', '(43,40)', '(43,41)', '(42,43)', '(43,42)', '(1,43)', '(3,43)', '(5,43)', '(7,43)', '(9,43)', '(11,43)', '(13,43)', '(15,43)', '(17,43)', '(19,43)', '(21,43)', '(23,43)', '(25,43)', '(27,43)', '(29,43)', '(31,43)', '(33,43)', '(35,43)', '(37,43)', '(39,43)', '(41,43)', '(43,43)', '(0,44)', '(2,44)', '(4,44)', '(6,44)', '(8,44)', '(10,44)', '(12,44)', '(14,44)', '(16,44)', '(18,44)', '(20,44)', '(22,44)', '(24,44)', '(26,44)', '(28,44)', '(30,44)', '(32,44)', '(34,44)', '(36,44)', '(38,44)', '(40,44)', '(42,44)', '(44,0)', '(1,44)', '(44,1)', '(44,2)', '(3,44)', '(44,3)', '(44,4)', '(5,44)', '(44,5)', '(44,6)', '(7,44)', '(44,7)', '(44,8)', '(9,44)', '(44,9)', '(44,10)', '(11,44)', '(44,11)', '(44,12)', '(13,44)', '(44,13)', '(44,14)', '(15,44)', '(44,15)', '(44,16)', '(17,44)', '(44,17)', '(44,18)', '(19,44)', '(44,19)', '(44,20)', '(21,44)', '(44,21)', '(44,22)', '(23,44)', '(44,23)', '(44,24)', '(25,44)', '(44,25)', '(44,26)', '(27,44)', '(44,27)', '(44,28)', '(29,44)', '(44,29)', '(44,30)', '(31,44)', '(44,31)', '(44,32)', '(33,44)', '(44,33)', '(44,34)', '(35,44)', '(44,35)', '(44,36)', '(37,44)', '(44,37)', '(44,38)', '(39,44)', '(44,39)', '(44,40)', '(41,44)', '(44,41)', '(44,42)', '(43,44)', '(44,43)', '(44,44)', '(0,45)', '(45,0)', '(45,1)', '(2,45)', '(45,2)', '(45,3)', '(4,45)', '(45,4)', '(45,5)', '(6,45)', '(45,6)', '(45,7)', '(8,45)', '(45,8)', '(45,9)', '(10,45)', '(45,10)', '(45,11)', '(12,45)', '(45,12)', '(45,13)', '(14,45)', '(45,14)', '(45,15)', '(16,45)', '(45,16)', '(45,17)', '(18,45)', '(45,18)', '(45,19)', '(20,45)', '(45,20)', '(45,21)', '(22,45)', '(45,22)', '(45,23)', '(24,45)', '(45,24)', '(45,25)', '(26,45)', '(45,26)', '(45,27)', '(28,45)', '(45,28)', '(45,29)', '(30,45)', '(45,30)', '(45,31)', '(32,45)', '(45,32)', '(45,33)', '(34,45)', '(45,34)', '(45,35)', '(36,45)', '(45,36)', '(45,37)', '(38,45)', '(45,38)', '(45,39)', '(40,45)', '(45,40)', '(45,41)', '(42,45)', '(45,42)', '(45,43)', '(44,45)', '(45,44)', '(1,45)', '(3,45)', '(5,45)', '(7,45)', '(9,45)', '(11,45)', '(13,45)', '(15,45)', '(17,45)', '(19,45)', '(21,45)', '(23,45)', '(25,45)', '(27,45)', '(29,45)', '(31,45)', '(33,45)', '(35,45)', '(37,45)', '(39,45)', '(41,45)', '(43,45)', '(45,45)', '(0,46)', '(2,46)', '(4,46)', '(6,46)', '(8,46)', '(10,46)', '(12,46)', '(14,46)', '(16,46)', '(18,46)', '(20,46)', '(22,46)', '(24,46)', '(26,46)', '(28,46)', '(30,46)', '(32,46)', '(34,46)', '(36,46)', '(38,46)', '(40,46)', '(42,46)', '(44,46)', '(46,0)', '(1,46)', '(46,1)', '(46,2)', '(3,46)', '(46,3)', '(46,4)', '(5,46)', '(46,5)', '(46,6)', '(7,46)', '(46,7)', '(46,8)', '(9,46)', '(46,9)', '(46,10)', '(11,46)', '(46,11)', '(46,12)', '(13,46)', '(46,13)', '(46,14)', '(15,46)', '(46,15)', '(46,16)', '(17,46)', '(46,17)', '(46,18)', '(19,46)', '(46,19)', '(46,20)', '(21,46)', '(46,21)', '(46,22)', '(23,46)', '(46,23)', '(46,24)', '(25,46)', '(46,25)', '(46,26)', '(27,46)', '(46,27)', '(46,28)', '(29,46)', '(46,29)', '(46,30)', '(31,46)', '(46,31)', '(46,32)', '(33,46)', '(46,33)', '(46,34)', '(35,46)', '(46,35)', '(46,36)', '(37,46)', '(46,37)', '(46,38)', '(39,46)', '(46,39)', '(46,40)', '(41,46)', '(46,41)', '(46,42)', '(43,46)', '(46,43)', '(46,44)', '(45,46)', '(46,45)', '(46,46)', '(0,47)', '(47,0)', '(47,1)', '(2,47)', '(47,2)', '(47,3)', '(4,47)', '(47,4)', '(47,5)', '(6,47)', '(47,6)', '(47,7)', '(8,47)', '(47,8)', '(47,9)', '(10,47)', '(47,10)', '(47,11)', '(12,47)', '(47,12)', '(47,13)', '(14,47)', '(47,14)', '(47,15)', '(16,47)', '(47,16)', '(47,17)', '(18,47)', '(47,18)', '(47,19)', '(20,47)', '(47,20)', '(47,21)', '(22,47)', '(47,22)', '(47,23)', '(24,47)', '(47,24)', '(47,25)', '(26,47)', '(47,26)', '(47,27)', '(28,47)', '(47,28)', '(47,29)', '(30,47)', '(47,30)', '(47,31)', '(32,47)', '(47,32)', '(47,33)', '(34,47)', '(47,34)', '(47,35)', '(36,47)', '(47,36)', '(47,37)', '(38,47)', '(47,38)', '(47,39)', '(40,47)', '(47,40)', '(47,41)', '(42,47)', '(47,42)', '(47,43)', '(44,47)', '(47,44)', '(47,45)', '(46,47)', '(47,46)', '(1,47)', '(3,47)', '(5,47)', '(7,47)', '(9,47)', '(11,47)', '(13,47)', '(15,47)', '(17,47)', '(19,47)', '(21,47)', '(23,47)', '(25,47)', '(27,47)', '(29,47)', '(31,47)', '(33,47)', '(35,47)', '(37,47)', '(39,47)', '(41,47)', '(43,47)', '(45,47)', '(47,47)', '(0,48)', '(2,48)', '(4,48)', '(6,48)', '(8,48)', '(10,48)', '(12,48)', '(14,48)', '(16,48)', '(18,48)', '(20,48)', '(22,48)', '(24,48)', '(26,48)', '(28,48)', '(30,48)', '(32,48)', '(34,48)', '(36,48)', '(38,48)', '(40,48)', '(42,48)', '(44,48)', '(46,48)', '(48,0)', '(1,48)', '(48,1)', '(48,2)', '(3,48)', '(48,3)', '(48,4)', '(5,48)', '(48,5)', '(48,6)', '(7,48)', '(48,7)', '(48,8)', '(9,48)', '(48,9)', '(48,10)', '(11,48)', '(48,11)', '(48,12)', '(13,48)', '(48,13)', '(48,14)', '(15,48)', '(48,15)', '(48,16)', '(17,48)', '(48,17)', '(48,18)', '(19,48)', '(48,19)', '(48,20)', '(21,48)', '(48,21)', '(48,22)', '(23,48)', '(48,23)', '(48,24)', '(25,48)', '(48,25)', '(48,26)', '(27,48)', '(48,27)', '(48,28)', '(29,48)', '(48,29)', '(48,30)', '(31,48)', '(48,31)', '(48,32)', '(33,48)', '(48,33)', '(48,34)', '(35,48)', '(48,35)', '(48,36)', '(37,48)', '(48,37)', '(48,38)', '(39,48)', '(48,39)', '(48,40)', '(41,48)', '(48,41)', '(48,42)', '(43,48)', '(48,43)', '(48,44)', '(45,48)', '(48,45)', '(48,46)', '(47,48)', '(48,47)', '(48,48)', '(0,49)', '(49,0)', '(49,1)', '(2,49)', '(49,2)', '(49,3)', '(4,49)', '(49,4)', '(49,5)', '(6,49)', '(49,6)', '(49,7)', '(8,49)', '(49,8)', '(49,9)', '(10,49)', '(49,10)', '(49,11)', '(12,49)', '(49,12)', '(49,13)', '(14,49)', '(49,14)', '(49,15)', '(16,49)', '(49,16)', '(49,17)', '(18,49)', '(49,18)', '(49,19)', '(20,49)', '(49,20)', '(49,21)', '(22,49)', '(49,22)', '(49,23)', '(24,49)', '(49,24)', '(49,25)', '(26,49)', '(49,26)', '(49,27)', '(28,49)', '(49,28)', '(49,29)', '(30,49)', '(49,30)', '(49,31)', '(32,49)', '(49,32)', '(49,33)', '(34,49)', '(49,34)', '(49,35)', '(36,49)', '(49,36)', '(49,37)', '(38,49)', '(49,38)', '(49,39)', '(40,49)', '(49,40)', '(49,41)', '(42,49)', '(49,42)', '(49,43)', '(44,49)', '(49,44)', '(49,45)', '(46,49)', '(49,46)', '(49,47)', '(48,49)', '(49,48)', '(1,49)', '(3,49)', '(5,49)', '(7,49)', '(9,49)', '(11,49)', '(13,49)', '(15,49)', '(17,49)', '(19,49)', '(21,49)', '(23,49)', '(25,49)', '(27,49)', '(29,49)', '(31,49)', '(33,49)', '(35,49)', '(37,49)', '(39,49)', '(41,49)', '(43,49)', '(45,49)', '(47,49)', '(49,49)']` +list of `VOCAB` tokens, in order + - `VOCAB_TOKEN_TO_INDEX: dict[str, int] = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '<-->': 8, ';': 9, '': 10, '(': 11, ',': 12, ')': 13, '=': 14, '||': 15, ':': 16, 'THEN': 17, '-': 18, '': 19, 'TARGET_A': 20, 'TARGET_B': 21, 'TARGET_C': 22, 'TARGET_D': 23, 'TARGET_E': 24, 'TARGET_F': 25, 'TARGET_G': 26, 'TARGET_H': 27, 'TARGET_I': 28, 'TARGET_J': 29, 'TARGET_K': 30, 'TARGET_L': 31, 'TARGET_M': 32, 'TARGET_N': 33, 'TARGET_O': 34, 'TARGET_P': 35, 'TARGET_Q': 36, 'TARGET_R': 37, 'TARGET_S': 38, 'TARGET_T': 39, 'TARGET_U': 40, 'TARGET_V': 41, 'TARGET_W': 42, 'TARGET_X': 43, 'TARGET_Y': 44, 'TARGET_Z': 45, 'TARGET_NORTH': 46, 'TARGET_SOUTH': 47, 'TARGET_EAST': 48, 'TARGET_WEST': 49, 'TARGET_NORTHEAST': 50, 'TARGET_NORTHWEST': 51, 'TARGET_SOUTHEAST': 52, 'TARGET_SOUTHWEST': 53, 'TARGET_CENTER': 54, 'NORTH': 55, 'SOUTH': 56, 'EAST': 57, 'WEST': 58, 'FORWARD': 59, 'BACKWARD': 60, 'LEFT': 61, 'RIGHT': 62, 'STAY': 63, '+0': 64, '+1': 65, '+2': 66, '+3': 67, '+4': 68, '+5': 69, '+6': 70, '+7': 71, '+8': 72, '+9': 73, '+10': 74, '+11': 75, '+12': 76, '+13': 77, '+14': 78, '+15': 79, '+16': 80, '+17': 81, '+18': 82, '+19': 83, '+20': 84, '+21': 85, '+22': 86, '+23': 87, '+24': 88, '+25': 89, '+26': 90, '+27': 91, '+28': 92, '+29': 93, '+30': 94, '+31': 95, '+32': 96, '+33': 97, '+34': 98, '+35': 99, '+36': 100, '+37': 101, '+38': 102, '+39': 103, '+40': 104, '+41': 105, '+42': 106, '+43': 107, '+44': 108, '+45': 109, '+46': 110, '+47': 111, '+48': 112, '+49': 113, '+50': 114, '+51': 115, '+52': 116, '+53': 117, '+54': 118, '+55': 119, '+56': 120, '+57': 121, '+58': 122, '+59': 123, '+60': 124, '+61': 125, '+62': 126, '+63': 127, '+64': 128, '+65': 129, '+66': 130, '+67': 131, '+68': 132, '+69': 133, '+70': 134, '+71': 135, '+72': 136, '+73': 137, '+74': 138, '+75': 139, '+76': 140, '+77': 141, '+78': 142, '+79': 143, '+80': 144, '+81': 145, '+82': 146, '+83': 147, '+84': 148, '+85': 149, '+86': 150, '+87': 151, '+88': 152, '+89': 153, '+90': 154, '+91': 155, '+92': 156, '+93': 157, '+94': 158, '+95': 159, '+96': 160, '+97': 161, '+98': 162, '+99': 163, '+100': 164, '+101': 165, '+102': 166, '+103': 167, '+104': 168, '+105': 169, '+106': 170, '+107': 171, '+108': 172, '+109': 173, '+110': 174, '+111': 175, '+112': 176, '+113': 177, '+114': 178, '+115': 179, '+116': 180, '+117': 181, '+118': 182, '+119': 183, '+120': 184, '+121': 185, '+122': 186, '+123': 187, '+124': 188, '+125': 189, '+126': 190, '+127': 191, '+128': 192, '+129': 193, '+130': 194, '+131': 195, '+132': 196, '+133': 197, '+134': 198, '+135': 199, '+136': 200, '+137': 201, '+138': 202, '+139': 203, '+140': 204, '+141': 205, '+142': 206, '+143': 207, '+144': 208, '+145': 209, '+146': 210, '+147': 211, '+148': 212, '+149': 213, '+150': 214, '+151': 215, '+152': 216, '+153': 217, '+154': 218, '+155': 219, '+156': 220, '+157': 221, '+158': 222, '+159': 223, '+160': 224, '+161': 225, '+162': 226, '+163': 227, '+164': 228, '+165': 229, '+166': 230, '+167': 231, '+168': 232, '+169': 233, '+170': 234, '+171': 235, '+172': 236, '+173': 237, '+174': 238, '+175': 239, '+176': 240, '+177': 241, '+178': 242, '+179': 243, '+180': 244, '+181': 245, '+182': 246, '+183': 247, '+184': 248, '+185': 249, '+186': 250, '+187': 251, '+188': 252, '+189': 253, '+190': 254, '+191': 255, '+192': 256, '+193': 257, '+194': 258, '+195': 259, '+196': 260, '+197': 261, '+198': 262, '+199': 263, '+200': 264, '+201': 265, '+202': 266, '+203': 267, '+204': 268, '+205': 269, '+206': 270, '+207': 271, '+208': 272, '+209': 273, '+210': 274, '+211': 275, '+212': 276, '+213': 277, '+214': 278, '+215': 279, '+216': 280, '+217': 281, '+218': 282, '+219': 283, '+220': 284, '+221': 285, '+222': 286, '+223': 287, '+224': 288, '+225': 289, '+226': 290, '+227': 291, '+228': 292, '+229': 293, '+230': 294, '+231': 295, '+232': 296, '+233': 297, '+234': 298, '+235': 299, '+236': 300, '+237': 301, '+238': 302, '+239': 303, '+240': 304, '+241': 305, '+242': 306, '+243': 307, '+244': 308, '+245': 309, '+246': 310, '+247': 311, '+248': 312, '+249': 313, '+250': 314, '+251': 315, '+252': 316, '+253': 317, '+254': 318, '+255': 319, '0': 320, '1': 321, '2': 322, '3': 323, '4': 324, '5': 325, '6': 326, '7': 327, '8': 328, '9': 329, '10': 330, '11': 331, '12': 332, '13': 333, '14': 334, '15': 335, '16': 336, '17': 337, '18': 338, '19': 339, '20': 340, '21': 341, '22': 342, '23': 343, '24': 344, '25': 345, '26': 346, '27': 347, '28': 348, '29': 349, '30': 350, '31': 351, '32': 352, '33': 353, '34': 354, '35': 355, '36': 356, '37': 357, '38': 358, '39': 359, '40': 360, '41': 361, '42': 362, '43': 363, '44': 364, '45': 365, '46': 366, '47': 367, '48': 368, '49': 369, '50': 370, '51': 371, '52': 372, '53': 373, '54': 374, '55': 375, '56': 376, '57': 377, '58': 378, '59': 379, '60': 380, '61': 381, '62': 382, '63': 383, '64': 384, '65': 385, '66': 386, '67': 387, '68': 388, '69': 389, '70': 390, '71': 391, '72': 392, '73': 393, '74': 394, '75': 395, '76': 396, '77': 397, '78': 398, '79': 399, '80': 400, '81': 401, '82': 402, '83': 403, '84': 404, '85': 405, '86': 406, '87': 407, '88': 408, '89': 409, '90': 410, '91': 411, '92': 412, '93': 413, '94': 414, '95': 415, '96': 416, '97': 417, '98': 418, '99': 419, '100': 420, '101': 421, '102': 422, '103': 423, '104': 424, '105': 425, '106': 426, '107': 427, '108': 428, '109': 429, '110': 430, '111': 431, '112': 432, '113': 433, '114': 434, '115': 435, '116': 436, '117': 437, '118': 438, '119': 439, '120': 440, '121': 441, '122': 442, '123': 443, '124': 444, '125': 445, '126': 446, '127': 447, '-256': 448, '-255': 449, '-254': 450, '-253': 451, '-252': 452, '-251': 453, '-250': 454, '-249': 455, '-248': 456, '-247': 457, '-246': 458, '-245': 459, '-244': 460, '-243': 461, '-242': 462, '-241': 463, '-240': 464, '-239': 465, '-238': 466, '-237': 467, '-236': 468, '-235': 469, '-234': 470, '-233': 471, '-232': 472, '-231': 473, '-230': 474, '-229': 475, '-228': 476, '-227': 477, '-226': 478, '-225': 479, '-224': 480, '-223': 481, '-222': 482, '-221': 483, '-220': 484, '-219': 485, '-218': 486, '-217': 487, '-216': 488, '-215': 489, '-214': 490, '-213': 491, '-212': 492, '-211': 493, '-210': 494, '-209': 495, '-208': 496, '-207': 497, '-206': 498, '-205': 499, '-204': 500, '-203': 501, '-202': 502, '-201': 503, '-200': 504, '-199': 505, '-198': 506, '-197': 507, '-196': 508, '-195': 509, '-194': 510, '-193': 511, '-192': 512, '-191': 513, '-190': 514, '-189': 515, '-188': 516, '-187': 517, '-186': 518, '-185': 519, '-184': 520, '-183': 521, '-182': 522, '-181': 523, '-180': 524, '-179': 525, '-178': 526, '-177': 527, '-176': 528, '-175': 529, '-174': 530, '-173': 531, '-172': 532, '-171': 533, '-170': 534, '-169': 535, '-168': 536, '-167': 537, '-166': 538, '-165': 539, '-164': 540, '-163': 541, '-162': 542, '-161': 543, '-160': 544, '-159': 545, '-158': 546, '-157': 547, '-156': 548, '-155': 549, '-154': 550, '-153': 551, '-152': 552, '-151': 553, '-150': 554, '-149': 555, '-148': 556, '-147': 557, '-146': 558, '-145': 559, '-144': 560, '-143': 561, '-142': 562, '-141': 563, '-140': 564, '-139': 565, '-138': 566, '-137': 567, '-136': 568, '-135': 569, '-134': 570, '-133': 571, '-132': 572, '-131': 573, '-130': 574, '-129': 575, '-128': 576, '-127': 577, '-126': 578, '-125': 579, '-124': 580, '-123': 581, '-122': 582, '-121': 583, '-120': 584, '-119': 585, '-118': 586, '-117': 587, '-116': 588, '-115': 589, '-114': 590, '-113': 591, '-112': 592, '-111': 593, '-110': 594, '-109': 595, '-108': 596, '-107': 597, '-106': 598, '-105': 599, '-104': 600, '-103': 601, '-102': 602, '-101': 603, '-100': 604, '-99': 605, '-98': 606, '-97': 607, '-96': 608, '-95': 609, '-94': 610, '-93': 611, '-92': 612, '-91': 613, '-90': 614, '-89': 615, '-88': 616, '-87': 617, '-86': 618, '-85': 619, '-84': 620, '-83': 621, '-82': 622, '-81': 623, '-80': 624, '-79': 625, '-78': 626, '-77': 627, '-76': 628, '-75': 629, '-74': 630, '-73': 631, '-72': 632, '-71': 633, '-70': 634, '-69': 635, '-68': 636, '-67': 637, '-66': 638, '-65': 639, '-64': 640, '-63': 641, '-62': 642, '-61': 643, '-60': 644, '-59': 645, '-58': 646, '-57': 647, '-56': 648, '-55': 649, '-54': 650, '-53': 651, '-52': 652, '-51': 653, '-50': 654, '-49': 655, '-48': 656, '-47': 657, '-46': 658, '-45': 659, '-44': 660, '-43': 661, '-42': 662, '-41': 663, '-40': 664, '-39': 665, '-38': 666, '-37': 667, '-36': 668, '-35': 669, '-34': 670, '-33': 671, '-32': 672, '-31': 673, '-30': 674, '-29': 675, '-28': 676, '-27': 677, '-26': 678, '-25': 679, '-24': 680, '-23': 681, '-22': 682, '-21': 683, '-20': 684, '-19': 685, '-18': 686, '-17': 687, '-16': 688, '-15': 689, '-14': 690, '-13': 691, '-12': 692, '-11': 693, '-10': 694, '-9': 695, '-8': 696, '-7': 697, '-6': 698, '-5': 699, '-4': 700, '-3': 701, '-2': 702, '-1': 703, 'STEP': 704, 'ADJ_GROUP': 705, '&': 706, '': 707, '': 708, '': 709, '': 710, '': 711, '': 712, '': 713, '': 714, '': 715, '': 716, '': 717, '': 718, '': 719, '': 720, '': 721, '': 722, '': 723, '': 724, '': 725, '': 726, '': 727, '': 728, '': 729, '': 730, '': 731, '': 732, '': 733, '': 734, '': 735, '': 736, '': 737, '': 738, '': 739, '': 740, '': 741, '': 742, '': 743, '': 744, '': 745, '': 746, '': 747, '': 748, '': 749, '': 750, '': 751, '': 752, '': 753, '': 754, '': 755, '': 756, '': 757, '': 758, '': 759, '': 760, '': 761, '': 762, '': 763, '': 764, '': 765, '': 766, '': 767, '': 768, '': 769, '': 770, '': 771, '': 772, '': 773, '': 774, '': 775, '': 776, '': 777, '': 778, '': 779, '': 780, '': 781, '': 782, '': 783, '': 784, '': 785, '': 786, '': 787, '': 788, '': 789, '': 790, '': 791, '': 792, '': 793, '': 794, '': 795, '': 796, '': 797, '': 798, '': 799, '': 800, '': 801, '': 802, '': 803, '': 804, '': 805, '': 806, '': 807, '': 808, '': 809, '': 810, '': 811, '': 812, '': 813, '': 814, '': 815, '': 816, '': 817, '': 818, '': 819, '': 820, '': 821, '': 822, '': 823, '': 824, '': 825, '': 826, '': 827, '': 828, '': 829, '': 830, '': 831, '': 832, '': 833, '': 834, '': 835, '': 836, '': 837, '': 838, '': 839, '': 840, '': 841, '': 842, '': 843, '': 844, '': 845, '': 846, '': 847, '': 848, '': 849, '': 850, '': 851, '': 852, '': 853, '': 854, '': 855, '': 856, '': 857, '': 858, '': 859, '': 860, '': 861, '': 862, '': 863, '': 864, '': 865, '': 866, '': 867, '': 868, '': 869, '': 870, '': 871, '': 872, '': 873, '': 874, '': 875, '': 876, '': 877, '': 878, '': 879, '': 880, '': 881, '': 882, '': 883, '': 884, '': 885, '': 886, '': 887, '': 888, '': 889, '': 890, '': 891, '': 892, '': 893, '': 894, '': 895, '': 896, '': 897, '': 898, '': 899, '': 900, '': 901, '': 902, '': 903, '': 904, '': 905, '': 906, '': 907, '': 908, '': 909, '': 910, '': 911, '': 912, '': 913, '': 914, '': 915, '': 916, '': 917, '': 918, '': 919, '': 920, '': 921, '': 922, '': 923, '': 924, '': 925, '': 926, '': 927, '': 928, '': 929, '': 930, '': 931, '': 932, '': 933, '': 934, '': 935, '': 936, '': 937, '': 938, '': 939, '': 940, '': 941, '': 942, '': 943, '': 944, '': 945, '': 946, '': 947, '': 948, '': 949, '': 950, '': 951, '': 952, '': 953, '': 954, '': 955, '': 956, '': 957, '': 958, '': 959, '': 960, '': 961, '': 962, '': 963, '': 964, '': 965, '': 966, '': 967, '': 968, '': 969, '': 970, '': 971, '': 972, '': 973, '': 974, '': 975, '': 976, '': 977, '': 978, '': 979, '': 980, '': 981, '': 982, '': 983, '': 984, '': 985, '': 986, '': 987, '': 988, '': 989, '': 990, '': 991, '': 992, '': 993, '': 994, '': 995, '': 996, '': 997, '': 998, '': 999, '': 1000, '': 1001, '': 1002, '': 1003, '': 1004, '': 1005, '': 1006, '': 1007, '': 1008, '': 1009, '': 1010, '': 1011, '': 1012, '': 1013, '': 1014, '': 1015, '': 1016, '': 1017, '': 1018, '': 1019, '': 1020, '': 1021, '': 1022, '': 1023, '': 1024, '': 1025, '': 1026, '': 1027, '': 1028, '': 1029, '': 1030, '': 1031, '': 1032, '': 1033, '': 1034, '': 1035, '': 1036, '': 1037, '': 1038, '': 1039, '': 1040, '': 1041, '': 1042, '': 1043, '': 1044, '': 1045, '': 1046, '': 1047, '': 1048, '': 1049, '': 1050, '': 1051, '': 1052, '': 1053, '': 1054, '': 1055, '': 1056, '': 1057, '': 1058, '': 1059, '': 1060, '': 1061, '': 1062, '': 1063, '': 1064, '': 1065, '': 1066, '': 1067, '': 1068, '': 1069, '': 1070, '': 1071, '': 1072, '': 1073, '': 1074, '': 1075, '': 1076, '': 1077, '': 1078, '': 1079, '': 1080, '': 1081, '': 1082, '': 1083, '': 1084, '': 1085, '': 1086, '': 1087, '': 1088, '': 1089, '': 1090, '': 1091, '': 1092, '': 1093, '': 1094, '': 1095, '': 1096, '': 1097, '': 1098, '': 1099, '': 1100, '': 1101, '': 1102, '': 1103, '': 1104, '': 1105, '': 1106, '': 1107, '': 1108, '': 1109, '': 1110, '': 1111, '': 1112, '': 1113, '': 1114, '': 1115, '': 1116, '': 1117, '': 1118, '': 1119, '': 1120, '': 1121, '': 1122, '': 1123, '': 1124, '': 1125, '': 1126, '': 1127, '': 1128, '': 1129, '': 1130, '': 1131, '': 1132, '': 1133, '': 1134, '': 1135, '': 1136, '': 1137, '': 1138, '': 1139, '': 1140, '': 1141, '': 1142, '': 1143, '': 1144, '': 1145, '': 1146, '': 1147, '': 1148, '': 1149, '': 1150, '': 1151, '': 1152, '': 1153, '': 1154, '': 1155, '': 1156, '': 1157, '': 1158, '': 1159, '': 1160, '': 1161, '': 1162, '': 1163, '': 1164, '': 1165, '': 1166, '': 1167, '': 1168, '': 1169, '': 1170, '': 1171, '': 1172, '': 1173, '': 1174, '': 1175, '': 1176, '': 1177, '': 1178, '': 1179, '': 1180, '': 1181, '': 1182, '': 1183, '': 1184, '': 1185, '': 1186, '': 1187, '': 1188, '': 1189, '': 1190, '': 1191, '': 1192, '': 1193, '': 1194, '': 1195, '': 1196, '': 1197, '': 1198, '': 1199, '': 1200, '': 1201, '': 1202, '': 1203, '': 1204, '': 1205, '': 1206, '': 1207, '': 1208, '': 1209, '': 1210, '': 1211, '': 1212, '': 1213, '': 1214, '': 1215, '': 1216, '': 1217, '': 1218, '': 1219, '': 1220, '': 1221, '': 1222, '': 1223, '': 1224, '': 1225, '': 1226, '': 1227, '': 1228, '': 1229, '': 1230, '': 1231, '': 1232, '': 1233, '': 1234, '': 1235, '': 1236, '': 1237, '': 1238, '': 1239, '': 1240, '': 1241, '': 1242, '': 1243, '': 1244, '': 1245, '': 1246, '': 1247, '': 1248, '': 1249, '': 1250, '': 1251, '': 1252, '': 1253, '': 1254, '': 1255, '': 1256, '': 1257, '': 1258, '': 1259, '': 1260, '': 1261, '': 1262, '': 1263, '': 1264, '': 1265, '': 1266, '': 1267, '': 1268, '': 1269, '': 1270, '': 1271, '': 1272, '': 1273, '': 1274, '': 1275, '': 1276, '': 1277, '': 1278, '': 1279, '': 1280, '': 1281, '': 1282, '': 1283, '': 1284, '': 1285, '': 1286, '': 1287, '': 1288, '': 1289, '': 1290, '': 1291, '': 1292, '': 1293, '': 1294, '': 1295, '': 1296, '': 1297, '': 1298, '': 1299, '': 1300, '': 1301, '': 1302, '': 1303, '': 1304, '': 1305, '': 1306, '': 1307, '': 1308, '': 1309, '': 1310, '': 1311, '': 1312, '': 1313, '': 1314, '': 1315, '': 1316, '': 1317, '': 1318, '': 1319, '': 1320, '': 1321, '': 1322, '': 1323, '': 1324, '': 1325, '': 1326, '': 1327, '': 1328, '': 1329, '': 1330, '': 1331, '': 1332, '': 1333, '': 1334, '': 1335, '': 1336, '': 1337, '': 1338, '': 1339, '': 1340, '': 1341, '': 1342, '': 1343, '': 1344, '': 1345, '': 1346, '': 1347, '': 1348, '': 1349, '': 1350, '': 1351, '': 1352, '': 1353, '': 1354, '': 1355, '': 1356, '': 1357, '': 1358, '': 1359, '': 1360, '': 1361, '': 1362, '': 1363, '': 1364, '': 1365, '': 1366, '': 1367, '': 1368, '': 1369, '': 1370, '': 1371, '': 1372, '': 1373, '': 1374, '': 1375, '': 1376, '': 1377, '': 1378, '': 1379, '': 1380, '': 1381, '': 1382, '': 1383, '': 1384, '': 1385, '': 1386, '': 1387, '': 1388, '': 1389, '': 1390, '': 1391, '': 1392, '': 1393, '': 1394, '': 1395, '': 1396, '': 1397, '': 1398, '': 1399, '': 1400, '': 1401, '': 1402, '': 1403, '': 1404, '': 1405, '': 1406, '': 1407, '': 1408, '': 1409, '': 1410, '': 1411, '': 1412, '': 1413, '': 1414, '': 1415, '': 1416, '': 1417, '': 1418, '': 1419, '': 1420, '': 1421, '': 1422, '': 1423, '': 1424, '': 1425, '': 1426, '': 1427, '': 1428, '': 1429, '': 1430, '': 1431, '': 1432, '': 1433, '': 1434, '': 1435, '': 1436, '': 1437, '': 1438, '': 1439, '': 1440, '': 1441, '': 1442, '': 1443, '': 1444, '': 1445, '': 1446, '': 1447, '': 1448, '': 1449, '': 1450, '': 1451, '': 1452, '': 1453, '': 1454, '': 1455, '': 1456, '': 1457, '': 1458, '': 1459, '': 1460, '': 1461, '': 1462, '': 1463, '': 1464, '': 1465, '': 1466, '': 1467, '': 1468, '': 1469, '': 1470, '': 1471, '': 1472, '': 1473, '': 1474, '': 1475, '': 1476, '': 1477, '': 1478, '': 1479, '': 1480, '': 1481, '': 1482, '': 1483, '': 1484, '': 1485, '': 1486, '': 1487, '': 1488, '': 1489, '': 1490, '': 1491, '': 1492, '': 1493, '': 1494, '': 1495, '': 1496, '': 1497, '': 1498, '': 1499, '': 1500, '': 1501, '': 1502, '': 1503, '': 1504, '': 1505, '': 1506, '': 1507, '': 1508, '': 1509, '': 1510, '': 1511, '': 1512, '': 1513, '': 1514, '': 1515, '': 1516, '': 1517, '': 1518, '': 1519, '': 1520, '': 1521, '': 1522, '': 1523, '': 1524, '': 1525, '': 1526, '': 1527, '': 1528, '': 1529, '': 1530, '': 1531, '': 1532, '': 1533, '': 1534, '': 1535, '': 1536, '': 1537, '': 1538, '': 1539, '': 1540, '': 1541, '': 1542, '': 1543, '': 1544, '': 1545, '': 1546, '': 1547, '': 1548, '': 1549, '': 1550, '': 1551, '': 1552, '': 1553, '': 1554, '': 1555, '': 1556, '': 1557, '': 1558, '': 1559, '': 1560, '': 1561, '': 1562, '': 1563, '': 1564, '': 1565, '': 1566, '': 1567, '': 1568, '': 1569, '': 1570, '': 1571, '': 1572, '': 1573, '': 1574, '': 1575, '': 1576, '': 1577, '': 1578, '': 1579, '': 1580, '': 1581, '': 1582, '': 1583, '': 1584, '': 1585, '': 1586, '': 1587, '': 1588, '': 1589, '': 1590, '': 1591, '': 1592, '': 1593, '': 1594, '': 1595, '(0,0)': 1596, '(0,1)': 1597, '(1,0)': 1598, '(1,1)': 1599, '(0,2)': 1600, '(2,0)': 1601, '(1,2)': 1602, '(2,1)': 1603, '(2,2)': 1604, '(0,3)': 1605, '(3,0)': 1606, '(3,1)': 1607, '(2,3)': 1608, '(3,2)': 1609, '(1,3)': 1610, '(3,3)': 1611, '(0,4)': 1612, '(2,4)': 1613, '(4,0)': 1614, '(1,4)': 1615, '(4,1)': 1616, '(4,2)': 1617, '(3,4)': 1618, '(4,3)': 1619, '(4,4)': 1620, '(0,5)': 1621, '(5,0)': 1622, '(5,1)': 1623, '(2,5)': 1624, '(5,2)': 1625, '(5,3)': 1626, '(4,5)': 1627, '(5,4)': 1628, '(1,5)': 1629, '(3,5)': 1630, '(5,5)': 1631, '(0,6)': 1632, '(2,6)': 1633, '(4,6)': 1634, '(6,0)': 1635, '(1,6)': 1636, '(6,1)': 1637, '(6,2)': 1638, '(3,6)': 1639, '(6,3)': 1640, '(6,4)': 1641, '(5,6)': 1642, '(6,5)': 1643, '(6,6)': 1644, '(0,7)': 1645, '(7,0)': 1646, '(7,1)': 1647, '(2,7)': 1648, '(7,2)': 1649, '(7,3)': 1650, '(4,7)': 1651, '(7,4)': 1652, '(7,5)': 1653, '(6,7)': 1654, '(7,6)': 1655, '(1,7)': 1656, '(3,7)': 1657, '(5,7)': 1658, '(7,7)': 1659, '(0,8)': 1660, '(2,8)': 1661, '(4,8)': 1662, '(6,8)': 1663, '(8,0)': 1664, '(1,8)': 1665, '(8,1)': 1666, '(8,2)': 1667, '(3,8)': 1668, '(8,3)': 1669, '(8,4)': 1670, '(5,8)': 1671, '(8,5)': 1672, '(8,6)': 1673, '(7,8)': 1674, '(8,7)': 1675, '(8,8)': 1676, '(0,9)': 1677, '(9,0)': 1678, '(9,1)': 1679, '(2,9)': 1680, '(9,2)': 1681, '(9,3)': 1682, '(4,9)': 1683, '(9,4)': 1684, '(9,5)': 1685, '(6,9)': 1686, '(9,6)': 1687, '(9,7)': 1688, '(8,9)': 1689, '(9,8)': 1690, '(1,9)': 1691, '(3,9)': 1692, '(5,9)': 1693, '(7,9)': 1694, '(9,9)': 1695, '(0,10)': 1696, '(2,10)': 1697, '(4,10)': 1698, '(6,10)': 1699, '(8,10)': 1700, '(10,0)': 1701, '(1,10)': 1702, '(10,1)': 1703, '(10,2)': 1704, '(3,10)': 1705, '(10,3)': 1706, '(10,4)': 1707, '(5,10)': 1708, '(10,5)': 1709, '(10,6)': 1710, '(7,10)': 1711, '(10,7)': 1712, '(10,8)': 1713, '(9,10)': 1714, '(10,9)': 1715, '(10,10)': 1716, '(0,11)': 1717, '(11,0)': 1718, '(11,1)': 1719, '(2,11)': 1720, '(11,2)': 1721, '(11,3)': 1722, '(4,11)': 1723, '(11,4)': 1724, '(11,5)': 1725, '(6,11)': 1726, '(11,6)': 1727, '(11,7)': 1728, '(8,11)': 1729, '(11,8)': 1730, '(11,9)': 1731, '(10,11)': 1732, '(11,10)': 1733, '(1,11)': 1734, '(3,11)': 1735, '(5,11)': 1736, '(7,11)': 1737, '(9,11)': 1738, '(11,11)': 1739, '(0,12)': 1740, '(2,12)': 1741, '(4,12)': 1742, '(6,12)': 1743, '(8,12)': 1744, '(10,12)': 1745, '(12,0)': 1746, '(1,12)': 1747, '(12,1)': 1748, '(12,2)': 1749, '(3,12)': 1750, '(12,3)': 1751, '(12,4)': 1752, '(5,12)': 1753, '(12,5)': 1754, '(12,6)': 1755, '(7,12)': 1756, '(12,7)': 1757, '(12,8)': 1758, '(9,12)': 1759, '(12,9)': 1760, '(12,10)': 1761, '(11,12)': 1762, '(12,11)': 1763, '(12,12)': 1764, '(0,13)': 1765, '(13,0)': 1766, '(13,1)': 1767, '(2,13)': 1768, '(13,2)': 1769, '(13,3)': 1770, '(4,13)': 1771, '(13,4)': 1772, '(13,5)': 1773, '(6,13)': 1774, '(13,6)': 1775, '(13,7)': 1776, '(8,13)': 1777, '(13,8)': 1778, '(13,9)': 1779, '(10,13)': 1780, '(13,10)': 1781, '(13,11)': 1782, '(12,13)': 1783, '(13,12)': 1784, '(1,13)': 1785, '(3,13)': 1786, '(5,13)': 1787, '(7,13)': 1788, '(9,13)': 1789, '(11,13)': 1790, '(13,13)': 1791, '(0,14)': 1792, '(2,14)': 1793, '(4,14)': 1794, '(6,14)': 1795, '(8,14)': 1796, '(10,14)': 1797, '(12,14)': 1798, '(14,0)': 1799, '(1,14)': 1800, '(14,1)': 1801, '(14,2)': 1802, '(3,14)': 1803, '(14,3)': 1804, '(14,4)': 1805, '(5,14)': 1806, '(14,5)': 1807, '(14,6)': 1808, '(7,14)': 1809, '(14,7)': 1810, '(14,8)': 1811, '(9,14)': 1812, '(14,9)': 1813, '(14,10)': 1814, '(11,14)': 1815, '(14,11)': 1816, '(14,12)': 1817, '(13,14)': 1818, '(14,13)': 1819, '(14,14)': 1820, '(0,15)': 1821, '(15,0)': 1822, '(15,1)': 1823, '(2,15)': 1824, '(15,2)': 1825, '(15,3)': 1826, '(4,15)': 1827, '(15,4)': 1828, '(15,5)': 1829, '(6,15)': 1830, '(15,6)': 1831, '(15,7)': 1832, '(8,15)': 1833, '(15,8)': 1834, '(15,9)': 1835, '(10,15)': 1836, '(15,10)': 1837, '(15,11)': 1838, '(12,15)': 1839, '(15,12)': 1840, '(15,13)': 1841, '(14,15)': 1842, '(15,14)': 1843, '(1,15)': 1844, '(3,15)': 1845, '(5,15)': 1846, '(7,15)': 1847, '(9,15)': 1848, '(11,15)': 1849, '(13,15)': 1850, '(15,15)': 1851, '(0,16)': 1852, '(2,16)': 1853, '(4,16)': 1854, '(6,16)': 1855, '(8,16)': 1856, '(10,16)': 1857, '(12,16)': 1858, '(14,16)': 1859, '(16,0)': 1860, '(1,16)': 1861, '(16,1)': 1862, '(16,2)': 1863, '(3,16)': 1864, '(16,3)': 1865, '(16,4)': 1866, '(5,16)': 1867, '(16,5)': 1868, '(16,6)': 1869, '(7,16)': 1870, '(16,7)': 1871, '(16,8)': 1872, '(9,16)': 1873, '(16,9)': 1874, '(16,10)': 1875, '(11,16)': 1876, '(16,11)': 1877, '(16,12)': 1878, '(13,16)': 1879, '(16,13)': 1880, '(16,14)': 1881, '(15,16)': 1882, '(16,15)': 1883, '(16,16)': 1884, '(0,17)': 1885, '(17,0)': 1886, '(17,1)': 1887, '(2,17)': 1888, '(17,2)': 1889, '(17,3)': 1890, '(4,17)': 1891, '(17,4)': 1892, '(17,5)': 1893, '(6,17)': 1894, '(17,6)': 1895, '(17,7)': 1896, '(8,17)': 1897, '(17,8)': 1898, '(17,9)': 1899, '(10,17)': 1900, '(17,10)': 1901, '(17,11)': 1902, '(12,17)': 1903, '(17,12)': 1904, '(17,13)': 1905, '(14,17)': 1906, '(17,14)': 1907, '(17,15)': 1908, '(16,17)': 1909, '(17,16)': 1910, '(1,17)': 1911, '(3,17)': 1912, '(5,17)': 1913, '(7,17)': 1914, '(9,17)': 1915, '(11,17)': 1916, '(13,17)': 1917, '(15,17)': 1918, '(17,17)': 1919, '(0,18)': 1920, '(2,18)': 1921, '(4,18)': 1922, '(6,18)': 1923, '(8,18)': 1924, '(10,18)': 1925, '(12,18)': 1926, '(14,18)': 1927, '(16,18)': 1928, '(18,0)': 1929, '(1,18)': 1930, '(18,1)': 1931, '(18,2)': 1932, '(3,18)': 1933, '(18,3)': 1934, '(18,4)': 1935, '(5,18)': 1936, '(18,5)': 1937, '(18,6)': 1938, '(7,18)': 1939, '(18,7)': 1940, '(18,8)': 1941, '(9,18)': 1942, '(18,9)': 1943, '(18,10)': 1944, '(11,18)': 1945, '(18,11)': 1946, '(18,12)': 1947, '(13,18)': 1948, '(18,13)': 1949, '(18,14)': 1950, '(15,18)': 1951, '(18,15)': 1952, '(18,16)': 1953, '(17,18)': 1954, '(18,17)': 1955, '(18,18)': 1956, '(0,19)': 1957, '(19,0)': 1958, '(19,1)': 1959, '(2,19)': 1960, '(19,2)': 1961, '(19,3)': 1962, '(4,19)': 1963, '(19,4)': 1964, '(19,5)': 1965, '(6,19)': 1966, '(19,6)': 1967, '(19,7)': 1968, '(8,19)': 1969, '(19,8)': 1970, '(19,9)': 1971, '(10,19)': 1972, '(19,10)': 1973, '(19,11)': 1974, '(12,19)': 1975, '(19,12)': 1976, '(19,13)': 1977, '(14,19)': 1978, '(19,14)': 1979, '(19,15)': 1980, '(16,19)': 1981, '(19,16)': 1982, '(19,17)': 1983, '(18,19)': 1984, '(19,18)': 1985, '(1,19)': 1986, '(3,19)': 1987, '(5,19)': 1988, '(7,19)': 1989, '(9,19)': 1990, '(11,19)': 1991, '(13,19)': 1992, '(15,19)': 1993, '(17,19)': 1994, '(19,19)': 1995, '(0,20)': 1996, '(2,20)': 1997, '(4,20)': 1998, '(6,20)': 1999, '(8,20)': 2000, '(10,20)': 2001, '(12,20)': 2002, '(14,20)': 2003, '(16,20)': 2004, '(18,20)': 2005, '(20,0)': 2006, '(1,20)': 2007, '(20,1)': 2008, '(20,2)': 2009, '(3,20)': 2010, '(20,3)': 2011, '(20,4)': 2012, '(5,20)': 2013, '(20,5)': 2014, '(20,6)': 2015, '(7,20)': 2016, '(20,7)': 2017, '(20,8)': 2018, '(9,20)': 2019, '(20,9)': 2020, '(20,10)': 2021, '(11,20)': 2022, '(20,11)': 2023, '(20,12)': 2024, '(13,20)': 2025, '(20,13)': 2026, '(20,14)': 2027, '(15,20)': 2028, '(20,15)': 2029, '(20,16)': 2030, '(17,20)': 2031, '(20,17)': 2032, '(20,18)': 2033, '(19,20)': 2034, '(20,19)': 2035, '(20,20)': 2036, '(0,21)': 2037, '(21,0)': 2038, '(21,1)': 2039, '(2,21)': 2040, '(21,2)': 2041, '(21,3)': 2042, '(4,21)': 2043, '(21,4)': 2044, '(21,5)': 2045, '(6,21)': 2046, '(21,6)': 2047, '(21,7)': 2048, '(8,21)': 2049, '(21,8)': 2050, '(21,9)': 2051, '(10,21)': 2052, '(21,10)': 2053, '(21,11)': 2054, '(12,21)': 2055, '(21,12)': 2056, '(21,13)': 2057, '(14,21)': 2058, '(21,14)': 2059, '(21,15)': 2060, '(16,21)': 2061, '(21,16)': 2062, '(21,17)': 2063, '(18,21)': 2064, '(21,18)': 2065, '(21,19)': 2066, '(20,21)': 2067, '(21,20)': 2068, '(1,21)': 2069, '(3,21)': 2070, '(5,21)': 2071, '(7,21)': 2072, '(9,21)': 2073, '(11,21)': 2074, '(13,21)': 2075, '(15,21)': 2076, '(17,21)': 2077, '(19,21)': 2078, '(21,21)': 2079, '(0,22)': 2080, '(2,22)': 2081, '(4,22)': 2082, '(6,22)': 2083, '(8,22)': 2084, '(10,22)': 2085, '(12,22)': 2086, '(14,22)': 2087, '(16,22)': 2088, '(18,22)': 2089, '(20,22)': 2090, '(22,0)': 2091, '(1,22)': 2092, '(22,1)': 2093, '(22,2)': 2094, '(3,22)': 2095, '(22,3)': 2096, '(22,4)': 2097, '(5,22)': 2098, '(22,5)': 2099, '(22,6)': 2100, '(7,22)': 2101, '(22,7)': 2102, '(22,8)': 2103, '(9,22)': 2104, '(22,9)': 2105, '(22,10)': 2106, '(11,22)': 2107, '(22,11)': 2108, '(22,12)': 2109, '(13,22)': 2110, '(22,13)': 2111, '(22,14)': 2112, '(15,22)': 2113, '(22,15)': 2114, '(22,16)': 2115, '(17,22)': 2116, '(22,17)': 2117, '(22,18)': 2118, '(19,22)': 2119, '(22,19)': 2120, '(22,20)': 2121, '(21,22)': 2122, '(22,21)': 2123, '(22,22)': 2124, '(0,23)': 2125, '(23,0)': 2126, '(23,1)': 2127, '(2,23)': 2128, '(23,2)': 2129, '(23,3)': 2130, '(4,23)': 2131, '(23,4)': 2132, '(23,5)': 2133, '(6,23)': 2134, '(23,6)': 2135, '(23,7)': 2136, '(8,23)': 2137, '(23,8)': 2138, '(23,9)': 2139, '(10,23)': 2140, '(23,10)': 2141, '(23,11)': 2142, '(12,23)': 2143, '(23,12)': 2144, '(23,13)': 2145, '(14,23)': 2146, '(23,14)': 2147, '(23,15)': 2148, '(16,23)': 2149, '(23,16)': 2150, '(23,17)': 2151, '(18,23)': 2152, '(23,18)': 2153, '(23,19)': 2154, '(20,23)': 2155, '(23,20)': 2156, '(23,21)': 2157, '(22,23)': 2158, '(23,22)': 2159, '(1,23)': 2160, '(3,23)': 2161, '(5,23)': 2162, '(7,23)': 2163, '(9,23)': 2164, '(11,23)': 2165, '(13,23)': 2166, '(15,23)': 2167, '(17,23)': 2168, '(19,23)': 2169, '(21,23)': 2170, '(23,23)': 2171, '(0,24)': 2172, '(2,24)': 2173, '(4,24)': 2174, '(6,24)': 2175, '(8,24)': 2176, '(10,24)': 2177, '(12,24)': 2178, '(14,24)': 2179, '(16,24)': 2180, '(18,24)': 2181, '(20,24)': 2182, '(22,24)': 2183, '(24,0)': 2184, '(1,24)': 2185, '(24,1)': 2186, '(24,2)': 2187, '(3,24)': 2188, '(24,3)': 2189, '(24,4)': 2190, '(5,24)': 2191, '(24,5)': 2192, '(24,6)': 2193, '(7,24)': 2194, '(24,7)': 2195, '(24,8)': 2196, '(9,24)': 2197, '(24,9)': 2198, '(24,10)': 2199, '(11,24)': 2200, '(24,11)': 2201, '(24,12)': 2202, '(13,24)': 2203, '(24,13)': 2204, '(24,14)': 2205, '(15,24)': 2206, '(24,15)': 2207, '(24,16)': 2208, '(17,24)': 2209, '(24,17)': 2210, '(24,18)': 2211, '(19,24)': 2212, '(24,19)': 2213, '(24,20)': 2214, '(21,24)': 2215, '(24,21)': 2216, '(24,22)': 2217, '(23,24)': 2218, '(24,23)': 2219, '(24,24)': 2220, '(0,25)': 2221, '(25,0)': 2222, '(25,1)': 2223, '(2,25)': 2224, '(25,2)': 2225, '(25,3)': 2226, '(4,25)': 2227, '(25,4)': 2228, '(25,5)': 2229, '(6,25)': 2230, '(25,6)': 2231, '(25,7)': 2232, '(8,25)': 2233, '(25,8)': 2234, '(25,9)': 2235, '(10,25)': 2236, '(25,10)': 2237, '(25,11)': 2238, '(12,25)': 2239, '(25,12)': 2240, '(25,13)': 2241, '(14,25)': 2242, '(25,14)': 2243, '(25,15)': 2244, '(16,25)': 2245, '(25,16)': 2246, '(25,17)': 2247, '(18,25)': 2248, '(25,18)': 2249, '(25,19)': 2250, '(20,25)': 2251, '(25,20)': 2252, '(25,21)': 2253, '(22,25)': 2254, '(25,22)': 2255, '(25,23)': 2256, '(24,25)': 2257, '(25,24)': 2258, '(1,25)': 2259, '(3,25)': 2260, '(5,25)': 2261, '(7,25)': 2262, '(9,25)': 2263, '(11,25)': 2264, '(13,25)': 2265, '(15,25)': 2266, '(17,25)': 2267, '(19,25)': 2268, '(21,25)': 2269, '(23,25)': 2270, '(25,25)': 2271, '(0,26)': 2272, '(2,26)': 2273, '(4,26)': 2274, '(6,26)': 2275, '(8,26)': 2276, '(10,26)': 2277, '(12,26)': 2278, '(14,26)': 2279, '(16,26)': 2280, '(18,26)': 2281, '(20,26)': 2282, '(22,26)': 2283, '(24,26)': 2284, '(26,0)': 2285, '(1,26)': 2286, '(26,1)': 2287, '(26,2)': 2288, '(3,26)': 2289, '(26,3)': 2290, '(26,4)': 2291, '(5,26)': 2292, '(26,5)': 2293, '(26,6)': 2294, '(7,26)': 2295, '(26,7)': 2296, '(26,8)': 2297, '(9,26)': 2298, '(26,9)': 2299, '(26,10)': 2300, '(11,26)': 2301, '(26,11)': 2302, '(26,12)': 2303, '(13,26)': 2304, '(26,13)': 2305, '(26,14)': 2306, '(15,26)': 2307, '(26,15)': 2308, '(26,16)': 2309, '(17,26)': 2310, '(26,17)': 2311, '(26,18)': 2312, '(19,26)': 2313, '(26,19)': 2314, '(26,20)': 2315, '(21,26)': 2316, '(26,21)': 2317, '(26,22)': 2318, '(23,26)': 2319, '(26,23)': 2320, '(26,24)': 2321, '(25,26)': 2322, '(26,25)': 2323, '(26,26)': 2324, '(0,27)': 2325, '(27,0)': 2326, '(27,1)': 2327, '(2,27)': 2328, '(27,2)': 2329, '(27,3)': 2330, '(4,27)': 2331, '(27,4)': 2332, '(27,5)': 2333, '(6,27)': 2334, '(27,6)': 2335, '(27,7)': 2336, '(8,27)': 2337, '(27,8)': 2338, '(27,9)': 2339, '(10,27)': 2340, '(27,10)': 2341, '(27,11)': 2342, '(12,27)': 2343, '(27,12)': 2344, '(27,13)': 2345, '(14,27)': 2346, '(27,14)': 2347, '(27,15)': 2348, '(16,27)': 2349, '(27,16)': 2350, '(27,17)': 2351, '(18,27)': 2352, '(27,18)': 2353, '(27,19)': 2354, '(20,27)': 2355, '(27,20)': 2356, '(27,21)': 2357, '(22,27)': 2358, '(27,22)': 2359, '(27,23)': 2360, '(24,27)': 2361, '(27,24)': 2362, '(27,25)': 2363, '(26,27)': 2364, '(27,26)': 2365, '(1,27)': 2366, '(3,27)': 2367, '(5,27)': 2368, '(7,27)': 2369, '(9,27)': 2370, '(11,27)': 2371, '(13,27)': 2372, '(15,27)': 2373, '(17,27)': 2374, '(19,27)': 2375, '(21,27)': 2376, '(23,27)': 2377, '(25,27)': 2378, '(27,27)': 2379, '(0,28)': 2380, '(2,28)': 2381, '(4,28)': 2382, '(6,28)': 2383, '(8,28)': 2384, '(10,28)': 2385, '(12,28)': 2386, '(14,28)': 2387, '(16,28)': 2388, '(18,28)': 2389, '(20,28)': 2390, '(22,28)': 2391, '(24,28)': 2392, '(26,28)': 2393, '(28,0)': 2394, '(1,28)': 2395, '(28,1)': 2396, '(28,2)': 2397, '(3,28)': 2398, '(28,3)': 2399, '(28,4)': 2400, '(5,28)': 2401, '(28,5)': 2402, '(28,6)': 2403, '(7,28)': 2404, '(28,7)': 2405, '(28,8)': 2406, '(9,28)': 2407, '(28,9)': 2408, '(28,10)': 2409, '(11,28)': 2410, '(28,11)': 2411, '(28,12)': 2412, '(13,28)': 2413, '(28,13)': 2414, '(28,14)': 2415, '(15,28)': 2416, '(28,15)': 2417, '(28,16)': 2418, '(17,28)': 2419, '(28,17)': 2420, '(28,18)': 2421, '(19,28)': 2422, '(28,19)': 2423, '(28,20)': 2424, '(21,28)': 2425, '(28,21)': 2426, '(28,22)': 2427, '(23,28)': 2428, '(28,23)': 2429, '(28,24)': 2430, '(25,28)': 2431, '(28,25)': 2432, '(28,26)': 2433, '(27,28)': 2434, '(28,27)': 2435, '(28,28)': 2436, '(0,29)': 2437, '(29,0)': 2438, '(29,1)': 2439, '(2,29)': 2440, '(29,2)': 2441, '(29,3)': 2442, '(4,29)': 2443, '(29,4)': 2444, '(29,5)': 2445, '(6,29)': 2446, '(29,6)': 2447, '(29,7)': 2448, '(8,29)': 2449, '(29,8)': 2450, '(29,9)': 2451, '(10,29)': 2452, '(29,10)': 2453, '(29,11)': 2454, '(12,29)': 2455, '(29,12)': 2456, '(29,13)': 2457, '(14,29)': 2458, '(29,14)': 2459, '(29,15)': 2460, '(16,29)': 2461, '(29,16)': 2462, '(29,17)': 2463, '(18,29)': 2464, '(29,18)': 2465, '(29,19)': 2466, '(20,29)': 2467, '(29,20)': 2468, '(29,21)': 2469, '(22,29)': 2470, '(29,22)': 2471, '(29,23)': 2472, '(24,29)': 2473, '(29,24)': 2474, '(29,25)': 2475, '(26,29)': 2476, '(29,26)': 2477, '(29,27)': 2478, '(28,29)': 2479, '(29,28)': 2480, '(1,29)': 2481, '(3,29)': 2482, '(5,29)': 2483, '(7,29)': 2484, '(9,29)': 2485, '(11,29)': 2486, '(13,29)': 2487, '(15,29)': 2488, '(17,29)': 2489, '(19,29)': 2490, '(21,29)': 2491, '(23,29)': 2492, '(25,29)': 2493, '(27,29)': 2494, '(29,29)': 2495, '(0,30)': 2496, '(2,30)': 2497, '(4,30)': 2498, '(6,30)': 2499, '(8,30)': 2500, '(10,30)': 2501, '(12,30)': 2502, '(14,30)': 2503, '(16,30)': 2504, '(18,30)': 2505, '(20,30)': 2506, '(22,30)': 2507, '(24,30)': 2508, '(26,30)': 2509, '(28,30)': 2510, '(30,0)': 2511, '(1,30)': 2512, '(30,1)': 2513, '(30,2)': 2514, '(3,30)': 2515, '(30,3)': 2516, '(30,4)': 2517, '(5,30)': 2518, '(30,5)': 2519, '(30,6)': 2520, '(7,30)': 2521, '(30,7)': 2522, '(30,8)': 2523, '(9,30)': 2524, '(30,9)': 2525, '(30,10)': 2526, '(11,30)': 2527, '(30,11)': 2528, '(30,12)': 2529, '(13,30)': 2530, '(30,13)': 2531, '(30,14)': 2532, '(15,30)': 2533, '(30,15)': 2534, '(30,16)': 2535, '(17,30)': 2536, '(30,17)': 2537, '(30,18)': 2538, '(19,30)': 2539, '(30,19)': 2540, '(30,20)': 2541, '(21,30)': 2542, '(30,21)': 2543, '(30,22)': 2544, '(23,30)': 2545, '(30,23)': 2546, '(30,24)': 2547, '(25,30)': 2548, '(30,25)': 2549, '(30,26)': 2550, '(27,30)': 2551, '(30,27)': 2552, '(30,28)': 2553, '(29,30)': 2554, '(30,29)': 2555, '(30,30)': 2556, '(0,31)': 2557, '(31,0)': 2558, '(31,1)': 2559, '(2,31)': 2560, '(31,2)': 2561, '(31,3)': 2562, '(4,31)': 2563, '(31,4)': 2564, '(31,5)': 2565, '(6,31)': 2566, '(31,6)': 2567, '(31,7)': 2568, '(8,31)': 2569, '(31,8)': 2570, '(31,9)': 2571, '(10,31)': 2572, '(31,10)': 2573, '(31,11)': 2574, '(12,31)': 2575, '(31,12)': 2576, '(31,13)': 2577, '(14,31)': 2578, '(31,14)': 2579, '(31,15)': 2580, '(16,31)': 2581, '(31,16)': 2582, '(31,17)': 2583, '(18,31)': 2584, '(31,18)': 2585, '(31,19)': 2586, '(20,31)': 2587, '(31,20)': 2588, '(31,21)': 2589, '(22,31)': 2590, '(31,22)': 2591, '(31,23)': 2592, '(24,31)': 2593, '(31,24)': 2594, '(31,25)': 2595, '(26,31)': 2596, '(31,26)': 2597, '(31,27)': 2598, '(28,31)': 2599, '(31,28)': 2600, '(31,29)': 2601, '(30,31)': 2602, '(31,30)': 2603, '(1,31)': 2604, '(3,31)': 2605, '(5,31)': 2606, '(7,31)': 2607, '(9,31)': 2608, '(11,31)': 2609, '(13,31)': 2610, '(15,31)': 2611, '(17,31)': 2612, '(19,31)': 2613, '(21,31)': 2614, '(23,31)': 2615, '(25,31)': 2616, '(27,31)': 2617, '(29,31)': 2618, '(31,31)': 2619, '(0,32)': 2620, '(2,32)': 2621, '(4,32)': 2622, '(6,32)': 2623, '(8,32)': 2624, '(10,32)': 2625, '(12,32)': 2626, '(14,32)': 2627, '(16,32)': 2628, '(18,32)': 2629, '(20,32)': 2630, '(22,32)': 2631, '(24,32)': 2632, '(26,32)': 2633, '(28,32)': 2634, '(30,32)': 2635, '(32,0)': 2636, '(1,32)': 2637, '(32,1)': 2638, '(32,2)': 2639, '(3,32)': 2640, '(32,3)': 2641, '(32,4)': 2642, '(5,32)': 2643, '(32,5)': 2644, '(32,6)': 2645, '(7,32)': 2646, '(32,7)': 2647, '(32,8)': 2648, '(9,32)': 2649, '(32,9)': 2650, '(32,10)': 2651, '(11,32)': 2652, '(32,11)': 2653, '(32,12)': 2654, '(13,32)': 2655, '(32,13)': 2656, '(32,14)': 2657, '(15,32)': 2658, '(32,15)': 2659, '(32,16)': 2660, '(17,32)': 2661, '(32,17)': 2662, '(32,18)': 2663, '(19,32)': 2664, '(32,19)': 2665, '(32,20)': 2666, '(21,32)': 2667, '(32,21)': 2668, '(32,22)': 2669, '(23,32)': 2670, '(32,23)': 2671, '(32,24)': 2672, '(25,32)': 2673, '(32,25)': 2674, '(32,26)': 2675, '(27,32)': 2676, '(32,27)': 2677, '(32,28)': 2678, '(29,32)': 2679, '(32,29)': 2680, '(32,30)': 2681, '(31,32)': 2682, '(32,31)': 2683, '(32,32)': 2684, '(0,33)': 2685, '(33,0)': 2686, '(33,1)': 2687, '(2,33)': 2688, '(33,2)': 2689, '(33,3)': 2690, '(4,33)': 2691, '(33,4)': 2692, '(33,5)': 2693, '(6,33)': 2694, '(33,6)': 2695, '(33,7)': 2696, '(8,33)': 2697, '(33,8)': 2698, '(33,9)': 2699, '(10,33)': 2700, '(33,10)': 2701, '(33,11)': 2702, '(12,33)': 2703, '(33,12)': 2704, '(33,13)': 2705, '(14,33)': 2706, '(33,14)': 2707, '(33,15)': 2708, '(16,33)': 2709, '(33,16)': 2710, '(33,17)': 2711, '(18,33)': 2712, '(33,18)': 2713, '(33,19)': 2714, '(20,33)': 2715, '(33,20)': 2716, '(33,21)': 2717, '(22,33)': 2718, '(33,22)': 2719, '(33,23)': 2720, '(24,33)': 2721, '(33,24)': 2722, '(33,25)': 2723, '(26,33)': 2724, '(33,26)': 2725, '(33,27)': 2726, '(28,33)': 2727, '(33,28)': 2728, '(33,29)': 2729, '(30,33)': 2730, '(33,30)': 2731, '(33,31)': 2732, '(32,33)': 2733, '(33,32)': 2734, '(1,33)': 2735, '(3,33)': 2736, '(5,33)': 2737, '(7,33)': 2738, '(9,33)': 2739, '(11,33)': 2740, '(13,33)': 2741, '(15,33)': 2742, '(17,33)': 2743, '(19,33)': 2744, '(21,33)': 2745, '(23,33)': 2746, '(25,33)': 2747, '(27,33)': 2748, '(29,33)': 2749, '(31,33)': 2750, '(33,33)': 2751, '(0,34)': 2752, '(2,34)': 2753, '(4,34)': 2754, '(6,34)': 2755, '(8,34)': 2756, '(10,34)': 2757, '(12,34)': 2758, '(14,34)': 2759, '(16,34)': 2760, '(18,34)': 2761, '(20,34)': 2762, '(22,34)': 2763, '(24,34)': 2764, '(26,34)': 2765, '(28,34)': 2766, '(30,34)': 2767, '(32,34)': 2768, '(34,0)': 2769, '(1,34)': 2770, '(34,1)': 2771, '(34,2)': 2772, '(3,34)': 2773, '(34,3)': 2774, '(34,4)': 2775, '(5,34)': 2776, '(34,5)': 2777, '(34,6)': 2778, '(7,34)': 2779, '(34,7)': 2780, '(34,8)': 2781, '(9,34)': 2782, '(34,9)': 2783, '(34,10)': 2784, '(11,34)': 2785, '(34,11)': 2786, '(34,12)': 2787, '(13,34)': 2788, '(34,13)': 2789, '(34,14)': 2790, '(15,34)': 2791, '(34,15)': 2792, '(34,16)': 2793, '(17,34)': 2794, '(34,17)': 2795, '(34,18)': 2796, '(19,34)': 2797, '(34,19)': 2798, '(34,20)': 2799, '(21,34)': 2800, '(34,21)': 2801, '(34,22)': 2802, '(23,34)': 2803, '(34,23)': 2804, '(34,24)': 2805, '(25,34)': 2806, '(34,25)': 2807, '(34,26)': 2808, '(27,34)': 2809, '(34,27)': 2810, '(34,28)': 2811, '(29,34)': 2812, '(34,29)': 2813, '(34,30)': 2814, '(31,34)': 2815, '(34,31)': 2816, '(34,32)': 2817, '(33,34)': 2818, '(34,33)': 2819, '(34,34)': 2820, '(0,35)': 2821, '(35,0)': 2822, '(35,1)': 2823, '(2,35)': 2824, '(35,2)': 2825, '(35,3)': 2826, '(4,35)': 2827, '(35,4)': 2828, '(35,5)': 2829, '(6,35)': 2830, '(35,6)': 2831, '(35,7)': 2832, '(8,35)': 2833, '(35,8)': 2834, '(35,9)': 2835, '(10,35)': 2836, '(35,10)': 2837, '(35,11)': 2838, '(12,35)': 2839, '(35,12)': 2840, '(35,13)': 2841, '(14,35)': 2842, '(35,14)': 2843, '(35,15)': 2844, '(16,35)': 2845, '(35,16)': 2846, '(35,17)': 2847, '(18,35)': 2848, '(35,18)': 2849, '(35,19)': 2850, '(20,35)': 2851, '(35,20)': 2852, '(35,21)': 2853, '(22,35)': 2854, '(35,22)': 2855, '(35,23)': 2856, '(24,35)': 2857, '(35,24)': 2858, '(35,25)': 2859, '(26,35)': 2860, '(35,26)': 2861, '(35,27)': 2862, '(28,35)': 2863, '(35,28)': 2864, '(35,29)': 2865, '(30,35)': 2866, '(35,30)': 2867, '(35,31)': 2868, '(32,35)': 2869, '(35,32)': 2870, '(35,33)': 2871, '(34,35)': 2872, '(35,34)': 2873, '(1,35)': 2874, '(3,35)': 2875, '(5,35)': 2876, '(7,35)': 2877, '(9,35)': 2878, '(11,35)': 2879, '(13,35)': 2880, '(15,35)': 2881, '(17,35)': 2882, '(19,35)': 2883, '(21,35)': 2884, '(23,35)': 2885, '(25,35)': 2886, '(27,35)': 2887, '(29,35)': 2888, '(31,35)': 2889, '(33,35)': 2890, '(35,35)': 2891, '(0,36)': 2892, '(2,36)': 2893, '(4,36)': 2894, '(6,36)': 2895, '(8,36)': 2896, '(10,36)': 2897, '(12,36)': 2898, '(14,36)': 2899, '(16,36)': 2900, '(18,36)': 2901, '(20,36)': 2902, '(22,36)': 2903, '(24,36)': 2904, '(26,36)': 2905, '(28,36)': 2906, '(30,36)': 2907, '(32,36)': 2908, '(34,36)': 2909, '(36,0)': 2910, '(1,36)': 2911, '(36,1)': 2912, '(36,2)': 2913, '(3,36)': 2914, '(36,3)': 2915, '(36,4)': 2916, '(5,36)': 2917, '(36,5)': 2918, '(36,6)': 2919, '(7,36)': 2920, '(36,7)': 2921, '(36,8)': 2922, '(9,36)': 2923, '(36,9)': 2924, '(36,10)': 2925, '(11,36)': 2926, '(36,11)': 2927, '(36,12)': 2928, '(13,36)': 2929, '(36,13)': 2930, '(36,14)': 2931, '(15,36)': 2932, '(36,15)': 2933, '(36,16)': 2934, '(17,36)': 2935, '(36,17)': 2936, '(36,18)': 2937, '(19,36)': 2938, '(36,19)': 2939, '(36,20)': 2940, '(21,36)': 2941, '(36,21)': 2942, '(36,22)': 2943, '(23,36)': 2944, '(36,23)': 2945, '(36,24)': 2946, '(25,36)': 2947, '(36,25)': 2948, '(36,26)': 2949, '(27,36)': 2950, '(36,27)': 2951, '(36,28)': 2952, '(29,36)': 2953, '(36,29)': 2954, '(36,30)': 2955, '(31,36)': 2956, '(36,31)': 2957, '(36,32)': 2958, '(33,36)': 2959, '(36,33)': 2960, '(36,34)': 2961, '(35,36)': 2962, '(36,35)': 2963, '(36,36)': 2964, '(0,37)': 2965, '(37,0)': 2966, '(37,1)': 2967, '(2,37)': 2968, '(37,2)': 2969, '(37,3)': 2970, '(4,37)': 2971, '(37,4)': 2972, '(37,5)': 2973, '(6,37)': 2974, '(37,6)': 2975, '(37,7)': 2976, '(8,37)': 2977, '(37,8)': 2978, '(37,9)': 2979, '(10,37)': 2980, '(37,10)': 2981, '(37,11)': 2982, '(12,37)': 2983, '(37,12)': 2984, '(37,13)': 2985, '(14,37)': 2986, '(37,14)': 2987, '(37,15)': 2988, '(16,37)': 2989, '(37,16)': 2990, '(37,17)': 2991, '(18,37)': 2992, '(37,18)': 2993, '(37,19)': 2994, '(20,37)': 2995, '(37,20)': 2996, '(37,21)': 2997, '(22,37)': 2998, '(37,22)': 2999, '(37,23)': 3000, '(24,37)': 3001, '(37,24)': 3002, '(37,25)': 3003, '(26,37)': 3004, '(37,26)': 3005, '(37,27)': 3006, '(28,37)': 3007, '(37,28)': 3008, '(37,29)': 3009, '(30,37)': 3010, '(37,30)': 3011, '(37,31)': 3012, '(32,37)': 3013, '(37,32)': 3014, '(37,33)': 3015, '(34,37)': 3016, '(37,34)': 3017, '(37,35)': 3018, '(36,37)': 3019, '(37,36)': 3020, '(1,37)': 3021, '(3,37)': 3022, '(5,37)': 3023, '(7,37)': 3024, '(9,37)': 3025, '(11,37)': 3026, '(13,37)': 3027, '(15,37)': 3028, '(17,37)': 3029, '(19,37)': 3030, '(21,37)': 3031, '(23,37)': 3032, '(25,37)': 3033, '(27,37)': 3034, '(29,37)': 3035, '(31,37)': 3036, '(33,37)': 3037, '(35,37)': 3038, '(37,37)': 3039, '(0,38)': 3040, '(2,38)': 3041, '(4,38)': 3042, '(6,38)': 3043, '(8,38)': 3044, '(10,38)': 3045, '(12,38)': 3046, '(14,38)': 3047, '(16,38)': 3048, '(18,38)': 3049, '(20,38)': 3050, '(22,38)': 3051, '(24,38)': 3052, '(26,38)': 3053, '(28,38)': 3054, '(30,38)': 3055, '(32,38)': 3056, '(34,38)': 3057, '(36,38)': 3058, '(38,0)': 3059, '(1,38)': 3060, '(38,1)': 3061, '(38,2)': 3062, '(3,38)': 3063, '(38,3)': 3064, '(38,4)': 3065, '(5,38)': 3066, '(38,5)': 3067, '(38,6)': 3068, '(7,38)': 3069, '(38,7)': 3070, '(38,8)': 3071, '(9,38)': 3072, '(38,9)': 3073, '(38,10)': 3074, '(11,38)': 3075, '(38,11)': 3076, '(38,12)': 3077, '(13,38)': 3078, '(38,13)': 3079, '(38,14)': 3080, '(15,38)': 3081, '(38,15)': 3082, '(38,16)': 3083, '(17,38)': 3084, '(38,17)': 3085, '(38,18)': 3086, '(19,38)': 3087, '(38,19)': 3088, '(38,20)': 3089, '(21,38)': 3090, '(38,21)': 3091, '(38,22)': 3092, '(23,38)': 3093, '(38,23)': 3094, '(38,24)': 3095, '(25,38)': 3096, '(38,25)': 3097, '(38,26)': 3098, '(27,38)': 3099, '(38,27)': 3100, '(38,28)': 3101, '(29,38)': 3102, '(38,29)': 3103, '(38,30)': 3104, '(31,38)': 3105, '(38,31)': 3106, '(38,32)': 3107, '(33,38)': 3108, '(38,33)': 3109, '(38,34)': 3110, '(35,38)': 3111, '(38,35)': 3112, '(38,36)': 3113, '(37,38)': 3114, '(38,37)': 3115, '(38,38)': 3116, '(0,39)': 3117, '(39,0)': 3118, '(39,1)': 3119, '(2,39)': 3120, '(39,2)': 3121, '(39,3)': 3122, '(4,39)': 3123, '(39,4)': 3124, '(39,5)': 3125, '(6,39)': 3126, '(39,6)': 3127, '(39,7)': 3128, '(8,39)': 3129, '(39,8)': 3130, '(39,9)': 3131, '(10,39)': 3132, '(39,10)': 3133, '(39,11)': 3134, '(12,39)': 3135, '(39,12)': 3136, '(39,13)': 3137, '(14,39)': 3138, '(39,14)': 3139, '(39,15)': 3140, '(16,39)': 3141, '(39,16)': 3142, '(39,17)': 3143, '(18,39)': 3144, '(39,18)': 3145, '(39,19)': 3146, '(20,39)': 3147, '(39,20)': 3148, '(39,21)': 3149, '(22,39)': 3150, '(39,22)': 3151, '(39,23)': 3152, '(24,39)': 3153, '(39,24)': 3154, '(39,25)': 3155, '(26,39)': 3156, '(39,26)': 3157, '(39,27)': 3158, '(28,39)': 3159, '(39,28)': 3160, '(39,29)': 3161, '(30,39)': 3162, '(39,30)': 3163, '(39,31)': 3164, '(32,39)': 3165, '(39,32)': 3166, '(39,33)': 3167, '(34,39)': 3168, '(39,34)': 3169, '(39,35)': 3170, '(36,39)': 3171, '(39,36)': 3172, '(39,37)': 3173, '(38,39)': 3174, '(39,38)': 3175, '(1,39)': 3176, '(3,39)': 3177, '(5,39)': 3178, '(7,39)': 3179, '(9,39)': 3180, '(11,39)': 3181, '(13,39)': 3182, '(15,39)': 3183, '(17,39)': 3184, '(19,39)': 3185, '(21,39)': 3186, '(23,39)': 3187, '(25,39)': 3188, '(27,39)': 3189, '(29,39)': 3190, '(31,39)': 3191, '(33,39)': 3192, '(35,39)': 3193, '(37,39)': 3194, '(39,39)': 3195, '(0,40)': 3196, '(2,40)': 3197, '(4,40)': 3198, '(6,40)': 3199, '(8,40)': 3200, '(10,40)': 3201, '(12,40)': 3202, '(14,40)': 3203, '(16,40)': 3204, '(18,40)': 3205, '(20,40)': 3206, '(22,40)': 3207, '(24,40)': 3208, '(26,40)': 3209, '(28,40)': 3210, '(30,40)': 3211, '(32,40)': 3212, '(34,40)': 3213, '(36,40)': 3214, '(38,40)': 3215, '(40,0)': 3216, '(1,40)': 3217, '(40,1)': 3218, '(40,2)': 3219, '(3,40)': 3220, '(40,3)': 3221, '(40,4)': 3222, '(5,40)': 3223, '(40,5)': 3224, '(40,6)': 3225, '(7,40)': 3226, '(40,7)': 3227, '(40,8)': 3228, '(9,40)': 3229, '(40,9)': 3230, '(40,10)': 3231, '(11,40)': 3232, '(40,11)': 3233, '(40,12)': 3234, '(13,40)': 3235, '(40,13)': 3236, '(40,14)': 3237, '(15,40)': 3238, '(40,15)': 3239, '(40,16)': 3240, '(17,40)': 3241, '(40,17)': 3242, '(40,18)': 3243, '(19,40)': 3244, '(40,19)': 3245, '(40,20)': 3246, '(21,40)': 3247, '(40,21)': 3248, '(40,22)': 3249, '(23,40)': 3250, '(40,23)': 3251, '(40,24)': 3252, '(25,40)': 3253, '(40,25)': 3254, '(40,26)': 3255, '(27,40)': 3256, '(40,27)': 3257, '(40,28)': 3258, '(29,40)': 3259, '(40,29)': 3260, '(40,30)': 3261, '(31,40)': 3262, '(40,31)': 3263, '(40,32)': 3264, '(33,40)': 3265, '(40,33)': 3266, '(40,34)': 3267, '(35,40)': 3268, '(40,35)': 3269, '(40,36)': 3270, '(37,40)': 3271, '(40,37)': 3272, '(40,38)': 3273, '(39,40)': 3274, '(40,39)': 3275, '(40,40)': 3276, '(0,41)': 3277, '(41,0)': 3278, '(41,1)': 3279, '(2,41)': 3280, '(41,2)': 3281, '(41,3)': 3282, '(4,41)': 3283, '(41,4)': 3284, '(41,5)': 3285, '(6,41)': 3286, '(41,6)': 3287, '(41,7)': 3288, '(8,41)': 3289, '(41,8)': 3290, '(41,9)': 3291, '(10,41)': 3292, '(41,10)': 3293, '(41,11)': 3294, '(12,41)': 3295, '(41,12)': 3296, '(41,13)': 3297, '(14,41)': 3298, '(41,14)': 3299, '(41,15)': 3300, '(16,41)': 3301, '(41,16)': 3302, '(41,17)': 3303, '(18,41)': 3304, '(41,18)': 3305, '(41,19)': 3306, '(20,41)': 3307, '(41,20)': 3308, '(41,21)': 3309, '(22,41)': 3310, '(41,22)': 3311, '(41,23)': 3312, '(24,41)': 3313, '(41,24)': 3314, '(41,25)': 3315, '(26,41)': 3316, '(41,26)': 3317, '(41,27)': 3318, '(28,41)': 3319, '(41,28)': 3320, '(41,29)': 3321, '(30,41)': 3322, '(41,30)': 3323, '(41,31)': 3324, '(32,41)': 3325, '(41,32)': 3326, '(41,33)': 3327, '(34,41)': 3328, '(41,34)': 3329, '(41,35)': 3330, '(36,41)': 3331, '(41,36)': 3332, '(41,37)': 3333, '(38,41)': 3334, '(41,38)': 3335, '(41,39)': 3336, '(40,41)': 3337, '(41,40)': 3338, '(1,41)': 3339, '(3,41)': 3340, '(5,41)': 3341, '(7,41)': 3342, '(9,41)': 3343, '(11,41)': 3344, '(13,41)': 3345, '(15,41)': 3346, '(17,41)': 3347, '(19,41)': 3348, '(21,41)': 3349, '(23,41)': 3350, '(25,41)': 3351, '(27,41)': 3352, '(29,41)': 3353, '(31,41)': 3354, '(33,41)': 3355, '(35,41)': 3356, '(37,41)': 3357, '(39,41)': 3358, '(41,41)': 3359, '(0,42)': 3360, '(2,42)': 3361, '(4,42)': 3362, '(6,42)': 3363, '(8,42)': 3364, '(10,42)': 3365, '(12,42)': 3366, '(14,42)': 3367, '(16,42)': 3368, '(18,42)': 3369, '(20,42)': 3370, '(22,42)': 3371, '(24,42)': 3372, '(26,42)': 3373, '(28,42)': 3374, '(30,42)': 3375, '(32,42)': 3376, '(34,42)': 3377, '(36,42)': 3378, '(38,42)': 3379, '(40,42)': 3380, '(42,0)': 3381, '(1,42)': 3382, '(42,1)': 3383, '(42,2)': 3384, '(3,42)': 3385, '(42,3)': 3386, '(42,4)': 3387, '(5,42)': 3388, '(42,5)': 3389, '(42,6)': 3390, '(7,42)': 3391, '(42,7)': 3392, '(42,8)': 3393, '(9,42)': 3394, '(42,9)': 3395, '(42,10)': 3396, '(11,42)': 3397, '(42,11)': 3398, '(42,12)': 3399, '(13,42)': 3400, '(42,13)': 3401, '(42,14)': 3402, '(15,42)': 3403, '(42,15)': 3404, '(42,16)': 3405, '(17,42)': 3406, '(42,17)': 3407, '(42,18)': 3408, '(19,42)': 3409, '(42,19)': 3410, '(42,20)': 3411, '(21,42)': 3412, '(42,21)': 3413, '(42,22)': 3414, '(23,42)': 3415, '(42,23)': 3416, '(42,24)': 3417, '(25,42)': 3418, '(42,25)': 3419, '(42,26)': 3420, '(27,42)': 3421, '(42,27)': 3422, '(42,28)': 3423, '(29,42)': 3424, '(42,29)': 3425, '(42,30)': 3426, '(31,42)': 3427, '(42,31)': 3428, '(42,32)': 3429, '(33,42)': 3430, '(42,33)': 3431, '(42,34)': 3432, '(35,42)': 3433, '(42,35)': 3434, '(42,36)': 3435, '(37,42)': 3436, '(42,37)': 3437, '(42,38)': 3438, '(39,42)': 3439, '(42,39)': 3440, '(42,40)': 3441, '(41,42)': 3442, '(42,41)': 3443, '(42,42)': 3444, '(0,43)': 3445, '(43,0)': 3446, '(43,1)': 3447, '(2,43)': 3448, '(43,2)': 3449, '(43,3)': 3450, '(4,43)': 3451, '(43,4)': 3452, '(43,5)': 3453, '(6,43)': 3454, '(43,6)': 3455, '(43,7)': 3456, '(8,43)': 3457, '(43,8)': 3458, '(43,9)': 3459, '(10,43)': 3460, '(43,10)': 3461, '(43,11)': 3462, '(12,43)': 3463, '(43,12)': 3464, '(43,13)': 3465, '(14,43)': 3466, '(43,14)': 3467, '(43,15)': 3468, '(16,43)': 3469, '(43,16)': 3470, '(43,17)': 3471, '(18,43)': 3472, '(43,18)': 3473, '(43,19)': 3474, '(20,43)': 3475, '(43,20)': 3476, '(43,21)': 3477, '(22,43)': 3478, '(43,22)': 3479, '(43,23)': 3480, '(24,43)': 3481, '(43,24)': 3482, '(43,25)': 3483, '(26,43)': 3484, '(43,26)': 3485, '(43,27)': 3486, '(28,43)': 3487, '(43,28)': 3488, '(43,29)': 3489, '(30,43)': 3490, '(43,30)': 3491, '(43,31)': 3492, '(32,43)': 3493, '(43,32)': 3494, '(43,33)': 3495, '(34,43)': 3496, '(43,34)': 3497, '(43,35)': 3498, '(36,43)': 3499, '(43,36)': 3500, '(43,37)': 3501, '(38,43)': 3502, '(43,38)': 3503, '(43,39)': 3504, '(40,43)': 3505, '(43,40)': 3506, '(43,41)': 3507, '(42,43)': 3508, '(43,42)': 3509, '(1,43)': 3510, '(3,43)': 3511, '(5,43)': 3512, '(7,43)': 3513, '(9,43)': 3514, '(11,43)': 3515, '(13,43)': 3516, '(15,43)': 3517, '(17,43)': 3518, '(19,43)': 3519, '(21,43)': 3520, '(23,43)': 3521, '(25,43)': 3522, '(27,43)': 3523, '(29,43)': 3524, '(31,43)': 3525, '(33,43)': 3526, '(35,43)': 3527, '(37,43)': 3528, '(39,43)': 3529, '(41,43)': 3530, '(43,43)': 3531, '(0,44)': 3532, '(2,44)': 3533, '(4,44)': 3534, '(6,44)': 3535, '(8,44)': 3536, '(10,44)': 3537, '(12,44)': 3538, '(14,44)': 3539, '(16,44)': 3540, '(18,44)': 3541, '(20,44)': 3542, '(22,44)': 3543, '(24,44)': 3544, '(26,44)': 3545, '(28,44)': 3546, '(30,44)': 3547, '(32,44)': 3548, '(34,44)': 3549, '(36,44)': 3550, '(38,44)': 3551, '(40,44)': 3552, '(42,44)': 3553, '(44,0)': 3554, '(1,44)': 3555, '(44,1)': 3556, '(44,2)': 3557, '(3,44)': 3558, '(44,3)': 3559, '(44,4)': 3560, '(5,44)': 3561, '(44,5)': 3562, '(44,6)': 3563, '(7,44)': 3564, '(44,7)': 3565, '(44,8)': 3566, '(9,44)': 3567, '(44,9)': 3568, '(44,10)': 3569, '(11,44)': 3570, '(44,11)': 3571, '(44,12)': 3572, '(13,44)': 3573, '(44,13)': 3574, '(44,14)': 3575, '(15,44)': 3576, '(44,15)': 3577, '(44,16)': 3578, '(17,44)': 3579, '(44,17)': 3580, '(44,18)': 3581, '(19,44)': 3582, '(44,19)': 3583, '(44,20)': 3584, '(21,44)': 3585, '(44,21)': 3586, '(44,22)': 3587, '(23,44)': 3588, '(44,23)': 3589, '(44,24)': 3590, '(25,44)': 3591, '(44,25)': 3592, '(44,26)': 3593, '(27,44)': 3594, '(44,27)': 3595, '(44,28)': 3596, '(29,44)': 3597, '(44,29)': 3598, '(44,30)': 3599, '(31,44)': 3600, '(44,31)': 3601, '(44,32)': 3602, '(33,44)': 3603, '(44,33)': 3604, '(44,34)': 3605, '(35,44)': 3606, '(44,35)': 3607, '(44,36)': 3608, '(37,44)': 3609, '(44,37)': 3610, '(44,38)': 3611, '(39,44)': 3612, '(44,39)': 3613, '(44,40)': 3614, '(41,44)': 3615, '(44,41)': 3616, '(44,42)': 3617, '(43,44)': 3618, '(44,43)': 3619, '(44,44)': 3620, '(0,45)': 3621, '(45,0)': 3622, '(45,1)': 3623, '(2,45)': 3624, '(45,2)': 3625, '(45,3)': 3626, '(4,45)': 3627, '(45,4)': 3628, '(45,5)': 3629, '(6,45)': 3630, '(45,6)': 3631, '(45,7)': 3632, '(8,45)': 3633, '(45,8)': 3634, '(45,9)': 3635, '(10,45)': 3636, '(45,10)': 3637, '(45,11)': 3638, '(12,45)': 3639, '(45,12)': 3640, '(45,13)': 3641, '(14,45)': 3642, '(45,14)': 3643, '(45,15)': 3644, '(16,45)': 3645, '(45,16)': 3646, '(45,17)': 3647, '(18,45)': 3648, '(45,18)': 3649, '(45,19)': 3650, '(20,45)': 3651, '(45,20)': 3652, '(45,21)': 3653, '(22,45)': 3654, '(45,22)': 3655, '(45,23)': 3656, '(24,45)': 3657, '(45,24)': 3658, '(45,25)': 3659, '(26,45)': 3660, '(45,26)': 3661, '(45,27)': 3662, '(28,45)': 3663, '(45,28)': 3664, '(45,29)': 3665, '(30,45)': 3666, '(45,30)': 3667, '(45,31)': 3668, '(32,45)': 3669, '(45,32)': 3670, '(45,33)': 3671, '(34,45)': 3672, '(45,34)': 3673, '(45,35)': 3674, '(36,45)': 3675, '(45,36)': 3676, '(45,37)': 3677, '(38,45)': 3678, '(45,38)': 3679, '(45,39)': 3680, '(40,45)': 3681, '(45,40)': 3682, '(45,41)': 3683, '(42,45)': 3684, '(45,42)': 3685, '(45,43)': 3686, '(44,45)': 3687, '(45,44)': 3688, '(1,45)': 3689, '(3,45)': 3690, '(5,45)': 3691, '(7,45)': 3692, '(9,45)': 3693, '(11,45)': 3694, '(13,45)': 3695, '(15,45)': 3696, '(17,45)': 3697, '(19,45)': 3698, '(21,45)': 3699, '(23,45)': 3700, '(25,45)': 3701, '(27,45)': 3702, '(29,45)': 3703, '(31,45)': 3704, '(33,45)': 3705, '(35,45)': 3706, '(37,45)': 3707, '(39,45)': 3708, '(41,45)': 3709, '(43,45)': 3710, '(45,45)': 3711, '(0,46)': 3712, '(2,46)': 3713, '(4,46)': 3714, '(6,46)': 3715, '(8,46)': 3716, '(10,46)': 3717, '(12,46)': 3718, '(14,46)': 3719, '(16,46)': 3720, '(18,46)': 3721, '(20,46)': 3722, '(22,46)': 3723, '(24,46)': 3724, '(26,46)': 3725, '(28,46)': 3726, '(30,46)': 3727, '(32,46)': 3728, '(34,46)': 3729, '(36,46)': 3730, '(38,46)': 3731, '(40,46)': 3732, '(42,46)': 3733, '(44,46)': 3734, '(46,0)': 3735, '(1,46)': 3736, '(46,1)': 3737, '(46,2)': 3738, '(3,46)': 3739, '(46,3)': 3740, '(46,4)': 3741, '(5,46)': 3742, '(46,5)': 3743, '(46,6)': 3744, '(7,46)': 3745, '(46,7)': 3746, '(46,8)': 3747, '(9,46)': 3748, '(46,9)': 3749, '(46,10)': 3750, '(11,46)': 3751, '(46,11)': 3752, '(46,12)': 3753, '(13,46)': 3754, '(46,13)': 3755, '(46,14)': 3756, '(15,46)': 3757, '(46,15)': 3758, '(46,16)': 3759, '(17,46)': 3760, '(46,17)': 3761, '(46,18)': 3762, '(19,46)': 3763, '(46,19)': 3764, '(46,20)': 3765, '(21,46)': 3766, '(46,21)': 3767, '(46,22)': 3768, '(23,46)': 3769, '(46,23)': 3770, '(46,24)': 3771, '(25,46)': 3772, '(46,25)': 3773, '(46,26)': 3774, '(27,46)': 3775, '(46,27)': 3776, '(46,28)': 3777, '(29,46)': 3778, '(46,29)': 3779, '(46,30)': 3780, '(31,46)': 3781, '(46,31)': 3782, '(46,32)': 3783, '(33,46)': 3784, '(46,33)': 3785, '(46,34)': 3786, '(35,46)': 3787, '(46,35)': 3788, '(46,36)': 3789, '(37,46)': 3790, '(46,37)': 3791, '(46,38)': 3792, '(39,46)': 3793, '(46,39)': 3794, '(46,40)': 3795, '(41,46)': 3796, '(46,41)': 3797, '(46,42)': 3798, '(43,46)': 3799, '(46,43)': 3800, '(46,44)': 3801, '(45,46)': 3802, '(46,45)': 3803, '(46,46)': 3804, '(0,47)': 3805, '(47,0)': 3806, '(47,1)': 3807, '(2,47)': 3808, '(47,2)': 3809, '(47,3)': 3810, '(4,47)': 3811, '(47,4)': 3812, '(47,5)': 3813, '(6,47)': 3814, '(47,6)': 3815, '(47,7)': 3816, '(8,47)': 3817, '(47,8)': 3818, '(47,9)': 3819, '(10,47)': 3820, '(47,10)': 3821, '(47,11)': 3822, '(12,47)': 3823, '(47,12)': 3824, '(47,13)': 3825, '(14,47)': 3826, '(47,14)': 3827, '(47,15)': 3828, '(16,47)': 3829, '(47,16)': 3830, '(47,17)': 3831, '(18,47)': 3832, '(47,18)': 3833, '(47,19)': 3834, '(20,47)': 3835, '(47,20)': 3836, '(47,21)': 3837, '(22,47)': 3838, '(47,22)': 3839, '(47,23)': 3840, '(24,47)': 3841, '(47,24)': 3842, '(47,25)': 3843, '(26,47)': 3844, '(47,26)': 3845, '(47,27)': 3846, '(28,47)': 3847, '(47,28)': 3848, '(47,29)': 3849, '(30,47)': 3850, '(47,30)': 3851, '(47,31)': 3852, '(32,47)': 3853, '(47,32)': 3854, '(47,33)': 3855, '(34,47)': 3856, '(47,34)': 3857, '(47,35)': 3858, '(36,47)': 3859, '(47,36)': 3860, '(47,37)': 3861, '(38,47)': 3862, '(47,38)': 3863, '(47,39)': 3864, '(40,47)': 3865, '(47,40)': 3866, '(47,41)': 3867, '(42,47)': 3868, '(47,42)': 3869, '(47,43)': 3870, '(44,47)': 3871, '(47,44)': 3872, '(47,45)': 3873, '(46,47)': 3874, '(47,46)': 3875, '(1,47)': 3876, '(3,47)': 3877, '(5,47)': 3878, '(7,47)': 3879, '(9,47)': 3880, '(11,47)': 3881, '(13,47)': 3882, '(15,47)': 3883, '(17,47)': 3884, '(19,47)': 3885, '(21,47)': 3886, '(23,47)': 3887, '(25,47)': 3888, '(27,47)': 3889, '(29,47)': 3890, '(31,47)': 3891, '(33,47)': 3892, '(35,47)': 3893, '(37,47)': 3894, '(39,47)': 3895, '(41,47)': 3896, '(43,47)': 3897, '(45,47)': 3898, '(47,47)': 3899, '(0,48)': 3900, '(2,48)': 3901, '(4,48)': 3902, '(6,48)': 3903, '(8,48)': 3904, '(10,48)': 3905, '(12,48)': 3906, '(14,48)': 3907, '(16,48)': 3908, '(18,48)': 3909, '(20,48)': 3910, '(22,48)': 3911, '(24,48)': 3912, '(26,48)': 3913, '(28,48)': 3914, '(30,48)': 3915, '(32,48)': 3916, '(34,48)': 3917, '(36,48)': 3918, '(38,48)': 3919, '(40,48)': 3920, '(42,48)': 3921, '(44,48)': 3922, '(46,48)': 3923, '(48,0)': 3924, '(1,48)': 3925, '(48,1)': 3926, '(48,2)': 3927, '(3,48)': 3928, '(48,3)': 3929, '(48,4)': 3930, '(5,48)': 3931, '(48,5)': 3932, '(48,6)': 3933, '(7,48)': 3934, '(48,7)': 3935, '(48,8)': 3936, '(9,48)': 3937, '(48,9)': 3938, '(48,10)': 3939, '(11,48)': 3940, '(48,11)': 3941, '(48,12)': 3942, '(13,48)': 3943, '(48,13)': 3944, '(48,14)': 3945, '(15,48)': 3946, '(48,15)': 3947, '(48,16)': 3948, '(17,48)': 3949, '(48,17)': 3950, '(48,18)': 3951, '(19,48)': 3952, '(48,19)': 3953, '(48,20)': 3954, '(21,48)': 3955, '(48,21)': 3956, '(48,22)': 3957, '(23,48)': 3958, '(48,23)': 3959, '(48,24)': 3960, '(25,48)': 3961, '(48,25)': 3962, '(48,26)': 3963, '(27,48)': 3964, '(48,27)': 3965, '(48,28)': 3966, '(29,48)': 3967, '(48,29)': 3968, '(48,30)': 3969, '(31,48)': 3970, '(48,31)': 3971, '(48,32)': 3972, '(33,48)': 3973, '(48,33)': 3974, '(48,34)': 3975, '(35,48)': 3976, '(48,35)': 3977, '(48,36)': 3978, '(37,48)': 3979, '(48,37)': 3980, '(48,38)': 3981, '(39,48)': 3982, '(48,39)': 3983, '(48,40)': 3984, '(41,48)': 3985, '(48,41)': 3986, '(48,42)': 3987, '(43,48)': 3988, '(48,43)': 3989, '(48,44)': 3990, '(45,48)': 3991, '(48,45)': 3992, '(48,46)': 3993, '(47,48)': 3994, '(48,47)': 3995, '(48,48)': 3996, '(0,49)': 3997, '(49,0)': 3998, '(49,1)': 3999, '(2,49)': 4000, '(49,2)': 4001, '(49,3)': 4002, '(4,49)': 4003, '(49,4)': 4004, '(49,5)': 4005, '(6,49)': 4006, '(49,6)': 4007, '(49,7)': 4008, '(8,49)': 4009, '(49,8)': 4010, '(49,9)': 4011, '(10,49)': 4012, '(49,10)': 4013, '(49,11)': 4014, '(12,49)': 4015, '(49,12)': 4016, '(49,13)': 4017, '(14,49)': 4018, '(49,14)': 4019, '(49,15)': 4020, '(16,49)': 4021, '(49,16)': 4022, '(49,17)': 4023, '(18,49)': 4024, '(49,18)': 4025, '(49,19)': 4026, '(20,49)': 4027, '(49,20)': 4028, '(49,21)': 4029, '(22,49)': 4030, '(49,22)': 4031, '(49,23)': 4032, '(24,49)': 4033, '(49,24)': 4034, '(49,25)': 4035, '(26,49)': 4036, '(49,26)': 4037, '(49,27)': 4038, '(28,49)': 4039, '(49,28)': 4040, '(49,29)': 4041, '(30,49)': 4042, '(49,30)': 4043, '(49,31)': 4044, '(32,49)': 4045, '(49,32)': 4046, '(49,33)': 4047, '(34,49)': 4048, '(49,34)': 4049, '(49,35)': 4050, '(36,49)': 4051, '(49,36)': 4052, '(49,37)': 4053, '(38,49)': 4054, '(49,38)': 4055, '(49,39)': 4056, '(40,49)': 4057, '(49,40)': 4058, '(49,41)': 4059, '(42,49)': 4060, '(49,42)': 4061, '(49,43)': 4062, '(44,49)': 4063, '(49,44)': 4064, '(49,45)': 4065, '(46,49)': 4066, '(49,46)': 4067, '(49,47)': 4068, '(48,49)': 4069, '(49,48)': 4070, '(1,49)': 4071, '(3,49)': 4072, '(5,49)': 4073, '(7,49)': 4074, '(9,49)': 4075, '(11,49)': 4076, '(13,49)': 4077, '(15,49)': 4078, '(17,49)': 4079, '(19,49)': 4080, '(21,49)': 4081, '(23,49)': 4082, '(25,49)': 4083, '(27,49)': 4084, '(29,49)': 4085, '(31,49)': 4086, '(33,49)': 4087, '(35,49)': 4088, '(37,49)': 4089, '(39,49)': 4090, '(41,49)': 4091, '(43,49)': 4092, '(45,49)': 4093, '(47,49)': 4094, '(49,49)': 4095}` +map of `VOCAB` tokens to their indices + - `CARDINAL_MAP: dict[tuple[int, int], str] = {(-1, 0): 'NORTH', (1, 0): 'SOUTH', (0, -1): 'WEST', (0, 1): 'EAST'}` +map of cardinal directions to appropriate tokens + docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) v1.0.1 @@ -2080,7 +2091,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data return the dataset as tokens according to the passed `maze_tokenizer` the `maze_tokenizer` should be either a `MazeTokenizer` or a -`ModularMazeTokenizer` +`MazeTokenizerModular` if `join_tokens_individual_maze` is True, then the tokens of each maze are joined with a space, and the result is a list of strings. i.e.: @@ -3693,7 +3704,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data return the dataset as tokens according to the passed `maze_tokenizer` the `maze_tokenizer` should be either a `MazeTokenizer` or a -`ModularMazeTokenizer` +`MazeTokenizerModular` if `join_tokens_individual_maze` is True, then the tokens of each maze are joined with a space, and the result is a list of strings. i.e.: @@ -4448,7 +4459,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data helper function to get a maze already with a solution -- `numpy_rng = Generator(PCG64) at 0x1BCBFFCA5E0` +- `numpy_rng = Generator(PCG64) at 0x1674FA9E5E0` docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) @@ -4506,7 +4517,7 @@ generation functions have signature [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/generation/generators.py#L0-L409) -- `numpy_rng = Generator(PCG64) at 0x1BCBFFCA5E0` +- `numpy_rng = Generator(PCG64) at 0x1674FA9E5E0` ### `def get_neighbors_in_bounds` @@ -4715,7 +4726,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ### `class SolvedMaze(maze_dataset.maze.lattice_maze.TargetedLatticeMaze):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1109-L1247) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1116-L1254) Stores a maze and a solution @@ -4733,7 +4744,7 @@ Stores a maze and a solution ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1115-L1158) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1122-L1165) - `solution: jaxtyping.Int8[ndarray, 'coord row_col']` @@ -4744,12 +4755,12 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1170-L1175) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1177-L1182) - `maze: maze_dataset.maze.lattice_maze.LatticeMaze` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1178-L1184) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1185-L1191) ### `def from_lattice_maze` @@ -4762,7 +4773,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1186-L1194) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1193-L1201) ### `def from_targeted_lattice_maze` @@ -4775,7 +4786,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1196-L1212) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1203-L1219) solves the given targeted lattice maze and returns a SolvedMaze @@ -4789,7 +4800,7 @@ solves the given targeted lattice maze and returns a SolvedMaze ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1214-L1237) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1221-L1244) coordinates and their indicies from the solution where a fork is present @@ -4803,7 +4814,7 @@ coordinates and their indicies from the solution where a fork is present ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1239-L1247) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1246-L1254) coordinates from the solution where there is only a single (non-backtracking) point to move to @@ -4918,7 +4929,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class TargetedLatticeMaze(maze_dataset.maze.lattice_maze.LatticeMaze):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1036-L1106) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1043-L1113) A LatticeMaze with a start and end position @@ -4945,7 +4956,7 @@ A LatticeMaze with a start and end position ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1073-L1078) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1080-L1085) ### `def get_end_pos_tokens` @@ -4954,7 +4965,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1087-L1092) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1094-L1099) ### `def from_lattice_maze` @@ -4968,7 +4979,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1094-L1106) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1101-L1113) ### `def serialize` @@ -5070,7 +5081,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class LatticeMaze(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L101-L1033) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L101-L1040) lattice maze (nodes on a lattice, connections only to neighboring nodes) @@ -5255,12 +5266,13 @@ TODO: other connected components? allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L368-L477) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L368-L484) return a path between randomly chosen start and end nodes within the connected component @@ -5282,6 +5294,8 @@ cause the same position to be selected as both start and end. a deadend (defaults to `False`) (defaults to `False`) - `deadend_end : bool` whether to ***force*** the end position to be a deadend (defaults to `False`) (defaults to `False`) +- `endpoints_not_equal : bool` whether to ensure tha the start and end + point are not the same (defaults to `False`) ### Returns: @@ -5303,7 +5317,7 @@ cause the same position to be selected as both start and end. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L482-L485) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L489-L492) ### `def from_adj_list` @@ -5315,7 +5329,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L487-L526) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L494-L533) create a LatticeMaze from a list of connections @@ -5329,7 +5343,7 @@ create a LatticeMaze from a list of connections ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L528-L547) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L535-L554) ### `def as_tokens` @@ -5341,7 +5355,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L596-L604) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L603-L611) serialize maze and solution to tokens @@ -5356,7 +5370,7 @@ serialize maze and solution to tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L705-L731) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L712-L738) Constructs a maze from a tokenization. Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. @@ -5372,7 +5386,7 @@ Constructs a maze from a tokenization. Only legacy tokenizers and their ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L762-L816) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L769-L823) ### `def from_pixels` @@ -5384,7 +5398,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L866-L981) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L873-L988) ### `def as_ascii` @@ -5393,7 +5407,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L998-L1019) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1005-L1026) return an ASCII grid of the maze @@ -5404,7 +5418,7 @@ return an ASCII grid of the maze ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1021-L1033) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/__init__.py#L1028-L1040) ### `def serialize` @@ -5541,7 +5555,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data # `maze_dataset.maze.lattice_maze` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L0-L1350) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L0-L1357) - `RGB = tuple[int, int, int]` @@ -5632,7 +5646,7 @@ map ascii characters to pixel colors ### `class LatticeMaze(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L101-L1033) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L101-L1040) lattice maze (nodes on a lattice, connections only to neighboring nodes) @@ -5817,12 +5831,13 @@ TODO: other connected components? allowed_start: list[tuple[int, int]] | None = None, allowed_end: list[tuple[int, int]] | None = None, deadend_start: bool = False, - deadend_end: bool = False + deadend_end: bool = False, + endpoints_not_equal: bool = False ) -> jaxtyping.Int8[ndarray, 'coord row_col'] ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L368-L477) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L368-L484) return a path between randomly chosen start and end nodes within the connected component @@ -5844,6 +5859,8 @@ cause the same position to be selected as both start and end. a deadend (defaults to `False`) (defaults to `False`) - `deadend_end : bool` whether to ***force*** the end position to be a deadend (defaults to `False`) (defaults to `False`) +- `endpoints_not_equal : bool` whether to ensure tha the start and end + point are not the same (defaults to `False`) ### Returns: @@ -5865,7 +5882,7 @@ cause the same position to be selected as both start and end. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L482-L485) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L489-L492) ### `def from_adj_list` @@ -5877,7 +5894,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L487-L526) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L494-L533) create a LatticeMaze from a list of connections @@ -5891,7 +5908,7 @@ create a LatticeMaze from a list of connections ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L528-L547) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L535-L554) ### `def as_tokens` @@ -5903,7 +5920,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L596-L604) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L603-L611) serialize maze and solution to tokens @@ -5918,7 +5935,7 @@ serialize maze and solution to tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L705-L731) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L712-L738) Constructs a maze from a tokenization. Only legacy tokenizers and their `MazeTokenizerModular` analogs are supported. @@ -5934,7 +5951,7 @@ Constructs a maze from a tokenization. Only legacy tokenizers and their ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L762-L816) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L769-L823) ### `def from_pixels` @@ -5946,7 +5963,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L866-L981) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L873-L988) ### `def as_ascii` @@ -5955,7 +5972,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L998-L1019) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1005-L1026) return an ASCII grid of the maze @@ -5966,7 +5983,7 @@ return an ASCII grid of the maze ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1021-L1033) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1028-L1040) ### `def serialize` @@ -6016,7 +6033,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class TargetedLatticeMaze(LatticeMaze):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1036-L1106) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1043-L1113) A LatticeMaze with a start and end position @@ -6043,7 +6060,7 @@ A LatticeMaze with a start and end position ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1073-L1078) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1080-L1085) ### `def get_end_pos_tokens` @@ -6052,7 +6069,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1087-L1092) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1094-L1099) ### `def from_lattice_maze` @@ -6066,7 +6083,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1094-L1106) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1101-L1113) ### `def serialize` @@ -6168,7 +6185,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class SolvedMaze(TargetedLatticeMaze):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1109-L1247) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1116-L1254) Stores a maze and a solution @@ -6186,7 +6203,7 @@ Stores a maze and a solution ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1115-L1158) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1122-L1165) - `solution: jaxtyping.Int8[ndarray, 'coord row_col']` @@ -6197,12 +6214,12 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1170-L1175) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1177-L1182) - `maze: maze_dataset.maze.lattice_maze.LatticeMaze` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1178-L1184) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1185-L1191) ### `def from_lattice_maze` @@ -6215,7 +6232,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1186-L1194) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1193-L1201) ### `def from_targeted_lattice_maze` @@ -6228,7 +6245,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1196-L1212) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1203-L1219) solves the given targeted lattice maze and returns a SolvedMaze @@ -6242,7 +6259,7 @@ solves the given targeted lattice maze and returns a SolvedMaze ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1214-L1237) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1221-L1244) coordinates and their indicies from the solution where a fork is present @@ -6256,7 +6273,7 @@ coordinates and their indicies from the solution where a fork is present ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1239-L1247) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1246-L1254) coordinates from the solution where there is only a single (non-backtracking) point to move to @@ -6377,7 +6394,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1250-L1260) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/maze/lattice_maze.py#L1257-L1267) Detects the type of pixels data by checking for the presence of start and end pixels @@ -8115,9 +8132,13 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ### `class TokenizationMode(enum.Enum):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L68-L89) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L68-L93) + +legacy tokenization modes -LEGACY: mode of tokenization +> \[!CAUTION\] Legacy mode of tokenization. will still be around in +> future releases, but is no longer recommended for use. Use +> `MazeTokenizerModular` instead. ### Abbreviations: @@ -8152,7 +8173,7 @@ LEGACY: mode of tokenization ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L88-L89) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L92-L93) ### Inherited Members @@ -8162,23 +8183,24 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ### `class _TokenizerElement(muutils.json_serialize.serializable_dataclass.SerializableDataclass, abc.ABC):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L458-L673) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L462-L680) Superclass for tokenizer elements. Subclasses contain modular functionality for maze tokenization. ### Development -Due to the functionality of `ALL_TOKENIZERS`, `_TokenizerElement` -subclasses may only contain fields of type `utils.FiniteValued`. -Implementing a subclass with an `int` or `float`-typed field, for -example, is not supported. In the event that adding such fields is -deemed necessary, `ALL_TOKENIZERS` must be updated. +> \[!TIP\] Due to the functionality of `get_all_tokenizers()`, +> `_TokenizerElement` subclasses may only contain fields of type +> `utils.FiniteValued`. Implementing a subclass with an `int` or +> `float`-typed field, for example, is not supported. In the event that +> adding such fields is deemed necessary, `get_all_tokenizers()` must be +> updated. - `name: str` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L480-L489) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L487-L496) ### `def tokenizer_elements` @@ -8190,7 +8212,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L524-L580) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L531-L587) Returns a list of all `_TokenizerElement` instances contained in the subtree. Currently only detects `_TokenizerElement` instances which are @@ -8209,7 +8231,7 @@ either direct attributes of another instance or which sit inside a ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L582-L602) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L589-L609) Returns a string representation of the tree of tokenizer elements contained in `self`. @@ -8228,7 +8250,7 @@ contained in `self`. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L604-L629) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L611-L636) Returns a dictionary representation of the tree of tokenizer elements contained in `self`. @@ -8240,7 +8262,7 @@ contained in `self`. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L631-L635) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L638-L642) Returns the binding used in `MazeTokenizerModular` for that type of `_TokenizerElement`. @@ -8252,7 +8274,7 @@ Returns the binding used in `MazeTokenizerModular` for that type of ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L637-L642) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L644-L649) Converts a maze element into a list of tokens. Not all `_TokenizerElement` subclasses produce tokens, so this is not an @@ -8266,7 +8288,7 @@ override this method. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L644-L673) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L651-L680) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -8362,7 +8384,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class MazeTokenizerModular(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1882-L2174) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1903-L2195) Tokenizer for mazes @@ -8399,7 +8421,7 @@ Tokenizer for mazes ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1904-L1908) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1925-L1929) ### `def hash_b64` @@ -8408,14 +8430,14 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1914-L1924) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1935-L1945) filename-safe base64 encoding of the hash - `tokenizer_elements: list[maze_dataset.tokenization.maze_tokenizer._TokenizerElement]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1928-L1930) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1949-L1951) ### `def tokenizer_element_tree` @@ -8424,7 +8446,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1932-L1947) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1953-L1968) Returns a string representation of the tree of tokenizer elements contained in `self`. @@ -8437,7 +8459,7 @@ contained in `self`. - `tokenizer_element_tree_concrete` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1949-L1954) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1970-L1975) Property wrapper for `tokenizer_element_tree` so that it can be used in `properties_to_serialize`. @@ -8449,14 +8471,14 @@ Property wrapper for `tokenizer_element_tree` so that it can be used in ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1956-L1960) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1977-L1981) Nested dictionary of the internal `TokenizerElement`s. - `name: str` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1962-L1965) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1983-L1986) Serializes MazeTokenizer into a key for encoding in zanj @@ -8467,7 +8489,7 @@ Serializes MazeTokenizer into a key for encoding in zanj ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1967-L1974) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1988-L1995) Single-level dictionary of the internal `TokenizerElement`s. @@ -8481,7 +8503,7 @@ Single-level dictionary of the internal `TokenizerElement`s. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1993-L2009) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2014-L2030) Returns True if the `MazeTokenizerModular` instance contains ALL of the items specified in `elements`. @@ -8504,7 +8526,7 @@ currently supported. To do such a query, assemble multiple calls to ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2011-L2016) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2032-L2037) Returns `True` if `self` is a valid tokenizer. Evaluates the validity of all of `self.tokenizer_elements` according to each one’s method. @@ -8516,7 +8538,7 @@ all of `self.tokenizer_elements` according to each one’s method. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2018-L2025) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2039-L2046) Returns if `self` has identical stringification behavior as any legacy `MazeTokenizer`. @@ -8528,13 +8550,13 @@ Returns if `self` has identical stringification behavior as any legacy ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2027-L2054) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2048-L2075) Returns if the tokenizer is returned by -`all_tokenizers._get_all_tokenizers`, the set of tested and reliable +`all_tokenizers.get_all_tokenizers`, the set of tested and reliable tokenizers. -Since evaluating `all_tokenizers._get_all_tokenizers` is expensive, +Since evaluating `all_tokenizers.get_all_tokenizers` is expensive, instead checks for membership of `self`’s hash in `get_all_tokenizer_hashes()`. @@ -8548,7 +8570,7 @@ not tested. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2056-L2057) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2077-L2078) ### `def is_UT` @@ -8557,7 +8579,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2059-L2060) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2080-L2081) ### `def from_legacy` @@ -8569,7 +8591,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2065-L2080) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2086-L2101) Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent `MazeTokenizerModular` instance. @@ -8584,7 +8606,7 @@ Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2084-L2094) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2105-L2115) Infers most `MazeTokenizerModular` parameters from a full sequence of tokens. @@ -8592,33 +8614,33 @@ tokens. - `token_arr: list[str] | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2096-L2099) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2117-L2120) map from index to token - `tokenizer_map: dict[str, int]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2101-L2104) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2122-L2125) map from token to index - `vocab_size: int` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2106-L2109) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2127-L2130) Number of tokens in the static vocab - `n_tokens: int` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2111-L2115) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2132-L2136) - `padding_token_index: int` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2117-L2119) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2138-L2140) ### `def to_tokens` @@ -8627,7 +8649,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2124-L2129) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2145-L2150) Converts maze into a list of tokens. @@ -8641,7 +8663,7 @@ Converts maze into a list of tokens. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2131-L2136) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2152-L2157) ### `def strings_to_coords` @@ -8653,7 +8675,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2138-L2147) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2159-L2168) ### `def encode` @@ -8662,7 +8684,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2149-L2160) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2170-L2181) encode a string or list of strings into a list of tokens @@ -8673,7 +8695,7 @@ encode a string or list of strings into a list of tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2162-L2174) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L2183-L2195) decode a list of tokens into a string or list of strings @@ -8725,21 +8747,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class PromptSequencers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1648-L1879) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1667-L1900) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PromptSequencer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'prompt_sequencer'` ### `class PromptSequencers.AOTP(maze_dataset.tokenization.maze_tokenizer.PromptSequencers._PromptSequencer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1801-L1843) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1822-L1864) Sequences a prompt as \[adjacency list, origin, target, path\]. @@ -8837,7 +8855,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class PromptSequencers.AOP(maze_dataset.tokenization.maze_tokenizer.PromptSequencers._PromptSequencer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1845-L1879) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1866-L1900) Sequences a prompt as \[adjacency list, origin, path\]. Still includes “” and “” tokens, but no representation of the @@ -8931,21 +8949,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class CoordTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L722-L772) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L729-L781) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_CoordTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'coord_tokenizer'` ### `class CoordTokenizers.UT(maze_dataset.tokenization.maze_tokenizer.CoordTokenizers._CoordTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L743-L748) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L752-L757) Unique token coordinate tokenizer. @@ -8968,7 +8982,7 @@ Unique token coordinate tokenizer. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L747-L748) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L756-L757) Converts a maze element into a list of tokens. Not all `_TokenizerElement` subclasses produce tokens, so this is not an @@ -9037,7 +9051,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class CoordTokenizers.CTT(maze_dataset.tokenization.maze_tokenizer.CoordTokenizers._CoordTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L750-L772) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L759-L781) Coordinate tuple tokenizer @@ -9078,7 +9092,7 @@ Coordinate tuple tokenizer ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L765-L772) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L774-L781) Converts a maze element into a list of tokens. Not all `_TokenizerElement` subclasses produce tokens, so this is not an @@ -9147,21 +9161,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class AdjListTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1017-L1255) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1026-L1266) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_AdjListTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'adj_list_tokenizer'` ### `class AdjListTokenizers.AdjListCoord(maze_dataset.tokenization.maze_tokenizer.AdjListTokenizers._AdjListTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1197-L1223) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1208-L1234) Represents an edge group as tokens for the leading coord followed by coord tokens for the other group members. @@ -9257,7 +9267,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class AdjListTokenizers.AdjListCardinal(maze_dataset.tokenization.maze_tokenizer.AdjListTokenizers._AdjListTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1225-L1255) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1236-L1266) Represents an edge group as coord tokens for the leading coord and cardinal tokens relative to the leading coord for the other group @@ -9359,17 +9369,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeGroupings(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L775-L880) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L784-L889) -Namespace for `EdgeGrouping` subclass hierarchy used by -`AdjListTokenizer`. +Namespace for `_EdgeGrouping` subclass hierarchy used by +`_AdjListTokenizer`. - `key = 'edge_grouping'` ### `class EdgeGroupings.Ungrouped(maze_dataset.tokenization.maze_tokenizer.EdgeGroupings._EdgeGrouping):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L817-L838) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L826-L847) No grouping occurs, each edge is tokenized individually. @@ -9456,7 +9466,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeGroupings.ByLeadingCoord(maze_dataset.tokenization.maze_tokenizer.EdgeGroupings._EdgeGrouping):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L840-L880) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L849-L889) All edges with the same leading coord are grouped together. @@ -9502,7 +9512,7 @@ All edges with the same leading coord are grouped together. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L841-L880) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L850-L889) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -9612,17 +9622,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgePermuters(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L883-L953) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L892-L962) -Namespace for `EdgePermuter` subclass hierarchy used by -`AdjListTokenizer`. +Namespace for `_EdgePermuter` subclass hierarchy used by +`_AdjListTokenizer`. - `key = 'edge_permuter'` ### `class EdgePermuters.SortedCoords(maze_dataset.tokenization.maze_tokenizer.EdgePermuters._EdgePermuter):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L917-L933) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L926-L942) returns a sorted representation. useful for checking consistency @@ -9699,7 +9709,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgePermuters.RandomCoords(maze_dataset.tokenization.maze_tokenizer.EdgePermuters._EdgePermuter):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L935-L942) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L944-L951) Permutes each edge randomly. @@ -9776,7 +9786,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgePermuters.BothCoords(maze_dataset.tokenization.maze_tokenizer.EdgePermuters._EdgePermuter):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L944-L953) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L953-L962) Includes both possible permutations of every edge in the output. Since input ConnectionList has only 1 instance of each edge, a call to @@ -9856,17 +9866,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeSubsets(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L956-L1014) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L965-L1023) -Namespace for `EdgeSubset` subclass hierarchy used by -`AdjListTokenizer`. +Namespace for `_EdgeSubset` subclass hierarchy used by +`_AdjListTokenizer`. - `key = 'edge_subset'` ### `class EdgeSubsets.AllLatticeEdges(maze_dataset.tokenization.maze_tokenizer.EdgeSubsets._EdgeSubset):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L983-L991) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L992-L1000) All 2n\*\*2-2n edges of the lattice are tokenized. If a wall exists on that edge, the edge is tokenized in the same manner, using @@ -9945,7 +9955,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeSubsets.ConnectionEdges(maze_dataset.tokenization.maze_tokenizer.EdgeSubsets._EdgeSubset):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L993-L1014) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1002-L1023) Only edges which contain a connection are tokenized. Alternatively, only edges which contain a wall are tokenized. @@ -10031,21 +10041,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class TargetTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1258-L1307) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1269-L1320) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_TargetTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'target_tokenizer'` ### `class TargetTokenizers.Unlabeled(maze_dataset.tokenization.maze_tokenizer.TargetTokenizers._TargetTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1278-L1307) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1291-L1320) Targets are simply listed as coord tokens. - `post`: Whether all coords include an integral following delimiter token @@ -10073,7 +10079,7 @@ include an integral following delimiter token ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1286-L1303) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1299-L1316) Returns tokens representing the target. @@ -10084,7 +10090,7 @@ Returns tokens representing the target. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1305-L1307) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1318-L1320) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -10192,21 +10198,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1310-L1401) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1323-L1416) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepSize` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'step_size'` ### `class StepSizes.Singles(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1339-L1348) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1354-L1363) Every coord in `maze.solution` is represented. Legacy tokenizers all use this behavior. @@ -10286,7 +10288,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes.Straightaways(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1350-L1368) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1365-L1383) Only coords where the path turns are represented in the path. I.e., the path is represented as a sequence of straightaways, specified by the @@ -10308,7 +10310,7 @@ coords at the turns. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1351-L1368) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1366-L1383) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -10420,7 +10422,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes.Forks(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1370-L1380) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1385-L1395) Only coords at forks, where the path has \>=2 options for the next step are included. Excludes the option of backtracking. The starting and @@ -10501,7 +10503,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes.ForksAndStraightaways(maze_dataset.tokenization.maze_tokenizer.StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1382-L1401) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1397-L1416) Includes the union of the coords included by `Forks` and `Straightaways`. See documentation for those classes for details. @@ -10522,7 +10524,7 @@ Includes the union of the coords included by `Forks` and ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1383-L1401) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1398-L1416) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -10634,14 +10636,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1404-L1522) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1419-L1539) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'step_tokenizers'` @@ -10650,7 +10648,7 @@ ABC for namespaces ### `class StepTokenizers.Coord(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1440-L1453) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1457-L1470) A direct tokenization of the end position coord represents the step. @@ -10676,7 +10674,7 @@ A direct tokenization of the end position coord represents the step. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1446-L1453) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1463-L1470) Tokenizes a single step in the solution. @@ -10750,7 +10748,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers.Cardinal(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1455-L1467) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1472-L1484) A step is tokenized with a cardinal direction token. It is the direction of the step from the starting position along the solution. @@ -10777,7 +10775,7 @@ of the step from the starting position along the solution. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1462-L1467) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1479-L1484) Tokenizes a single step in the solution. @@ -10851,7 +10849,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers.Relative(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1469-L1495) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1486-L1512) Tokenizes a solution step using relative first-person directions (right, left, forward, etc.). To simplify the indeterminacy, at the start of a @@ -10881,7 +10879,7 @@ starting position. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1476-L1495) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1493-L1512) Tokenizes a single step in the solution. @@ -10955,7 +10953,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers.Distance(maze_dataset.tokenization.maze_tokenizer.StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1497-L1510) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1514-L1527) A count of the number of individual steps from the starting point to the end point. Contains no information about directionality, only the @@ -10985,7 +10983,7 @@ constraint is enforced in `_PathTokenizer.is_valid`. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1506-L1510) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1523-L1527) Tokenizes a single step in the solution. @@ -11059,21 +11057,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class PathTokenizers(maze_dataset.tokenization.maze_tokenizer.__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1525-L1645) - -ABC for namespaces +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1542-L1664) -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PathTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'path_tokenizer'` ### `class PathTokenizers.StepSequence(maze_dataset.tokenization.maze_tokenizer.PathTokenizers._PathTokenizer, abc.ABC):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1543-L1645) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1562-L1664) Any `PathTokenizer` where the tokenization may be assembled from token subsequences, each of which represents a step along the path. Allows for @@ -11125,7 +11119,7 @@ pattern. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1569-L1581) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1588-L1600) Returns tokens representing the solution path. @@ -11136,7 +11130,7 @@ Returns tokens representing the solution path. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1634-L1645) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L1653-L1664) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -11254,12 +11248,12 @@ validate the types of all the fields on a `SerializableDataclass`. calls ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L107-L125) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L111-L129) ### `class MazeTokenizer(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L138-L455) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L142-L459) LEGACY Tokenizer for mazes @@ -11320,39 +11314,39 @@ is `None` - `name: str` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L197-L202) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L201-L206) - `node_strings_map: Optional[Mapping[tuple[int, int], list[str]]]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L220-L229) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L224-L233) map a coordinate to a token - `token_arr: list[str] | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L274-L278) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L278-L282) - `tokenizer_map: dict[str, int] | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L285-L289) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L289-L293) - `vocab_size: int | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L295-L299) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L299-L303) - `n_tokens: int | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L306-L310) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L310-L314) - `padding_token_index: int | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L316-L320) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L320-L324) ### `def coords_to_strings` @@ -11365,7 +11359,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L325-L349) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L329-L353) ### `def strings_to_coords` @@ -11377,7 +11371,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L351-L356) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L355-L360) ### `def encode` @@ -11386,7 +11380,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L358-L369) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L362-L373) encode a string or list of strings into a list of tokens @@ -11401,19 +11395,19 @@ encode a string or list of strings into a list of tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L371-L384) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L375-L388) decode a list of tokens into a string or list of strings - `coordinate_tokens_coords: dict[tuple[int, int], int]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L389-L410) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L393-L414) - `coordinate_tokens_ids: dict[str, int]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L412-L422) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L416-L426) ### `def summary` @@ -11422,7 +11416,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L427-L433) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L431-L437) returns a summary of the tokenization mode @@ -11433,7 +11427,7 @@ returns a summary of the tokenization mode ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L435-L441) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L439-L445) returns true if a tokenization mode is Adjacency list, Origin, Target, Path @@ -11445,7 +11439,7 @@ Path ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L443-L444) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L447-L448) ### `def clear_cache` @@ -11454,7 +11448,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L446-L455) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/__init__.py#L450-L459) clears all cached properties @@ -11509,30 +11503,31 @@ v1.0.1 ## Contents -Contains `ALL_TOKENIZERS` and supporting limited-use functions. +Contains `get_all_tokenizers()` and supporting limited-use functions. -# `ALL_TOKENIZERS` +# `get_all_tokenizers()` -A comprehensive collection of all valid `MazeTokenizerModular` objects. -This is an overwhelming majority subset of the set of all possible -`MazeTokenizerModular` objects. Other tokenizers not contained in -`ALL_TOKENIZERS` may be possible to construct, but they are untested and -not guaranteed to work. This collection is in a separate module since it -is expensive to compute and will grow more expensive as features are -added to `MazeTokenizerModular`. +returns a comprehensive collection of all valid `MazeTokenizerModular` +objects. This is an overwhelming majority subset of the set of all +possible `MazeTokenizerModular` objects. Other tokenizers not contained +in `get_all_tokenizers()` may be possible to construct, but they are +untested and not guaranteed to work. This collection is in a separate +module since it is expensive to compute and will grow more expensive as +features are added to `MazeTokenizerModular`. ## Use Cases In general, uses for this module are limited to development of the library and specific research studying many tokenization behaviors. - Unit testing: - Tokenizers to use in unit tests are sampled from -`ALL_TOKENIZERS` - Large-scale tokenizer research: - Specific research -training models on many tokenization behaviors can use `ALL_TOKENIZERS` -as the maximally inclusive collection - `ALL_TOKENIZERS` may be -subsequently filtered using `MazeTokenizerModular.has_element` For other -uses, it’s likely that the computational expense can be avoided by -using - `maze_tokenizer.get_all_tokenizer_hashes()` for membership -checks - `utils.all_instances` for generating smaller subsets of +`get_all_tokenizers()` - Large-scale tokenizer research: - Specific +research training models on many tokenization behaviors can use +`get_all_tokenizers()` as the maximally inclusive collection - +`get_all_tokenizers()` may be subsequently filtered using +`MazeTokenizerModular.has_element` For other uses, it’s likely that the +computational expense can be avoided by using - +`maze_tokenizer.get_all_tokenizer_hashes()` for membership checks - +`utils.all_instances` for generating smaller subsets of `MazeTokenizerModular` or `_TokenizerElement` objects # `EVERY_TEST_TOKENIZERS` @@ -11556,30 +11551,31 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data # `maze_dataset.tokenization.all_tokenizers` -Contains `ALL_TOKENIZERS` and supporting limited-use functions. +Contains `get_all_tokenizers()` and supporting limited-use functions. -### `ALL_TOKENIZERS` +### `get_all_tokenizers()` -A comprehensive collection of all valid `MazeTokenizerModular` objects. -This is an overwhelming majority subset of the set of all possible -`MazeTokenizerModular` objects. Other tokenizers not contained in -`ALL_TOKENIZERS` may be possible to construct, but they are untested and -not guaranteed to work. This collection is in a separate module since it -is expensive to compute and will grow more expensive as features are -added to `MazeTokenizerModular`. +returns a comprehensive collection of all valid `MazeTokenizerModular` +objects. This is an overwhelming majority subset of the set of all +possible `MazeTokenizerModular` objects. Other tokenizers not contained +in `get_all_tokenizers()` may be possible to construct, but they are +untested and not guaranteed to work. This collection is in a separate +module since it is expensive to compute and will grow more expensive as +features are added to `MazeTokenizerModular`. #### Use Cases In general, uses for this module are limited to development of the library and specific research studying many tokenization behaviors. - Unit testing: - Tokenizers to use in unit tests are sampled from -`ALL_TOKENIZERS` - Large-scale tokenizer research: - Specific research -training models on many tokenization behaviors can use `ALL_TOKENIZERS` -as the maximally inclusive collection - `ALL_TOKENIZERS` may be -subsequently filtered using `MazeTokenizerModular.has_element` For other -uses, it’s likely that the computational expense can be avoided by -using - `maze_tokenizer.get_all_tokenizer_hashes()` for membership -checks - `utils.all_instances` for generating smaller subsets of +`get_all_tokenizers()` - Large-scale tokenizer research: - Specific +research training models on many tokenization behaviors can use +`get_all_tokenizers()` as the maximally inclusive collection - +`get_all_tokenizers()` may be subsequently filtered using +`MazeTokenizerModular.has_element` For other uses, it’s likely that the +computational expense can be avoided by using - +`maze_tokenizer.get_all_tokenizer_hashes()` for membership checks - +`utils.all_instances` for generating smaller subsets of `MazeTokenizerModular` or `_TokenizerElement` objects ### `EVERY_TEST_TOKENIZERS` @@ -11616,7 +11612,7 @@ expensive function. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L84-L87) -Casts ALL_TOKENIZERS to a set. +Casts `get_all_tokenizers()` to a set. ### `def sample_all_tokenizers` @@ -11629,7 +11625,7 @@ Casts ALL_TOKENIZERS to a set. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L96-L98) -Samples `n` tokenizers from `ALL_TOKENIZERS`. +Samples `n` tokenizers from `get_all_tokenizers()`. ### `def sample_tokenizers_for_test` @@ -11642,8 +11638,9 @@ Samples `n` tokenizers from `ALL_TOKENIZERS`. [View Source on GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L101-L116) -Returns a sample of size `n` of unique elements from `ALL_TOKENIZERS`, -always including every element in `EVERY_TEST_TOKENIZERS`. +Returns a sample of size `n` of unique elements from +`get_all_tokenizers()`, always including every element in +`EVERY_TEST_TOKENIZERS`. ### `def save_hashes` @@ -11659,7 +11656,7 @@ always including every element in `EVERY_TEST_TOKENIZERS`. GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/all_tokenizers.py#L119-L181) Computes, sorts, and saves the hashes of every member of -`ALL_TOKENIZERS`. +`get_all_tokenizers()`. docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) @@ -11701,7 +11698,7 @@ turning a maze into text: `MazeTokenizerModular` and the legacy `TokenizationMode` enum and `MazeTokenizer` class [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L0-L2235) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L0-L2256) ### `class TokenError(builtins.ValueError):` @@ -11723,9 +11720,13 @@ error for tokenization ### `class TokenizationMode(enum.Enum):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L68-L89) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L68-L93) + +legacy tokenization modes -LEGACY: mode of tokenization +> \[!CAUTION\] Legacy mode of tokenization. will still be around in +> future releases, but is no longer recommended for use. Use +> `MazeTokenizerModular` instead. ### Abbreviations: @@ -11760,7 +11761,7 @@ LEGACY: mode of tokenization ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L88-L89) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L92-L93) ### Inherited Members @@ -11776,7 +11777,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L100-L104) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L104-L108) ### `def get_tokens_up_to_path_start` @@ -11789,12 +11790,12 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L107-L125) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L111-L129) ### `class MazeTokenizer(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L138-L455) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L142-L459) LEGACY Tokenizer for mazes @@ -11855,39 +11856,39 @@ is `None` - `name: str` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L197-L202) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L201-L206) - `node_strings_map: Optional[Mapping[tuple[int, int], list[str]]]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L220-L229) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L224-L233) map a coordinate to a token - `token_arr: list[str] | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L274-L278) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L278-L282) - `tokenizer_map: dict[str, int] | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L285-L289) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L289-L293) - `vocab_size: int | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L295-L299) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L299-L303) - `n_tokens: int | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L306-L310) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L310-L314) - `padding_token_index: int | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L316-L320) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L320-L324) ### `def coords_to_strings` @@ -11900,7 +11901,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L325-L349) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L329-L353) ### `def strings_to_coords` @@ -11912,7 +11913,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L351-L356) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L355-L360) ### `def encode` @@ -11921,7 +11922,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L358-L369) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L362-L373) encode a string or list of strings into a list of tokens @@ -11936,19 +11937,19 @@ encode a string or list of strings into a list of tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L371-L384) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L375-L388) decode a list of tokens into a string or list of strings - `coordinate_tokens_coords: dict[tuple[int, int], int]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L389-L410) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L393-L414) - `coordinate_tokens_ids: dict[str, int]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L412-L422) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L416-L426) ### `def summary` @@ -11957,7 +11958,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L427-L433) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L431-L437) returns a summary of the tokenization mode @@ -11968,7 +11969,7 @@ returns a summary of the tokenization mode ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L435-L441) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L439-L445) returns true if a tokenization mode is Adjacency list, Origin, Target, Path @@ -11980,7 +11981,7 @@ Path ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L443-L444) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L447-L448) ### `def clear_cache` @@ -11989,7 +11990,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L446-L455) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L450-L459) clears all cached properties @@ -12045,37 +12046,33 @@ validate the types of all the fields on a `SerializableDataclass`. calls ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L679-L693) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L686-L700) mark a \_TokenizerElement as unsupported. -Classes marked with this decorator won’t show up in ALL_TOKENIZERS and -thus wont be tested. The classes marked in release 1.0.0 did work -reliably before being marked, but they can’t be instantiated since the -decorator adds an abstract method. The decorator exists to prune the -space of tokenizers returned by `all_instances` both for testing and -usage. Previously, the space was too large, resulting in impractical -runtimes. These decorators could be removed in future releases to expand -the space of possible tokenizers. +Classes marked with this decorator won’t show up in +`get_all_tokenizers()` and thus wont be tested. The classes marked in +release 1.0.0 did work reliably before being marked, but they can’t be +instantiated since the decorator adds an abstract method. The decorator +exists to prune the space of tokenizers returned by `all_instances` both +for testing and usage. Previously, the space was too large, resulting in +impractical runtimes. These decorators could be removed in future +releases to expand the space of possible tokenizers. ### `class CoordTokenizers(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L722-L772) - -ABC for namespaces - -### Properties +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L729-L781) -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_CoordTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'coord_tokenizer'` ### `class CoordTokenizers.UT(CoordTokenizers._CoordTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L743-L748) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L752-L757) Unique token coordinate tokenizer. @@ -12098,7 +12095,7 @@ Unique token coordinate tokenizer. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L747-L748) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L756-L757) Converts a maze element into a list of tokens. Not all `_TokenizerElement` subclasses produce tokens, so this is not an @@ -12167,7 +12164,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class CoordTokenizers.CTT(CoordTokenizers._CoordTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L750-L772) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L759-L781) Coordinate tuple tokenizer @@ -12208,7 +12205,7 @@ Coordinate tuple tokenizer ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L765-L772) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L774-L781) Converts a maze element into a list of tokens. Not all `_TokenizerElement` subclasses produce tokens, so this is not an @@ -12277,17 +12274,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeGroupings(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L775-L880) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L784-L889) -Namespace for `EdgeGrouping` subclass hierarchy used by -`AdjListTokenizer`. +Namespace for `_EdgeGrouping` subclass hierarchy used by +`_AdjListTokenizer`. - `key = 'edge_grouping'` ### `class EdgeGroupings.Ungrouped(EdgeGroupings._EdgeGrouping):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L817-L838) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L826-L847) No grouping occurs, each edge is tokenized individually. @@ -12374,7 +12371,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeGroupings.ByLeadingCoord(EdgeGroupings._EdgeGrouping):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L840-L880) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L849-L889) All edges with the same leading coord are grouped together. @@ -12420,7 +12417,7 @@ All edges with the same leading coord are grouped together. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L841-L880) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L850-L889) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -12530,17 +12527,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgePermuters(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L883-L953) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L892-L962) -Namespace for `EdgePermuter` subclass hierarchy used by -`AdjListTokenizer`. +Namespace for `_EdgePermuter` subclass hierarchy used by +`_AdjListTokenizer`. - `key = 'edge_permuter'` ### `class EdgePermuters.SortedCoords(EdgePermuters._EdgePermuter):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L917-L933) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L926-L942) returns a sorted representation. useful for checking consistency @@ -12617,7 +12614,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgePermuters.RandomCoords(EdgePermuters._EdgePermuter):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L935-L942) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L944-L951) Permutes each edge randomly. @@ -12694,7 +12691,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgePermuters.BothCoords(EdgePermuters._EdgePermuter):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L944-L953) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L953-L962) Includes both possible permutations of every edge in the output. Since input ConnectionList has only 1 instance of each edge, a call to @@ -12774,17 +12771,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeSubsets(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L956-L1014) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L965-L1023) -Namespace for `EdgeSubset` subclass hierarchy used by -`AdjListTokenizer`. +Namespace for `_EdgeSubset` subclass hierarchy used by +`_AdjListTokenizer`. - `key = 'edge_subset'` ### `class EdgeSubsets.AllLatticeEdges(EdgeSubsets._EdgeSubset):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L983-L991) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L992-L1000) All 2n\*\*2-2n edges of the lattice are tokenized. If a wall exists on that edge, the edge is tokenized in the same manner, using @@ -12863,7 +12860,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class EdgeSubsets.ConnectionEdges(EdgeSubsets._EdgeSubset):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L993-L1014) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1002-L1023) Only edges which contain a connection are tokenized. Alternatively, only edges which contain a wall are tokenized. @@ -12949,21 +12946,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class AdjListTokenizers(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1017-L1255) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1026-L1266) -ABC for namespaces - -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_AdjListTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'adj_list_tokenizer'` ### `class AdjListTokenizers.AdjListCoord(AdjListTokenizers._AdjListTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1197-L1223) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1208-L1234) Represents an edge group as tokens for the leading coord followed by coord tokens for the other group members. @@ -13059,7 +13052,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class AdjListTokenizers.AdjListCardinal(AdjListTokenizers._AdjListTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1225-L1255) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1236-L1266) Represents an edge group as coord tokens for the leading coord and cardinal tokens relative to the leading coord for the other group @@ -13161,21 +13154,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class TargetTokenizers(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1258-L1307) - -ABC for namespaces - -### Properties +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1269-L1320) -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_TargetTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'target_tokenizer'` ### `class TargetTokenizers.Unlabeled(TargetTokenizers._TargetTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1278-L1307) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1291-L1320) Targets are simply listed as coord tokens. - `post`: Whether all coords include an integral following delimiter token @@ -13203,7 +13192,7 @@ include an integral following delimiter token ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1286-L1303) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1299-L1316) Returns tokens representing the target. @@ -13214,7 +13203,7 @@ Returns tokens representing the target. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1305-L1307) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1318-L1320) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -13322,21 +13311,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1310-L1401) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1323-L1416) -ABC for namespaces - -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepSize` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'step_size'` ### `class StepSizes.Singles(StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1339-L1348) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1354-L1363) Every coord in `maze.solution` is represented. Legacy tokenizers all use this behavior. @@ -13416,7 +13401,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes.Straightaways(StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1350-L1368) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1365-L1383) Only coords where the path turns are represented in the path. I.e., the path is represented as a sequence of straightaways, specified by the @@ -13438,7 +13423,7 @@ coords at the turns. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1351-L1368) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1366-L1383) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -13550,7 +13535,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes.Forks(StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1370-L1380) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1385-L1395) Only coords at forks, where the path has \>=2 options for the next step are included. Excludes the option of backtracking. The starting and @@ -13631,7 +13616,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepSizes.ForksAndStraightaways(StepSizes._StepSize):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1382-L1401) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1397-L1416) Includes the union of the coords included by `Forks` and `Straightaways`. See documentation for those classes for details. @@ -13652,7 +13637,7 @@ Includes the union of the coords included by `Forks` and ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1383-L1401) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1398-L1416) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -13764,14 +13749,10 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1404-L1522) - -ABC for namespaces - -### Properties +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1419-L1539) -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_StepTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'step_tokenizers'` @@ -13780,7 +13761,7 @@ ABC for namespaces ### `class StepTokenizers.Coord(StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1440-L1453) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1457-L1470) A direct tokenization of the end position coord represents the step. @@ -13806,7 +13787,7 @@ A direct tokenization of the end position coord represents the step. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1446-L1453) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1463-L1470) Tokenizes a single step in the solution. @@ -13880,7 +13861,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers.Cardinal(StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1455-L1467) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1472-L1484) A step is tokenized with a cardinal direction token. It is the direction of the step from the starting position along the solution. @@ -13907,7 +13888,7 @@ of the step from the starting position along the solution. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1462-L1467) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1479-L1484) Tokenizes a single step in the solution. @@ -13981,7 +13962,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers.Relative(StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1469-L1495) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1486-L1512) Tokenizes a solution step using relative first-person directions (right, left, forward, etc.). To simplify the indeterminacy, at the start of a @@ -14011,7 +13992,7 @@ starting position. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1476-L1495) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1493-L1512) Tokenizes a single step in the solution. @@ -14085,7 +14066,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class StepTokenizers.Distance(StepTokenizers._StepTokenizer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1497-L1510) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1514-L1527) A count of the number of individual steps from the starting point to the end point. Contains no information about directionality, only the @@ -14115,7 +14096,7 @@ constraint is enforced in `_PathTokenizer.is_valid`. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1506-L1510) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1523-L1527) Tokenizes a single step in the solution. @@ -14189,21 +14170,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class PathTokenizers(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1525-L1645) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1542-L1664) -ABC for namespaces - -### Properties - -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PathTokenizer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'path_tokenizer'` ### `class PathTokenizers.StepSequence(PathTokenizers._PathTokenizer, abc.ABC):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1543-L1645) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1562-L1664) Any `PathTokenizer` where the tokenization may be assembled from token subsequences, each of which represents a step along the path. Allows for @@ -14255,7 +14232,7 @@ pattern. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1569-L1581) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1588-L1600) Returns tokens representing the solution path. @@ -14266,7 +14243,7 @@ Returns tokens representing the solution path. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1634-L1645) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1653-L1664) Returns if `self` contains data members capable of producing an overall valid `MazeTokenizerModular`. Some `_TokenizerElement` instances may be @@ -14374,21 +14351,17 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class PromptSequencers(__TokenizerElementNamespace):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1648-L1879) - -ABC for namespaces - -### Properties +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1667-L1900) -- key: The binding used in `MazeTokenizerModular` for instances of the - classes contained within that `__TokenizerElementNamespace`. +Namespace for `_PromptSequencer` subclass hierarchy used by +`MazeTokenizerModular`. - `key = 'prompt_sequencer'` ### `class PromptSequencers.AOTP(PromptSequencers._PromptSequencer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1801-L1843) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1822-L1864) Sequences a prompt as \[adjacency list, origin, target, path\]. @@ -14486,7 +14459,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class PromptSequencers.AOP(PromptSequencers._PromptSequencer):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1845-L1879) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1866-L1900) Sequences a prompt as \[adjacency list, origin, path\]. Still includes “” and “” tokens, but no representation of the @@ -14580,7 +14553,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ### `class MazeTokenizerModular(muutils.json_serialize.serializable_dataclass.SerializableDataclass):` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1882-L2174) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1903-L2195) Tokenizer for mazes @@ -14617,7 +14590,7 @@ Tokenizer for mazes ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1904-L1908) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1925-L1929) ### `def hash_b64` @@ -14626,14 +14599,14 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1914-L1924) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1935-L1945) filename-safe base64 encoding of the hash - `tokenizer_elements: list[maze_dataset.tokenization.maze_tokenizer._TokenizerElement]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1928-L1930) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1949-L1951) ### `def tokenizer_element_tree` @@ -14642,7 +14615,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1932-L1947) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1953-L1968) Returns a string representation of the tree of tokenizer elements contained in `self`. @@ -14655,7 +14628,7 @@ contained in `self`. - `tokenizer_element_tree_concrete` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1949-L1954) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1970-L1975) Property wrapper for `tokenizer_element_tree` so that it can be used in `properties_to_serialize`. @@ -14667,14 +14640,14 @@ Property wrapper for `tokenizer_element_tree` so that it can be used in ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1956-L1960) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1977-L1981) Nested dictionary of the internal `TokenizerElement`s. - `name: str` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1962-L1965) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1983-L1986) Serializes MazeTokenizer into a key for encoding in zanj @@ -14685,7 +14658,7 @@ Serializes MazeTokenizer into a key for encoding in zanj ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1967-L1974) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1988-L1995) Single-level dictionary of the internal `TokenizerElement`s. @@ -14699,7 +14672,7 @@ Single-level dictionary of the internal `TokenizerElement`s. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L1993-L2009) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2014-L2030) Returns True if the `MazeTokenizerModular` instance contains ALL of the items specified in `elements`. @@ -14722,7 +14695,7 @@ currently supported. To do such a query, assemble multiple calls to ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2011-L2016) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2032-L2037) Returns `True` if `self` is a valid tokenizer. Evaluates the validity of all of `self.tokenizer_elements` according to each one’s method. @@ -14734,7 +14707,7 @@ all of `self.tokenizer_elements` according to each one’s method. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2018-L2025) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2039-L2046) Returns if `self` has identical stringification behavior as any legacy `MazeTokenizer`. @@ -14746,13 +14719,13 @@ Returns if `self` has identical stringification behavior as any legacy ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2027-L2054) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2048-L2075) Returns if the tokenizer is returned by -`all_tokenizers._get_all_tokenizers`, the set of tested and reliable +`all_tokenizers.get_all_tokenizers`, the set of tested and reliable tokenizers. -Since evaluating `all_tokenizers._get_all_tokenizers` is expensive, +Since evaluating `all_tokenizers.get_all_tokenizers` is expensive, instead checks for membership of `self`’s hash in `get_all_tokenizer_hashes()`. @@ -14766,7 +14739,7 @@ not tested. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2056-L2057) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2077-L2078) ### `def is_UT` @@ -14775,7 +14748,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2059-L2060) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2080-L2081) ### `def from_legacy` @@ -14787,7 +14760,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2065-L2080) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2086-L2101) Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent `MazeTokenizerModular` instance. @@ -14802,7 +14775,7 @@ Maps a legacy `MazeTokenizer` or `TokenizationMode` to its equivalent ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2084-L2094) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2105-L2115) Infers most `MazeTokenizerModular` parameters from a full sequence of tokens. @@ -14810,33 +14783,33 @@ tokens. - `token_arr: list[str] | None` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2096-L2099) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2117-L2120) map from index to token - `tokenizer_map: dict[str, int]` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2101-L2104) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2122-L2125) map from token to index - `vocab_size: int` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2106-L2109) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2127-L2130) Number of tokens in the static vocab - `n_tokens: int` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2111-L2115) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2132-L2136) - `padding_token_index: int` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2117-L2119) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2138-L2140) ### `def to_tokens` @@ -14845,7 +14818,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2124-L2129) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2145-L2150) Converts maze into a list of tokens. @@ -14859,7 +14832,7 @@ Converts maze into a list of tokens. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2131-L2136) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2152-L2157) ### `def strings_to_coords` @@ -14871,7 +14844,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2138-L2147) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2159-L2168) ### `def encode` @@ -14880,7 +14853,7 @@ GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_data ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2149-L2160) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2170-L2181) encode a string or list of strings into a list of tokens @@ -14891,7 +14864,7 @@ encode a string or list of strings into a list of tokens ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2162-L2174) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2183-L2195) decode a list of tokens into a string or list of strings @@ -14947,7 +14920,7 @@ validate the types of all the fields on a `SerializableDataclass`. calls ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2183-L2207) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2204-L2228) set path to tokenizer hashes, and reload the hashes if needed @@ -14965,7 +14938,7 @@ However, this might not always work, so we provide a way to change this. ``` [View Source on -GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2225-L2236) +GitHub](https://github.com/understanding-search/maze-dataset/blob/main/maze_dataset/tokenization/maze_tokenizer.py#L2246-L2257) docs for [`maze-dataset`](https://github.com/understanding-search/maze-dataset) diff --git a/docs/coverage/coverage.svg b/docs/coverage/coverage.svg index f5af1db..ffd257b 100644 --- a/docs/coverage/coverage.svg +++ b/docs/coverage/coverage.svg @@ -15,7 +15,7 @@ coverage coverage - 72% - 72% + 71% + 71% diff --git a/docs/coverage/coverage.txt b/docs/coverage/coverage.txt index efd317a..9727222 100644 --- a/docs/coverage/coverage.txt +++ b/docs/coverage/coverage.txt @@ -1,7 +1,7 @@ Name Stmts Miss Cover Missing -------------------------------------------------------------------------------------------------- maze_dataset\__init__.py 6 6 0% 5-30 -maze_dataset\constants.py 77 64 17% 3-64, 68, 72-76, 82-86, 93-99, 102, 105, 108, 111, 115-206 +maze_dataset\constants.py 82 69 16% 3-70, 74, 78-82, 88-92, 99-105, 108, 111, 114, 117, 121-222 maze_dataset\dataset\__init__.py 3 3 0% 3-9 maze_dataset\dataset\collected_dataset.py 85 56 34% 8-31, 41-46, 49-61, 64, 71-74, 89-90, 93-94, 97-98, 105, 108, 121-122, 131-141, 151-152, 162-186, 193 maze_dataset\dataset\configs.py 21 1 95% 45 @@ -12,7 +12,7 @@ maze_dataset\generation\__init__.py 2 maze_dataset\generation\default_generators.py 1 0 100% maze_dataset\generation\generators.py 129 29 78% 5-21, 35, 51-55, 96-100, 201-202, 223-224, 306-307, 348-349, 390-400 maze_dataset\maze\__init__.py 2 2 0% 3-14 -maze_dataset\maze\lattice_maze.py 477 156 67% 1-49, 59, 63, 71-143, 147-150, 157-158, 162-165, 170, 177-196, 211, 233, 256, 326-332, 344, 361, 368, 418, 482, 487-488, 509, 528-549, 566, 579, 594-596, 606-607, 618-619, 705-706, 721, 726, 731-736, 762, 768, 818-819, 836-837, 866-867, 876-877, 882, 986, 998, 1021-1022, 1036-1044, 1055, 1062-1066, 1073-1080, 1087-1095, 1109-1115, 1133, 1160, 1163, 1170-1187, 1196-1197, 1214, 1239, 1250, 1263, 1296-1351 +maze_dataset\maze\lattice_maze.py 479 157 67% 1-49, 59, 63, 71-143, 147-150, 157-158, 162-165, 170, 177-196, 211, 233, 256, 326-332, 344, 361, 368, 422, 479, 489, 494-495, 516, 535-556, 573, 586, 601-603, 613-614, 625-626, 712-713, 728, 733, 738-743, 769, 775, 825-826, 843-844, 873-874, 883-884, 889, 993, 1005, 1028-1029, 1043-1051, 1062, 1069-1073, 1080-1087, 1094-1102, 1116-1122, 1140, 1167, 1170, 1177-1194, 1203-1204, 1221, 1246, 1257, 1270, 1303-1358 maze_dataset\plotting\__init__.py 4 0 100% maze_dataset\plotting\plot_dataset.py 29 25 14% 17-51, 55-60 maze_dataset\plotting\plot_maze.py 211 32 85% 45, 86, 96, 102, 106, 158, 162-166, 270, 300-305, 335, 348-363, 372, 379, 480-481, 489-490, 496-498, 546 @@ -22,7 +22,7 @@ maze_dataset\testing_utils.py 21 maze_dataset\token_utils.py 178 56 69% 3-34, 71, 77, 80, 90-100, 110, 120, 125, 161-167, 193-203, 209, 218, 228, 233, 240, 253, 281, 287, 309, 315, 324, 344, 349-353, 355-359, 365-368, 376-380, 385, 441 maze_dataset\tokenization\__init__.py 2 0 100% maze_dataset\tokenization\all_tokenizers.py 57 57 0% 25-181 -maze_dataset\tokenization\maze_tokenizer.py 716 159 78% 120-123, 215, 238, 267, 304, 308-310, 346, 362, 364-365, 377-378, 382, 391-406, 415-422, 487, 512, 520, 590-595, 608, 635, 642, 673, 710-719, 733, 737, 793, 803, 815, 862, 870-880, 894, 915, 971, 981, 1061, 1065, 1084, 1106-1110, 1170-1173, 1272, 1276, 1321, 1326, 1361-1368, 1392, 1415, 1432, 1537, 1541, 1673, 1703, 1795, 1867, 1905, 1912, 1917-1924, 1940, 1954, 1960, 1971, 1983, 1991, 2008, 2016, 2035-2054, 2071, 2092, 2099, 2104, 2109, 2113, 2119, 2152-2157, 2167-2174, 2194-2207, 2213-2217, 2227-2236 +maze_dataset\tokenization\maze_tokenizer.py 716 159 78% 124-127, 219, 242, 271, 308, 312-314, 350, 366, 368-369, 381-382, 386, 395-410, 419-426, 494, 519, 527, 597-602, 615, 642, 649, 680, 717-726, 742, 746, 802, 812, 824, 871, 879-889, 903, 924, 980, 990, 1072, 1076, 1095, 1117-1121, 1181-1184, 1285, 1289, 1336, 1341, 1376-1383, 1407, 1432, 1449, 1556, 1560, 1694, 1724, 1816, 1888, 1926, 1933, 1938-1945, 1961, 1975, 1981, 1992, 2004, 2012, 2029, 2037, 2056-2075, 2092, 2113, 2120, 2125, 2130, 2134, 2140, 2173-2178, 2188-2195, 2215-2228, 2234-2238, 2248-2257 maze_dataset\tokenization\save_hashes.py 31 31 0% 24-109 maze_dataset\utils.py 89 35 61% 3-18, 58, 95, 109-114, 124, 170, 182-232, 251, 273-279, 295-300, 303-307, 393-397 tests\unit\maze_dataset\dataset\test_collected_dataset.py 45 0 100% @@ -46,4 +46,4 @@ tests\unit\maze_dataset\tokenization\test_token_utils.py 174 tests\unit\maze_dataset\tokenization\test_tokenizer.py 252 30 88% 255-256, 456-459, 468-480, 518-519, 609-627, 671-672, 694-700, 718 tests\unit\maze_dataset\tokenization\test_vocab.py 21 0 100% -------------------------------------------------------------------------------------------------- -TOTAL 3943 1120 72% +TOTAL 3950 1126 71% diff --git a/docs/coverage/html/class_index.html b/docs/coverage/html/class_index.html index 9572eaf..57c6939 100644 --- a/docs/coverage/html/class_index.html +++ b/docs/coverage/html/class_index.html @@ -11,7 +11,7 @@

    Coverage report: - 72% + 71%

    @@ -81,16 +81,16 @@

    0% - maze_dataset\constants.py - SpecialTokensError + maze_dataset\constants.py + SpecialTokensError 0 0 0 100% - maze_dataset\constants.py - _SPECIAL_TOKENS_BASE + maze_dataset\constants.py + _SPECIAL_TOKENS_BASE 20 7 0 @@ -99,10 +99,10 @@

    maze_dataset\constants.py (no class) - 57 - 57 + 62 + 62 0 - 0% + 0% maze_dataset\dataset\__init__.py @@ -315,22 +315,22 @@

    maze_dataset\maze\lattice_maze.py LatticeMaze - 284 - 28 + 286 + 29 0 - 90% + 90% - maze_dataset\maze\lattice_maze.py - TargetedLatticeMaze + maze_dataset\maze\lattice_maze.py + TargetedLatticeMaze 15 6 0 60% - maze_dataset\maze\lattice_maze.py - SolvedMaze + maze_dataset\maze\lattice_maze.py + SolvedMaze 35 5 0 @@ -481,384 +481,384 @@

    100% - maze_dataset\tokenization\maze_tokenizer.py - MazeTokenizer + maze_dataset\tokenization\maze_tokenizer.py + MazeTokenizer 79 27 0 66% - maze_dataset\tokenization\maze_tokenizer.py - _TokenizerElement + maze_dataset\tokenization\maze_tokenizer.py + _TokenizerElement 30 9 0 70% - maze_dataset\tokenization\maze_tokenizer.py - __TokenizerElementNamespace + maze_dataset\tokenization\maze_tokenizer.py + __TokenizerElementNamespace 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - CoordTokenizers + maze_dataset\tokenization\maze_tokenizer.py + CoordTokenizers 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - CoordTokenizers._CoordTokenizer + maze_dataset\tokenization\maze_tokenizer.py + CoordTokenizers._CoordTokenizer 3 2 0 33% - maze_dataset\tokenization\maze_tokenizer.py - CoordTokenizers.UT + maze_dataset\tokenization\maze_tokenizer.py + CoordTokenizers.UT 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - CoordTokenizers.CTT + maze_dataset\tokenization\maze_tokenizer.py + CoordTokenizers.CTT 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeGroupings + maze_dataset\tokenization\maze_tokenizer.py + EdgeGroupings 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeGroupings._GroupingTokenParams + maze_dataset\tokenization\maze_tokenizer.py + EdgeGroupings._GroupingTokenParams 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeGroupings._EdgeGrouping + maze_dataset\tokenization\maze_tokenizer.py + EdgeGroupings._EdgeGrouping 4 3 0 25% - maze_dataset\tokenization\maze_tokenizer.py - EdgeGroupings.Ungrouped + maze_dataset\tokenization\maze_tokenizer.py + EdgeGroupings.Ungrouped 2 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeGroupings.ByLeadingCoord + maze_dataset\tokenization\maze_tokenizer.py + EdgeGroupings.ByLeadingCoord 7 7 0 0% - maze_dataset\tokenization\maze_tokenizer.py - EdgePermuters + maze_dataset\tokenization\maze_tokenizer.py + EdgePermuters 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgePermuters._EdgePermuter + maze_dataset\tokenization\maze_tokenizer.py + EdgePermuters._EdgePermuter 3 2 0 33% - maze_dataset\tokenization\maze_tokenizer.py - EdgePermuters.SortedCoords + maze_dataset\tokenization\maze_tokenizer.py + EdgePermuters.SortedCoords 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgePermuters.RandomCoords + maze_dataset\tokenization\maze_tokenizer.py + EdgePermuters.RandomCoords 2 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgePermuters.BothCoords + maze_dataset\tokenization\maze_tokenizer.py + EdgePermuters.BothCoords 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeSubsets + maze_dataset\tokenization\maze_tokenizer.py + EdgeSubsets 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeSubsets._EdgeSubset + maze_dataset\tokenization\maze_tokenizer.py + EdgeSubsets._EdgeSubset 3 2 0 33% - maze_dataset\tokenization\maze_tokenizer.py - EdgeSubsets.AllLatticeEdges + maze_dataset\tokenization\maze_tokenizer.py + EdgeSubsets.AllLatticeEdges 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - EdgeSubsets.ConnectionEdges + maze_dataset\tokenization\maze_tokenizer.py + EdgeSubsets.ConnectionEdges 6 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - AdjListTokenizers + maze_dataset\tokenization\maze_tokenizer.py + AdjListTokenizers 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - AdjListTokenizers._AdjListTokenizer + maze_dataset\tokenization\maze_tokenizer.py + AdjListTokenizers._AdjListTokenizer 26 9 0 65% - maze_dataset\tokenization\maze_tokenizer.py - AdjListTokenizers.AdjListCoord + maze_dataset\tokenization\maze_tokenizer.py + AdjListTokenizers.AdjListCoord 2 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - AdjListTokenizers.AdjListCardinal + maze_dataset\tokenization\maze_tokenizer.py + AdjListTokenizers.AdjListCardinal 2 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - TargetTokenizers + maze_dataset\tokenization\maze_tokenizer.py + TargetTokenizers 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - TargetTokenizers._TargetTokenizer + maze_dataset\tokenization\maze_tokenizer.py + TargetTokenizers._TargetTokenizer 2 2 0 0% - maze_dataset\tokenization\maze_tokenizer.py - TargetTokenizers.Unlabeled + maze_dataset\tokenization\maze_tokenizer.py + TargetTokenizers.Unlabeled 2 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepSizes + maze_dataset\tokenization\maze_tokenizer.py + StepSizes 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepSizes._StepSize + maze_dataset\tokenization\maze_tokenizer.py + StepSizes._StepSize 5 2 0 60% - maze_dataset\tokenization\maze_tokenizer.py - StepSizes.Singles + maze_dataset\tokenization\maze_tokenizer.py + StepSizes.Singles 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepSizes.Straightaways + maze_dataset\tokenization\maze_tokenizer.py + StepSizes.Straightaways 8 8 0 0% - maze_dataset\tokenization\maze_tokenizer.py - StepSizes.Forks + maze_dataset\tokenization\maze_tokenizer.py + StepSizes.Forks 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepSizes.ForksAndStraightaways + maze_dataset\tokenization\maze_tokenizer.py + StepSizes.ForksAndStraightaways 1 1 0 0% - maze_dataset\tokenization\maze_tokenizer.py - StepTokenizers + maze_dataset\tokenization\maze_tokenizer.py + StepTokenizers 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepTokenizers._StepTokenizer + maze_dataset\tokenization\maze_tokenizer.py + StepTokenizers._StepTokenizer 3 2 0 33% - maze_dataset\tokenization\maze_tokenizer.py - StepTokenizers.Coord + maze_dataset\tokenization\maze_tokenizer.py + StepTokenizers.Coord 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepTokenizers.Cardinal + maze_dataset\tokenization\maze_tokenizer.py + StepTokenizers.Cardinal 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepTokenizers.Relative + maze_dataset\tokenization\maze_tokenizer.py + StepTokenizers.Relative 5 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - StepTokenizers.Distance + maze_dataset\tokenization\maze_tokenizer.py + StepTokenizers.Distance 2 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - PathTokenizers + maze_dataset\tokenization\maze_tokenizer.py + PathTokenizers 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - PathTokenizers._PathTokenizer + maze_dataset\tokenization\maze_tokenizer.py + PathTokenizers._PathTokenizer 2 2 0 0% - maze_dataset\tokenization\maze_tokenizer.py - PathTokenizers.StepSequence + maze_dataset\tokenization\maze_tokenizer.py + PathTokenizers.StepSequence 18 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - PromptSequencers + maze_dataset\tokenization\maze_tokenizer.py + PromptSequencers 0 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - PromptSequencers._PromptSequencer + maze_dataset\tokenization\maze_tokenizer.py + PromptSequencers._PromptSequencer 15 3 0 80% - maze_dataset\tokenization\maze_tokenizer.py - PromptSequencers.AOTP + maze_dataset\tokenization\maze_tokenizer.py + PromptSequencers.AOTP 1 0 0 100% - maze_dataset\tokenization\maze_tokenizer.py - PromptSequencers.AOP + maze_dataset\tokenization\maze_tokenizer.py + PromptSequencers.AOP 1 1 0 0% - maze_dataset\tokenization\maze_tokenizer.py - MazeTokenizerModular + maze_dataset\tokenization\maze_tokenizer.py + MazeTokenizerModular 61 44 0 @@ -1093,10 +1093,10 @@

    Total   - 3943 - 1120 + 3950 + 1126 0 - 72% + 71% @@ -1108,7 +1108,7 @@

    coverage.py v7.6.1, - created at 2024-08-29 17:43 -0600 + created at 2024-09-10 12:31 -0600